इस लेख में हमने आपकी सभी महत्वपूर्ण शंकाओं के जवाब देने की कोशिश की है। किसी भी समस्या को हल करना शुरू करने का पहला कदम यह तय करना है कि कौन-सा सुरक्षा सिस्टम उपयोग में है। इसके लिए आप लोकप्रिय कैप्चा और एंटी-बॉट सुरक्षा सिस्टमों की सूची देख सकते हैं, जहाँ ऐसे दृश्य उदाहरण और मुख्य संकेत दिए गए हैं जो यह जल्दी समझने में मदद करते हैं कि आप किस समाधान के साथ काम कर रहे हैं।
यदि आपको पता चलता है कि आपकी साइट पर ALTCHA उपयोग हो रहा है, तो अगला कदम इसके गुणों और काम करने के तरीके को और विस्तार से समझना है। इसी लेख में आप ALTCHA सिस्टम को जोड़ने (इंटीग्रेट करने) की निर्देशिका भी देख सकते हैं, ताकि आप पूरी तरह समझ सकें कि यह आपकी साइट पर कैसे काम करता है। इससे आप न केवल मौजूदा सुरक्षा को बेहतर ढंग से समझ पाएँगे, बल्कि उसकी सपोर्ट और रखरखाव की सही योजना भी बना सकेंगे।
ALTCHA वाले फॉर्म का परीक्षण करते समय अक्सर यह जाँचना पड़ता है कि कैप्चा सही ढंग से काम कर रही है और सही तरह से जोड़ी गई है।
आप अपने साइट पर लगी कैप्चा को मैन्युअली जाँच सकते हैं।
स्वचालित समाधान के लिए आप CapMonster Cloud जैसे टूल का उपयोग कर सकते हैं, जो कैप्चा के पैरामीटर स्वीकार करता है, उन्हें अपने सर्वर पर प्रोसेस करता है और तैयार टोकन लौटाता है। इस टोकन को फॉर्म में डालें और बिना उपयोगकर्ता हस्तक्षेप के जाँच पार करें।
API के माध्यम से CapMonster Cloud के साथ काम करने के सामान्य चरण:
ALTCHA को हल करने के लिए अनुरोध में निम्नलिखित पैरामीटर शामिल होने चाहिए:
type - CustomTask
class - altcha
websiteURL - पेज का पता जहाँ कैप्चा हल किया जाता है
websiteKey - इस कार्य के लिए खाली स्ट्रिंग भेजना स्वीकार्य है।
challenge (metadata के भीतर) - वेबपेज से प्राप्त कार्य का अद्वितीय पहचानकर्ता।
iterations (metadata के भीतर) - कैलकुलेशन के लिए इटरेशन्स की संख्या या अधिकतम संख्या। महत्वपूर्ण: iterations पैरामीटर maxnumber के मान के अनुरूप है!
salt (metadata के भीतर) - साइट से प्राप्त salt, जो हैश बनाने के लिए उपयोग किया जाता है।
signature (metadata के भीतर) - अनुरोध का डिजिटल सिग्नेचर।
userAgent - ब्राउज़र User-Agent। केवल Windows OS से वर्तमान UA भेजें।
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "altcha",
"websiteURL": "https://example.com",
"websiteKey": "",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"metadata": {
"challenge": "3dd28253be6cc0c54d95f7f98c517e68744597cc6e66109619d1ac975c39181c",
"iterations": "5000",
"salt":"46d5b1c8871e5152d902ee3f?edk=1493462145de1ce33a52fb569b27a364&codeChallenge=464Cjs7PbiJJhJZ_ReJ-y9UGGDndcpsnP6vS8x1nEJyTkhjQkJyL2jcnYEuMKcrG&expires=1761048664",
"signature": "4b1cf0e0be0f4e5247e50b0f9a449830f1fbca44c32ff94bc080146815f31a18"
}
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"data": {
"token": "eyJhbGdvcml0aG0iOiJTSEEtMjU2IiwiY2hhbGxlbmdlIjoiNjMxOGUzYzc2NjhlOTZiMmFlYjg2NGU2NmRmMTliODRkYmYwZDBhMWRjNjYwMDdiMGM5ZGI4ODZiNTUxNjQxNiIsIm51bWJlciI6MTY0NDcsInNhbHQiOiJiMTQ1YWE5ZmU5MjA3NjBiMDgxYTAwNTMiLCJzaWduYXR1cmUiOiI5NzM4MmJlODE2NDUwNzk5MzlhYmU2M2ZkYzZjN2E3ZGYwOTM5MzNjODljZTk0ZjgzNTgxYmUyNDU3ZmI4MDM0IiwidG9vayI6MTczLjl9",
"number": "16447"
}
}
}
// 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/142.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);
})();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. सर्वर-साइड सत्यापन।
सत्यापन कैसे होता है:
ALTCHA Sentinel के माध्यम से सत्यापन:
import { verifyServerSignature } from 'altcha-lib';
// Sentinel में उत्पन्न Secret API Key
const apiKeySecret = 'sec_...';
// विजेट से प्राप्त payload
const payload = '...';
// सत्यापन
const { verificationData, verified } = await verifyServerSignature(payload, apiKeySecret);
if (verified) {
// सत्यापन सफल — फॉर्म डेटा को संसाधित किया जा सकता है
}
const resp = await fetch('https://sentinel.example.com/v1/verify/signature', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ payload }),
});
const { verified } = await resp.json();
if (verified) {
// सत्यापन सफल — फॉर्म को प्रोसेस कर रहे हैं
}
API स्वतः एक ही payload के पुन: उपयोग को रोकता है।
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 बनाते हैं और सर्वर पर चैलेंज को सत्यापित करते हैं।
अगर आपके पास ऐसा साइट आया है, जिस पर पहले से ही कोई कैप्चा या अन्य सुरक्षा प्रणाली लगी हुई है और आपके पास कोड तक पहुंच नहीं है — तो घबराने की ज़रूरत नहीं है! यह पता लगाना काफ़ी आसान है कि वास्तव में कौन-सी तकनीक इस्तेमाल हो रही है। काम की सही जाँच के लिए आप अलग-थलग टेस्ट वातावरण में CapMonster Cloud पहचान सेवा का उपयोग कर सकते हैं, ताकि यह सुनिश्चित हो सके कि टोकन प्रोसेसिंग का मेकैनिज़्म और वेरिफिकेशन लॉजिक ठीक तरह से काम कर रहे हैं।
ALTCHA के मामले में सिस्टम की पहचान करना, उसके व्यवहार का विश्लेषण करना और यह सुनिश्चित करना ही काफ़ी है कि सुरक्षा सही तरीके से काम कर रही है। इस लेख में हमने दिखाया है कि ALTCHA को कैसे पहचाना जाए और इसे जोड़ने या दोबारा कॉन्फ़िगर करने की निर्देशिका कहाँ मिलेगी, ताकि आप आत्मविश्वास के साथ सुरक्षा को बनाए रख सकें और इसके काम को नियंत्रित कर सकें।