इस लेख में हमने आपकी सभी महत्वपूर्ण शंकाओं के जवाब देने की कोशिश की है। किसी भी समस्या को हल करना शुरू करने का पहला कदम यह तय करना है कि कौन-सा सुरक्षा सिस्टम उपयोग में है। इसके लिए आप लोकप्रिय कैप्चा और एंटी-बॉट सुरक्षा सिस्टमों की सूची देख सकते हैं, जहाँ ऐसे दृश्य उदाहरण और मुख्य संकेत दिए गए हैं जो यह जल्दी समझने में मदद करते हैं कि आप किस समाधान के साथ काम कर रहे हैं।
यदि आपको पता चलता है कि आपकी साइट पर FunCaptcha (Arkose Labs CAPTCHA) उपयोग हो रहा है, तो अगला कदम इसके गुणों और काम करने के तरीके को और विस्तार से समझना है। इसी लेख में आप FunCaptcha (Arkose Labs CAPTCHA) सिस्टम को जोड़ने (इंटीग्रेट करने) की निर्देशिका भी देख सकते हैं, ताकि आप पूरी तरह समझ सकें कि यह आपकी साइट पर कैसे काम करता है। इससे आप न केवल मौजूदा सुरक्षा को बेहतर ढंग से समझ पाएँगे, बल्कि उसकी सपोर्ट और रखरखाव की सही योजना भी बना सकेंगे।
CapMonster Cloud के माध्यम से FunCaptcha को कैसे हल करें
- फॉर्म वाली पेज खोलें और सुनिश्चित करें कि कैप्चा दिखाई दे रहा है।
- कैप्चा हल किए बिना फॉर्म सबमिट करने का प्रयास करें — सर्वर को एरर देना चाहिए।
- कैप्चा सफलतापूर्वक हल होने के बाद — फॉर्म बिना एरर के सबमिट होना चाहिए।
API के माध्यम से CapMonster Cloud के साथ काम करने के सामान्य चरण:
type - FunCaptchaTask
websiteURL - उस पेज का पता जहाँ कैप्चा हल हो रहा है;
websitePublicKey - FunCaptcha कुंजी (मूल्य public key या pk);
data - एक अतिरिक्त पैरामीटर। आवश्यक है यदि साइट पर data[blob] का उपयोग हो रहा है;
funcaptchaApiJSSubdomain - Arkose Labs का सबडोमेन (मान surl)। इसे केवल तभी दें जब यह स्टैंडर्ड से अलग हो: client-api.arkoselabs.com
userAgent - ब्राउज़र User-Agent। केवल Windows OS का वर्तमान UA भेजें।
इस टास्क के लिए अपने प्रॉक्सी का उपयोग करना आवश्यक है:
proxyType :
- http - सामान्य HTTP/HTTPS प्रॉक्सी;
- https - यदि 'http' काम नहीं कर रहा है तो इसका उपयोग करें (कुछ कस्टम प्रॉक्सी के लिए आवश्यक);
- socks4 - SOCKS4 प्रकार का प्रॉक्सी;
- socks5 - SOCKS5 प्रकार का प्रॉक्सी।
proxyAddress - प्रॉक्सी IP पता (IPv4/IPv6)।
proxyPort - प्रॉक्सी पोर्ट।
proxyLogin - प्रॉक्सी सर्वर लॉगिन।
proxyPassword - प्रॉक्सी सर्वर पासवर्ड।
https://api.capmonster.cloud/createTask
{
"clientKey": "API_KEY",
"task": {
"type": "FunCaptchaTask",
"websiteURL": "https://www.example.com",
"websitePublicKey": "EX72CCFB-26EX-40E5-91E6-85EX70BE98ED",
"funcaptchaApiJSSubdomain": "example-api.arkoselabs.com",
"data": "{\"blob\":\"nj9UbL+yio7goOlTQ/b64t.ayrrBnP6kPgzlKYCP/kv491lKS...Wot/7gjpyIxs7VYb0+QuRcfQ/t6bzh5pXDkOFSskA/V/ITSVZSAlglIplLcdreZ4PE8skfMU6k1Q\"}",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36",
"proxyType": "http", // आवश्यक होने पर प्रॉक्सी जोड़ें
"proxyAddress": "8.8.8.8",
"proxyPort": 8080,
"proxyLogin": "proxyLoginHere",
"proxyPassword": "proxyPasswordHere"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"errorCode": null,
"errorDescription": null,
"solution": {
"token": "337187b9f57678923.5060184402|r=us-west-2|lang=en|pk=EX72CCFB-26EX-40E5-91E6-85EX70BE98ED|at=40|ag=101|cdn_url=https%3A%2F%2Fclient-api.arkoselabs.com%2Fcdn%2Ffc|surl=https%3A%2F%2Fclient-api.arkoselabs.com|smurl=https%3A%2F%2Fclient-api.arkoselabs.com%2Fcdn%2Ffc%2Fassets%2Fstyle-manager",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"
},
"status": "ready"
}
// npm install playwright
const { chromium } = require("playwright");
const WEBSITE_URL = "https://example.com";
// CapMonster Cloud से प्राप्त टोकन
const FUN_CAPTCHA_TOKEN = "PUT_YOUR_FUN_CAPTCHA_TOKEN_HERE";
(async () => {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
/**
* Arkose यूनिवर्सल इंटरसेप्टर (v1 / v2)
* पेज लोड होने से पहले निष्पादित होता है
*/
await page.addInitScript(() => {
const callbacks = [];
function captureCallback(cb, source) {
if (typeof cb === "function") {
callbacks.push(cb);
console.log("[Arkose] callback captured from", source);
}
}
function patchRender(obj, name) {
if (!obj || typeof obj.render !== "function") return;
const originalRender = obj.render;
obj.render = function (container, options = {}) {
captureCallback(options.callback, name + ".render");
return originalRender.apply(this, arguments);
};
}
// Object.defineProperty के माध्यम से इंटरसेप्शन (अक्सर Arkose द्वारा इस्तेमाल होता है)
const originalDefineProperty = Object.defineProperty;
Object.defineProperty = function (target, prop, descriptor) {
if (
(prop === "FunCaptcha" || prop === "ArkoseEnforcement") &&
descriptor &&
typeof descriptor.value === "object"
) {
patchRender(descriptor.value, prop);
}
return originalDefineProperty.apply(this, arguments);
};
// Fallback: ग्लोबल ऑब्जेक्ट्स की समय-समय पर जांच
const interval = setInterval(() => {
if (window.FunCaptcha) patchRender(window.FunCaptcha, "FunCaptcha");
if (window.ArkoseEnforcement)
patchRender(window.ArkoseEnforcement, "ArkoseEnforcement");
if (callbacks.length > 0) clearInterval(interval);
}, 200);
// टोकन पास करने के लिए यूनिवर्सल पॉइंट
window.__arkoseSolve = function (token) {
if (callbacks.length > 0) {
callbacks.forEach((cb) => cb(token));
console.log("[Arkose] token delivered via captured callbacks");
return true;
}
// वैकल्पिक विकल्प
if (typeof window.arkoseCallback === "function") {
window.arkoseCallback(token);
console.log("[Arkose] token delivered via arkoseCallback");
return true;
}
// Fallback
window._arkoseToken = token;
console.log("[Arkose] token stored in window._arkoseToken");
return false;
};
});
/**
* पेज खोलना
*/
console.log("Opening page...");
await page.goto(WEBSITE_URL, { waitUntil: "domcontentloaded" });
/**
* यहाँ साइट को FunCaptcha इनिशियलाइज़ करना चाहिए
* (पंजीकरण, लॉगिन, बटन, फॉर्म आदि।)
*/
/**
* तैयार टोकन पास करना
*/
console.log("Injecting FunCaptcha token...");
await page.evaluate((token) => {
if (!window.__arkoseSolve) {
console.log("[Arkose] solver not ready");
return;
}
window.__arkoseSolve(token);
}, FUN_CAPTCHA_TOKEN);
/**
* पेज को परिणाम प्रोसेस करने का समय दें
*/
await page.waitForTimeout(5000);
console.log("Done.");
await browser.close();
})();
- Arkose Labs में रजिस्टर करें और Arkose Command Center का एक्सेस प्राप्त करें (आप चैट में जाकर अपना डेटा फॉर्म में सबमिट कर सकते हैं — उदाहरण के लिए यहाँ या यहाँ)।
एक्सेस प्राप्त करने के बाद दो कुंजी (Public / Private) प्राप्त करें, सेक्शन Settings → Keys में।

आवश्यकता होने पर Customer Success Manager (CSM) से संपर्क करें:
- कस्टम API डोमेन प्राप्त करने के लिए;
- Verify API अनुरोध और उत्तर स्कीमा प्राप्त करने के लिए।
Arkose की सिफ़ारिशें
- परीक्षण के लिए Development Key का उपयोग करें।
- प्रत्येक वर्कफ़्लो (लॉगिन, रजिस्टर, खरीद आदि) के लिए अलग Production Key का उपयोग करें।
- अलग-अलग साइटों के लिए अलग कुंजी का उपयोग करें।
सामान्य कार्यप्रणाली
- क्लाइंट डेटा इकट्ठा करता है और आवश्यक होने पर चैलेंज दिखाता है।
- क्लाइंट एक-बार का टोकन प्राप्त करता है।
- सर्वर Arkose Verify API के माध्यम से टोकन की जाँच करता है।
चरण 1. क्लाइंट-साइड इंटीग्रेशन
ब्राउज़र पर (Arkose Bot Manager):
- उपयोगकर्ता के व्यवहार का विश्लेषण करता है;
- आवश्यक होने पर Enforcement Challenge दिखाता है;
- एक सत्र टोकन लौटाता है।
Client API:
- परीक्षण के लिए इस्तेमाल किया जा सकता है:
client-api.arkoselabs.com - प्रोडक्शन के लिए कस्टम डोमेन की सिफ़ारिश की जाती है:
<company>-api.arkoselabs.com
मुख्य आवश्यकताएँ
- Arkose क्लाइंट स्क्रिप्ट को प्रति पेज केवल एक बार शामिल करें
- एक ग्लोबल callback निर्धारित करें
- setConfig() कॉल करें
- परिणाम के आधार पर कार्रवाई की अनुमति या अस्वीकार की जाती है।
क्लाइंट का परिणाम — token, जिसे सर्वर को भेजना होगा।
<html>
<head>
<!--
Arkose Labs API को पेज के <head> में जोड़ें। उदाहरण में सुनिश्चित करें:
- <YOUR PUBLIC KEY> को Arkose Labs द्वारा जारी public key से बदलें;
- <YOUR CALLBACK> को आपके द्वारा परिभाषित ग्लोबल callback फ़ंक्शन के नाम से बदलें।
उदाहरण:
<script src="//client-api.arkoselabs.com/v2/<YOUR PUBLIC KEY>/api.js"
data-callback="setupDetect"></script>
-->
<script src="//client-api.arkoselabs.com/v2/<YOUR PUBLIC KEY>/api.js" data-callback="<YOUR CALLBACK>"></script>
<link rel="shortcut icon" href="#">
<meta charset="UTF-8">
</head>
<body>
<!--
ट्रिगर एलिमेंट पेज पर कहीं भी हो सकता है और DOM में कभी भी जोड़ा जा सकता है।
-->
<button id="arkose-trigger">
ट्रिगर एलिमेंट
</button>
<!--
Arkose सेटअप (detection या enforcement मोड) के लिए, स्क्रिप्ट को </body> से पहले रखें और callback फ़ंक्शन को ग्लोबल परिभाषित करें।
-->
<script>
/*
यह ग्लोबल फ़ंक्शन तब कॉल होगा जब Arkose API तैयार हो। फ़ंक्शन का नाम script के data-callback attribute से मेल खाना चाहिए।
*/
function setupArkose(myArkose) {
myArkose.setConfig({
selector: '#arkose-trigger',
onCompleted: function(response) {
// एक-बार का टोकन, जिसे सर्वर पर भेजना होगा
console.log(response.token);
}
});
}
</script>
</body>
</html>
चरण 2. सर्वर-साइड सत्यापन
सर्वर पर टोकन की जाँच Arkose Verify API के माध्यम से की जाती है।
Verify API endpoint
https://<company>-verify.arkoselabs.com/api/v4/verify/रिक्वेस्ट पैरामीटर आवश्यक
- private_key — Arkose private key
- session_token — क्लाइंट से प्राप्त token
POST रिक्वेस्ट बॉडी का उदाहरण
{
"private_key": "_PRIVATE_KEY_HERE_",
"session_token": "_SESSION_TOKEN_HERE_",
"log_data": "_LOG_DATA_HERE_"
}
API का उत्तर सत्र और सत्यापन परिणाम की जानकारी देता है।
मुख्य बिंदु
- Public Key — केवल क्लाइंट
- Private Key — केवल सर्वर
- टोकन एक-बार का है
- सर्वर सत्यापन के बिना कैप्चा अमान्य माना जाता है
- Arkose पृष्ठभूमि में कार्य कर सकता है और केवल जोखिम होने पर चैलेंज दिखाता है
<?php
$private_key = 'YOUR_PRIVATE_KEY';
$verify_url = 'https://<company>-verify.arkoselabs.com/api/v4/verify/';
$input = json_decode(file_get_contents('php://input'), true);
$session_token = $input['session_token'] ?? null;
$log_data = $input['log_data'] ?? '';
$email_address = $input['email_address'] ?? '';
if (!$session_token) {
http_response_code(400);
echo json_encode(['error' => 'Session token अनुपस्थित']);
exit;
}
$data = [
'private_key' => $private_key,
'session_token' => $session_token,
'log_data' => $log_data,
'email_address' => $email_address
];
$options = [
'http' => [
'header' => "Content-Type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data),
],
];
$context = stream_context_create($options);
$result = file_get_contents($verify_url, false, $context);
if ($result === FALSE) {
http_response_code(500);
echo json_encode(['error' => 'कैप्चा सत्यापन में त्रुटि']);
exit;
}
echo $result;
?>
यह कैसे काम करता है:
- क्लाइंट साइट पर कैप्चा हल करता है और session token प्राप्त करता है।
- क्लाइंट token को POST रिक्वेस्ट के माध्यम से सर्वर पर भेजता है।
- सर्वर Arkose Verify API को private key और session token के साथ कॉल करता है।
- Arkose JSON लौटाता है, जिसमें session जानकारी और सत्यापन स्थिति होती है।
- सर्वर परिणाम (result.success) की जाँच करता है और तय करता है कि उपयोगकर्ता को आगे की कार्रवाई की अनुमति दी जाए या नहीं।
समर्थित कैप्चा
अगर आपके पास ऐसा साइट आया है, जिस पर पहले से ही कोई कैप्चा या अन्य सुरक्षा प्रणाली लगी हुई है और आपके पास कोड तक पहुंच नहीं है — तो घबराने की ज़रूरत नहीं है! यह पता लगाना काफ़ी आसान है कि वास्तव में कौन-सी तकनीक इस्तेमाल हो रही है। काम की सही जाँच के लिए आप अलग-थलग टेस्ट वातावरण में CapMonster Cloud पहचान सेवा का उपयोग कर सकते हैं, ताकि यह सुनिश्चित हो सके कि टोकन प्रोसेसिंग का मेकैनिज़्म और वेरिफिकेशन लॉजिक ठीक तरह से काम कर रहे हैं।
FunCaptcha के मामले में सिस्टम की पहचान करना, उसके व्यवहार का विश्लेषण करना और यह सुनिश्चित करना ही काफ़ी है कि सुरक्षा सही तरीके से काम कर रही है। इस लेख में हमने दिखाया है कि FunCaptcha को कैसे पहचाना जाए और इसे जोड़ने या दोबारा कॉन्फ़िगर करने की निर्देशिका कहाँ मिलेगी, ताकि आप आत्मविश्वास के साथ सुरक्षा को बनाए रख सकें और इसके काम को नियंत्रित कर सकें।