logo
bars

ALTCHA
और CapMonster Cloud

कैप्चा हल करना, वेबसाइट पर इंस्टॉल करना और परीक्षण।
क्या आपको ऐसी साइट मिली है जिस पर पहले से कैप्चा या सुरक्षा परत है, लेकिन सोर्स कोड तक पहुँच नहीं है? तब स्वाभाविक रूप से प्रश्न उठते हैं: कौन सा समाधान लगा है, क्या वह सही तरह से कॉन्फ़िगर हुआ है और इसे कैसे परखा जाए?

इस लेख में हमने आपकी सभी महत्वपूर्ण शंकाओं के जवाब देने की कोशिश की है। किसी भी समस्या को हल करना शुरू करने का पहला कदम यह तय करना है कि कौन-सा सुरक्षा सिस्टम उपयोग में है। इसके लिए आप लोकप्रिय कैप्चा और एंटी-बॉट सुरक्षा सिस्टमों की सूची देख सकते हैं, जहाँ ऐसे दृश्य उदाहरण और मुख्य संकेत दिए गए हैं जो यह जल्दी समझने में मदद करते हैं कि आप किस समाधान के साथ काम कर रहे हैं।

यदि आपको पता चलता है कि आपकी साइट पर ALTCHA उपयोग हो रहा है, तो अगला कदम इसके गुणों और काम करने के तरीके को और विस्तार से समझना है। इसी लेख में आप ALTCHA सिस्टम को जोड़ने (इंटीग्रेट करने) की निर्देशिका भी देख सकते हैं, ताकि आप पूरी तरह समझ सकें कि यह आपकी साइट पर कैसे काम करता है। इससे आप न केवल मौजूदा सुरक्षा को बेहतर ढंग से समझ पाएँगे, बल्कि उसकी सपोर्ट और रखरखाव की सही योजना भी बना सकेंगे।

ALTCHA क्या है
ALTCHA क्या है
ALTCHA (Alternative CAPTCHA) एक प्रणाली है जो वेबसाइट को बॉट और स्पैम से बचाती है। यह वास्तविक उपयोगकर्ताओं और स्वचालित प्रोग्रामों को अलग करने में मदद करता है ताकि साइट सुरक्षित और स्थिर रूप से चल सके। ALTCHA पारंपरिक CAPTCHA का आधुनिक विकल्प है: यह हल्का क्रिप्टोग्राफिक चैलेंज (proof-of-work) का उपयोग करता है और कुकीज़ नहीं इकट्ठा करता और न ही उपयोगकर्ताओं को ट्रैक करता है।
Background
ALTCHA के उदाहरण
Proof-of-Work (PoW)
Proof-of-Work (PoW)
सिस्टम डिफ़ॉल्ट रूप से Proof-of-Work (PoW) सत्यापन विधि का उपयोग करता है, जो दृश्य पहेलियों और बाधक जांचों को समाप्त करता है। यह दृष्टिकोण सुरक्षा को उपयोगकर्ता की सुविधा के साथ जोड़ता है, जिससे अधिकांश आगंतुकों के लिए उपयुक्त एक गैर-आक्रामक कैप्चा समाधान मिलता है।
Code Captcha
Code Captcha
सुरक्षा को टेक्स्ट कैप्चा तक बढ़ाया जा सकता है।
Invisible Captcha
Invisible Captcha
सत्यापन बिना किसी दृश्य विजेट के होता है और उपयोगकर्ता से कोई क्रिया नहीं चाहिए।

CapMonster Cloud के माध्यम से ALTCHA कैसे हल करें

ALTCHA वाले फॉर्म का परीक्षण करते समय अक्सर यह जाँचना पड़ता है कि कैप्चा सही ढंग से काम कर रही है और सही तरह से जोड़ी गई है।

आप अपने साइट पर लगी कैप्चा को मैन्युअली जाँच सकते हैं।

  • फॉर्म वाला पेज खोलें और देखें कि कैप्चा दिखाई दे रही है या नहीं।
  • बिना कैप्चा हल किए फॉर्म भेजने की कोशिश करें — सर्वर को त्रुटि लौटानी चाहिए।
  • सफल समाधान के बाद फॉर्म बिना समस्या के भेजा जाना चाहिए।

स्वचालित समाधान के लिए आप CapMonster Cloud जैसे टूल का उपयोग कर सकते हैं, जो कैप्चा के पैरामीटर स्वीकार करता है, उन्हें अपने सर्वर पर प्रोसेस करता है और तैयार टोकन लौटाता है। इस टोकन को फॉर्म में डालें और बिना उपयोगकर्ता हस्तक्षेप के जाँच पार करें।

API के माध्यम से CapMonster Cloud के साथ काम करने के सामान्य चरण:

टास्क तैयार करनाटास्क तैयार करना
arrow
API अनुरोध भेजनाAPI अनुरोध भेजना
arrow
परिणाम प्राप्त करनापरिणाम प्राप्त करना
arrow
टोकन को पेज पर रखनाटोकन को पेज पर रखना
arrow
समाधान, टोकन सम्मिलन और फॉर्म सबमिशन
आपकी वेबपेज पर कैप्चा हल करने के पूर्ण चक्र के लिए Node.js उदाहरण। संभावित दृष्टिकोण: HTML और कैप्चा पैरामीटर प्राप्त करने के लिए HTTP अनुरोधों का उपयोग करें, उत्तर भेजें और परिणाम संसाधित करें; या ऑटोमेशन टूल्स (जैसे Playwright) का उपयोग करें — पेज खोलें, कैप्चा का इंतजार करें, पैरामीटर भेजें (परीक्षण के लिए सही या गलत डेटा भेज सकते हैं), CapMonster Cloud क्लाइंट के माध्यम से परिणाम प्राप्त करें, टोकन फॉर्म में डालें और परिणाम देखें।
// npm install playwright
// npx playwright install chromium

const { chromium } = require("playwright");

const API_KEY = "YOUR_API_KEY";
const ALTCHA_PAGE = "https://example.com"; // आपकी साइट ALTCHA के साथ

(async () => {
  const browser = await chromium.launch({ headless: false, devtools: true });
  const context = await browser.newContext();
  const page = await context.newPage();

  // Altcha एंडपॉइंट से सभी प्रतिक्रियाएँ पकड़ना
  let challengeResp = null;
  page.on("response", async (response) => {
    try {
      const url = response.url();
      if (url.startsWith("https://captcha.example.com/altcha")) { // Altcha एंडपॉइंट
        challengeResp = await response.json();
        console.log("Captured Altcha response:", challengeResp);
      }
    } catch (err) {
      console.warn("Error parsing Altcha response:", err);
    }
  });

  await page.goto(ALTCHA_PAGE, { waitUntil: "networkidle" });

  // यदि विजेट है तो क्लिक करें
  const widgetHandle = await page.$("altcha-widget");
  if (widgetHandle) {
    try {
      await widgetHandle.click();
    } catch {}
  }

  // चैलेंज के प्रकट होने की प्रतीक्षा करें
  const start = Date.now();
  while (!challengeResp && Date.now() - start < 60000) { // टाइमआउट बढ़ाया गया
    await new Promise((r) => setTimeout(r, 300));
  }

  if (!challengeResp) {
    console.error("Failed to capture Altcha challenge.");
    await browser.close();
    return;
  }

  const { challenge, salt, signature, maxnumbers } = challengeResp;

  // CapMonster Cloud पर कार्य बना रहे हैं
  const createTaskBody = {
    clientKey: API_KEY,
    task: {
      type: "CustomTask",
      class: "altcha",
      websiteURL: ALTCHA_PAGE,
      websiteKey: "",
      userAgent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36",
      metadata: {
        challenge,
        iterations: maxnumbers || 100000,
        salt,
        signature,
      },
    },
  };

  const taskResp = await fetch("https://api.capmonster.cloud/createTask", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(createTaskBody),
  }).then((r) => r.json());

  console.log("CreateTask response:", taskResp);
  if (!taskResp?.taskId) {
    console.error("CreateTask failed:", taskResp);
    await browser.close();
    return;
  }

  const taskId = taskResp.taskId;

  // समाधान प्राप्त करना
  let fullSolution = null;
  const pollStart = Date.now();
  while (Date.now() - pollStart < 120000) {
    const res = await fetch("https://api.capmonster.cloud/getTaskResult", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ clientKey: API_KEY, taskId }),
    }).then((r) => r.json());

    if (res.status === "ready") {
      fullSolution = res.solution;
      console.log("Solution:", fullSolution);
      break;
    }
    await new Promise((r) => setTimeout(r, 3000));
  }

  if (!fullSolution) {
    console.error("No solution received in time.");
    await browser.close();
    return;
  }

  const token = fullSolution?.data?.token || fullSolution?.token || fullSolution?.data;

  if (!token) {
    console.error("Token not found in solution:", fullSolution);
    await browser.close();
    return;
  }

  //टोकन डालना
  await page.evaluate((t) => {
    let input = document.querySelector("#captchaParaValidar");
    if (!input) {
      input = document.createElement("input");
      input.type = "hidden";
      input.id = "captchaParaValidar";
      input.name = "captchaParaValidar";
      (document.querySelector("form") || document.body).appendChild(input);
    }
    input.value = t;

    let alt = document.querySelector('input[name="altcha"]');
    if (!alt) {
      alt = document.createElement("input");
      alt.type = "hidden";
      alt.name = "altcha";
      (document.querySelector("form") || document.body).appendChild(alt);
    }
    alt.value = t;

    const widget = document.querySelector("altcha-widget");
    if (widget) {
      widget.setAttribute("data-state", "verified");
      const checkbox = widget.querySelector("input[type='checkbox']");
      if (checkbox) {
        checkbox.checked = true;
        checkbox.dispatchEvent(new Event("change", { bubbles: true }));
      }
      const label = widget.querySelector(".altcha-label");
      if (label) label.textContent = "Verified";
    }
  }, token);

  console.log("Token injected:", token);
})();
ALTCHA को अपनी वेबसाइट से कैसे जोड़ें
अपनी साइट पर कैप्चा कैसे काम करता है, उसकी जांच की लॉजिक को समझने, इसे फिर से जोड़ने या कॉन्फ़िगर करने के लिए, इस अनुभाग को पढ़ने की सिफ़ारिश की जाती है। इसमें सुरक्षा इंटीग्रेशन की प्रक्रिया का वर्णन है — जो आपको सभी विवरणों को जल्दी समझने में मदद करेगा।

1. विजेट इंस्टॉल करना

विकल्प 1 — CDN के माध्यम से (सबसे आसान)। इसे अपने HTML <head> में जोड़ें:

<script async defer src="https://cdn.jsdelivr.net/gh/altcha-org/altcha/dist/altcha.min.js" type="module"></script>

विकल्प 2 — npm के माध्यम से:

npm install altcha

अपने JS फ़ाइल में विजेट आयात करें:

import "altcha";

2. फॉर्म में विजेट जोड़ना।

जहाँ सुरक्षा आवश्यक हो वहां <altcha-widget> घटक डालें:


<form method="POST" action="/submit">
  <altcha-widget challengeurl="/altcha/challenge"></altcha-widget>
  <button type="submit">Send</button>
</form>

challengeurl — चैलेंज जारी करने के लिए आपका सर्वर endpoint।

यदि आप ALTCHA Sentinel (बॉट और स्पैम से सुरक्षा हेतु तैयार सर्वर-साइड सिस्टम) का उपयोग करते हैं, तो अपनी सर्वर URL की बजाय इसका URL इस्तेमाल करें:


<altcha-widget 
  challengeurl="https://sentinel.example.com/v1/challenge?apiKey=YOUR_API_KEY">
</altcha-widget>

3. सर्वर-साइड सत्यापन।

सत्यापन कैसे होता है:

  • 1) विजेट payload उत्पन्न करता है — Base64-encoded JSON, आमतौर पर फॉर्म फ़ील्ड altcha के रूप में भेजा जाता है।
  • 2) सर्वर पर आप payload को क्रिप्टोग्राफिक रूप से सत्यापित करते हैं (अतिरिक्त API अनुरोधों के बिना)।
  • 3) सफल सत्यापन के बाद फॉर्म को संसाधित किया जा सकता है।

ALTCHA Sentinel के माध्यम से सत्यापन:

लाइब्रेरी का उपयोग करते हुएलाइब्रेरी का उपयोग करते हुए
arrow

HTTP API Sentinel के माध्यम से (यदि लाइब्रेरी उपलब्ध नहीं है):HTTP API Sentinel के माध्यम से (यदि लाइब्रेरी उपलब्ध नहीं है):
arrow

4. Sentinel के बिना सत्यापन (स्वयं का सर्वर)

चैलेंज उत्पन्न करना:


import { createChallenge } from 'altcha-lib';

const hmacKey = '$ecret.key'; // आपकी HMAC Secret Key

const challenge = await createChallenge({ hmacKey });

// विजेट के लिए JSON में चैलेंज भेजें

फॉर्म सबमिशन पर payload सत्यापन:


import { verifySolution } from 'altcha-lib';

const hmacKey = '$ecret.key'; // आपकी HMAC Secret Key

const verified = await verifySolution(payload, hmacKey);

if (verified) {
  // सत्यापन सफल — फॉर्म डेटा प्रोसेस कर रहे हैं
}

इस मामले में, आप स्वयं /altcha/challenge endpoint बनाते हैं और सर्वर पर चैलेंज को सत्यापित करते हैं।

Background
संभावित त्रुटियाँ और डिबगिंग
Bug Icon
अमान्य challengeurl या API Key
विजेट लोड नहीं हो रहा है या सत्यापन के दौरान त्रुटि लौटाता है।
Bug Icon
समाधान टाइमआउट
सर्वर को payload जांचने का समय नहीं मिला। प्रतीक्षा समय बढ़ाएँ या सुनिश्चित करें कि सर्वर-साइड सत्यापन सही ढंग से काम कर रहा है।
Bug Icon
खाली payload
विजेट से सर्वर पर परिणाम भेजते समय त्रुटि।
Bug Icon
Verification failed
Payload समाप्त हो गया, पुन: उपयोग किया गया या छेड़ा गया। निदान के लिए लॉगिंग सक्षम करें और सर्वर या Sentinel से उत्तर में verified और verificationData फ़ील्ड की जाँच करें।
सुरक्षा की मजबूती की जाँच
इंटीग्रेशन के बाद सुनिश्चित करें कि सिस्टम वास्तव में साइट को स्वचालित कार्रवाइयों से बचा रहा है।
सुरक्षा और अनुकूलन के सुझाव
<b>गोपनीय कुंजी रखें</b> (Sentinel के लिए HMAC या API Key) केवल सर्वर पर — इन्हें फ्रंटेंड पर न भेजें।
<b>त्रुटियों</b> और सत्यापन घटनाओं (<b>verified: false</b> और <b>verificationData</b>) को लॉग करें ताकि असफल जांचों के कारण समझे जा सकें।
पारदर्शिता और उपयोगकर्ता विश्वास के लिए, <b>गोपनीयता नीति</b> और <b>ALTCHA उपयोग की शर्तों</b> के लिंक जोड़ें यदि आवश्यक हो।
निष्कर्ष

अगर आपके पास ऐसा साइट आया है, जिस पर पहले से ही कोई कैप्चा या अन्य सुरक्षा प्रणाली लगी हुई है और आपके पास कोड तक पहुंच नहीं है — तो घबराने की ज़रूरत नहीं है! यह पता लगाना काफ़ी आसान है कि वास्तव में कौन-सी तकनीक इस्तेमाल हो रही है। काम की सही जाँच के लिए आप अलग-थलग टेस्ट वातावरण में CapMonster Cloud पहचान सेवा का उपयोग कर सकते हैं, ताकि यह सुनिश्चित हो सके कि टोकन प्रोसेसिंग का मेकैनिज़्म और वेरिफिकेशन लॉजिक ठीक तरह से काम कर रहे हैं।

ALTCHA के मामले में सिस्टम की पहचान करना, उसके व्यवहार का विश्लेषण करना और यह सुनिश्चित करना ही काफ़ी है कि सुरक्षा सही तरीके से काम कर रही है। इस लेख में हमने दिखाया है कि ALTCHA को कैसे पहचाना जाए और इसे जोड़ने या दोबारा कॉन्फ़िगर करने की निर्देशिका कहाँ मिलेगी, ताकि आप आत्मविश्वास के साथ सुरक्षा को बनाए रख सकें और इसके काम को नियंत्रित कर सकें।

Conclusion
उपयोगी लिंक
DocIconALTCHA दस्तावेज़ीकरणDocIconALTCHA स्रोत कोडDocIconCapMonster Cloud दस्तावेज़ीकरण (ALTCHA के साथ काम करना)