API Documentation
API को अपने एप्लिकेशन में इंटीग्रेट करने के लिए उपलब्ध एंडपॉइंट्स, रिक्वेस्ट फॉर्मेट, पैरामीटर्स, और उदाहरण रिस्पॉन्स के लिए संदर्भ।
यह documentation उन developers के लिए है जो CapSkip को सीधे अपनी scripts, applications, या automation systems में इंटीग्रेट करना चाहते हैं। third party सॉफ़्टवेयर के उपयोगकर्ताओं को setup निर्देशों के लिए Tutorials अनुभाग का पालन करना चाहिए।
CapSkip व्यापक रूप से इस्तेमाल होने वाली कैप्चा हल करने वाली सेवाओं के APIs को एमुलेट करता है, जिससे यह बिना किसी बदलाव के कम्पैटिबल थर्ड-पार्टी सॉफ़्टवेयर से कनेक्ट हो पाता है। इंटीग्रेशन के लिए आमतौर पर सिर्फ़ CapSkip चलाना ही ज़रूरी होता है।
डॉक्यूमेंटेशन बताता है कि requests कैसे सबमिट करें और results कैसे प्राप्त करें। CapSkip कई API families को सपोर्ट करता है, जिनमें 2Captcha स्टाइल API (in.php / res.php), AntiCaptcha, CapMonster और CapSolver द्वारा उपयोग किया जाने वाला JSON createTask / getTaskResult API, और DeathByCaptcha REST API शामिल हैं। एक ही family की सेवाएँ समान endpoints, request और response format साझा करती हैं। प्रत्येक सेवा के लिए केवल base URL (host और port) अलग होता है।
| API family | सेवाएँ |
|---|---|
| 2captcha-शैली | 2captcha.com, rucaptcha.com, solvecaptcha.com, captchas.io |
| JSON (createTask / getTaskResult) | anti-captcha.com, capmonster.cloud, capsolver.com |
| DeathByCaptcha | deathbycaptcha.com |
Image CAPTCHA
एक सामान्य कैप्चा एक ऐसी image है जिसमें विकृत पर human-readable text होता है। इसे हल करने के लिए, उपयोगकर्ता को image में दिखाया गया text टाइप करना होता है।
किसी सामान्य कैप्चा को हल करने के लिए, API endpoint को HTTP POST request के ज़रिए image submit करें। configured local address और port का उपयोग करके request सीधे अपने CapSkip instance को भेजें, उदाहरण के लिए: http://127.0.0.1:PORT/in.php
CapSkip multipart/form-data या Base64-encoded format में images स्वीकार करता है।
Multipart sample form
<form method="post" action="http://127.0.0.1:PORT/in.php" enctype="multipart/form-data"> <input type="hidden" name="method" value="post"> Your key: <input type="text" name="key" value="YOUR_APIKEY"> The CAPTCHA file: <input type="file" name="file"> <input type="submit" value="Upload and get the ID"> </form>
YOUR_APIKEY अगर CapSkip में API key validation सक्षम है तो आपकी API key को दर्शाता है। अगर API key validation अक्षम है, तो कोई भी string वैल्यू स्वीकार की जाएगी।
Base64 नमूना form
<form method="post" action="http://127.0.0.1:PORT/in.php"> <input type="hidden" name="method" value="base64"> Your key: <input type="text" name="key" value="YOUR_APIKEY"> The CAPTCHA file body in base64 format: <textarea name="body">BASE64_FILE</textarea> <input type="submit" value="Upload and get the ID"> </form>
YOUR_APIKEY अगर CapSkip में API key validation सक्षम है तो आपकी API key को दर्शाता है। अगर API key validation अक्षम है, तो कोई भी string वैल्यू स्वीकार की जाएगी।
BASE64_FILE Base64-encoded image डेटा है।
POST Request Parameters की सूची
| POST parameter | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| method | स्ट्रिंग | हां |
post – इमेज को multipart/form-data का इस्तेमाल करके सबमिट करें base64 – इमेज को एक Base64-एन्कोडेड स्ट्रिंग के रूप में सबमिट करें |
| file | फ़ाइल | हाँ* |
कैप्चा image file। * method=post होने पर आवश्यक। |
| body | स्ट्रिंग | हाँ* |
Base64-encoded कैप्चा image data। * method=base64 होने पर आवश्यक। |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 – रिस्पॉन्स प्लेन टेक्स्ट के रूप में लौटाया जाता है 1 – response JSON format में लौटाया जाता है |
कैप्चा सबमिट करें (multipart file upload):
curl -X POST -F "key=YOUR_API_KEY" -F "method=post" -F "[email protected]" http://127.0.0.1:8080/in.php
कैप्चा सबमिट करें (base64 encoded):
curl -X POST -d "key=YOUR_API_KEY&method=base64&body=BASE64_IMAGE_DATA" http://127.0.0.1:8080/in.php
request सबमिट करने के बाद, अगर सब कुछ सही है, तो CapSkip कैप्चा ID को plain text के रूप में लौटाएगा: OK|12345
अगर json=1 parameter इस्तेमाल होता है, तो रिस्पॉन्स JSON फ़ॉर्मैट में लौटाया जाएगा:
{
"status":1,
"request":"12345"
}1 सेकंड प्रतीक्षा करें, फिर result endpoint पर एक HTTP GET request भेजें (/res.php) लौटाई गई कैप्चा ID के साथ।
अगर कैप्चा हल हो गया है, तो CapSkip परिणाम को plain text के रूप में लौटाएगा: OK|TEXT
अगर json=1 निर्दिष्ट किया गया था, तो रिस्पॉन्स होगा:
{
"status":1,
"request":"TEXT"
}अगर कैप्चा अभी तक हल नहीं हुआ है, तो CapSkip यह लौटाएगा: CAPCHA_NOT_READY
इस मामले में, 1 सेकंड रुकें और अंतिम रिज़ल्ट मिलने तक रिक्वेस्ट दोहराएँ। अगर CapSkip खाली response body लौटाता है, तो रिज़ल्ट पहले ही रिट्रीव किया जा चुका है या ID मौजूद नहीं है। हर रिज़ल्ट सिर्फ़ एक बार पढ़ा जा सकता है।
GET request parameters की सूची
| GET पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| action | स्ट्रिंग | हां | get – सबमिट किए गए कैप्चा के लिए answer प्राप्त करें। |
| id | पूर्णांक | हां |
इसके द्वारा लौटाया गया कैप्चा ID in.php. |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 – रिस्पॉन्स प्लेन टेक्स्ट के रूप में लौटाया जाता है 1 – response JSON format में लौटाया जाता है |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
reCAPTCHA V2
reCAPTCHA v2, जिसे “I’m not a robot” reCAPTCHA के नाम से भी जाना जाता है, एक व्यापक रूप से इस्तेमाल होने वाला कैप्चा प्रकार है जो इस तरह दिखता है:
reCAPTCHA v2 हल करने के लिए, भेजें the googlekey और pageurl पैरामीटर्स के साथ method=userrecaptcha और आपकी CapSkip API key।
आप प्राप्त कर सकते हैं googlekey निम्नलिखित में से किसी एक method का उपयोग करके:
reCAPTCHA widget पर right-click करें और चुनें Inspect। एक ऐसा URL ढूँढें जो इससे शुरू हो:
www.google.com/recaptcha/api2/anchor
इसका value कॉपी करें k उस URL से parameter। वैकल्पिक रूप से, इसे ढूंढें data-sitekey पेज source में attribute और उसकी value कॉपी करें।

जैसे ही आपके पास site key हो, एक HTTP GET या POST request सबमिट करें http://127.0.0.1:PORT/in.php
POST Request Parameters की सूची
| पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| method | स्ट्रिंग | हां | userrecaptcha – एक reCAPTCHA v2 request निर्दिष्ट करता है। |
| googlekey | स्ट्रिंग | हां | इसका value k या data-sitekey टारगेट पेज पर पाया गया पैरामीटर। |
| pageurl | स्ट्रिंग | हां | उस पेज का पूरा URL जहाँ reCAPTCHA स्थित है। |
| enterprise | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
1 – reCAPTCHA Enterprise v2 को दर्शाता है। 0 – मानक reCAPTCHA v2। |
| invisible | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
1 – Invisible reCAPTCHA दर्शाता है। 0 – standard checkbox reCAPTCHA। |
| data-s | स्ट्रिंग | नहीं | का मान data-s page पर मिलने वाला parameter। Google Search और कुछ Google services पर लागू। |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 – response सादे टेक्स्ट के रूप में लौटाया जाता है। 1 – response को JSON format में लौटाया जाता है। |
| proxy | स्ट्रिंग | नहीं | प्रॉक्सी पता। IP authentication के लिए format: IP:PORT (उदाहरण: 123.123.123.123:3128). login/password authentication के लिए format: login:password@IP:PORT |
| proxytype | स्ट्रिंग | नहीं | प्रॉक्सी का प्रकार। समर्थित values: HTTP, HTTPS, SOCKS5, SOCKS5H। डिफ़ॉल्ट: HTTP जब proxy प्रदान किया गया है पर proxytype छोड़ दिया जाता है। |
reCAPTCHA v2 सबमिट करें (Standard):
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com" http://127.0.0.1:8080/in.php
reCAPTCHA v2 सबमिट करें (Invisible):
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&invisible=1" http://127.0.0.1:8080/in.php
Enterprise reCAPTCHA v2 सबमिट करें:
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&enterprise=1" http://127.0.0.1:8080/in.php
Enterprise reCAPTCHA v2 (Invisible) submit करें:
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&enterprise=1&invisible=1" http://127.0.0.1:8080/in.php
अगर request सफल होती है, तो CapSkip कैप्चा ID को plain text के रूप में लौटाएगा: OK|12345
अगर json=1 पैरामीटर का उपयोग किया गया था, तो response को JSON format में लौटाया जाएगा:
{
"status":1,
"request":"12345"
}अगर request फेल होती है, तो CapSkip एक error code लौटाएगा।
15 से 20 सेकंड प्रतीक्षा करें, फिर हल प्राप्त करने के लिए result endpoint पर एक HTTP GET request भेजें: http://127.0.0.1:PORT/res.php
GET request parameters की सूची
| GET पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| action | स्ट्रिंग | हां | get – सबमिट किए गए कैप्चा के लिए answer प्राप्त करें। |
| id | पूर्णांक | हां |
इसके द्वारा लौटाया गया कैप्चा ID in.php. |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 – रिस्पॉन्स प्लेन टेक्स्ट के रूप में लौटाया जाता है 1 – response JSON format में लौटाया जाता है |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
अगर कैप्चा हल हो गया है, तो CapSkip plain text या JSON में जवाब देगा और answer token लौटाएगा। token नीचे दिए गए जैसा दिखेगा:
03AHJ_Vuve5Asa4koK3KSMyUkCq0vUFCR5Im4CwB7PzO3dCxIo11i53epEraq-uBO5mVm2XRikL8iKOWr0aG50sCuej9bXx5qcviUGSm4iK4NC_Q88flavWhaTXSh0VxoihBwBjXxwXuJZ-WGN5Sy4dtUl2wbpMqAj8Zwup1vyCaQJWFvRjYGWJ_TQBKTXNB5CCOgncqLetmJ6B6Cos7qoQyaB8ZzBOTGf5KSP6e-K9niYs772f53Oof6aJeSUDNjiKG9gN3FTrdwKwdnAwEYX-F37sI_vLB1Zs8NQo0PObHYy0b0sf7WSLkzzcIgW9GR0FwcCCm1P8lB-50GQHPEBJUHNnhJyDzwRoRAkVzrf7UkV8wKCdTwrrWqiYDgbrzURfHc2ESsp020MicJTasSiXmNRgryt-gf50q5BMkiRH7osm4DoUgsjc_XyQiEmQmxl5sqZP7aKsaE-EM00x59XsPzD3m3YI6SRCFRUevSyumBd7KmXE8VuzIO9lgnnbka4-eZynZa6vbB9cO3QjLH0xSG3-egcplD1uLGh79wC34RF49Ui3eHwua4S9XHpH6YBe7gXzz6_mv-o-fxrOuphwfrtwvvi2FGfpTexWvxhqWICMFTTjFBCEGEgj7_IFWEKirXW2RTZCVF0Gid7EtIsoEeZkPbrcUISGmgtiJkJ_KojuKwImF0G0CsTlxYTOU2sPsd5o1JDt65wGniQR2IZufnPbbK76Yh_KI2DY4cUxMfcb2fAXcFMc9dcpHg6f9wBXhUtFYTu6pi5LhhGuhpkiGcv6vWYNxMrpWJW_pV7q8mPilwkAP-zw5MJxkgijl2wDMpM-UUQ_k37FVtf-ndbQAIPG7S469doZMmb5IZYgvcB4ojqCW3Vz6Q
अगर कैप्चा अभी तक हल नहीं हुआ है, तो CapSkip लौटाएगा CAPCHA_NOT_READY। इस स्थिति में, 5 सेकंड प्रतीक्षा करें और request दोहराएँ। अगर CapSkip एक खाली response body लौटाता है, तो या तो result पहले ही प्राप्त किया जा चुका है या ID मौजूद नहीं है। प्रत्येक result को केवल एक बार पढ़ा जा सकता है।
इस ID वाले element को ढूंढें g-recaptcha-response और इसे हटाकर दृश्यमान बनाएँ display: none स्टाइल।

कृपया ध्यान दें: कुछ मामलों में, पेज की सामग्री गतिशील रूप से जेनरेट होती है, और
g-recaptcha-responseelement may not appear in the static HTML source. In such situations, inspect the page structure using your browser’s developer tools to locate the dynamically generated element.
एक विकल्प के रूप में, आप JavaScript का उपयोग करके इसका मान सेट कर सकते हैं g-recaptcha-response field सीधे:
document.getElementById("g-recaptcha-response").innerHTML="TOKEN";पेज पर एक इनपुट फ़ील्ड दिखाई देगा। उत्तर टोकन को उस फ़ील्ड में पेस्ट करें और फॉर्म सबमिट करें।
reCAPTCHA V2 Callback
कुछ मामलों में, कोई submit button नहीं होता और इसके बजाय एक callback function इस्तेमाल होता है। reCAPTCHA हल होने पर callback function अपने आप execute हो जाता है।
POST और GET request parameters की सूची यहाँ उपलब्ध है: reCAPTCHA V2 POST और GET request पैरामीटर
callback function आम तौर पर इसमें परिभाषित होता है data-callback reCAPTCHA widget का attribute, उदाहरण के लिए:
data-callback="myCallbackFunction"
अन्य मामलों में, callback फंक्शन को इस रूप में परिभाषित किया जाता है callback इसका parameter the grecaptcha.render() function, उदाहरण के लिए:
grecaptcha.render('example', {
'sitekey' : 'someSitekey',
'callback' : myCallbackFunction,
'theme' : 'dark'
});callback फ़ंक्शन ढूंढने का एक और तरीका है browser का JavaScript console खोलना और reCAPTCHA configuration object का निरीक्षण करना:
___grecaptcha_cfg.clients[0].aa.l.callback
ध्यान दें कि aa.l property अलग हो सकती है, और पेज पर कई reCAPTCHA clients हो सकते हैं। ऐसे मामलों में, आपको यह भी inspect करना चाहिए clients[1], clients[2], और सही configuration object खोजने के लिए अन्य entries।
वैकल्पिक रूप से, आप reCAPTCHA parameters अपने आप निकालने के लिए निम्नलिखित script का उपयोग कर सकते हैं:
function findRecaptchaClients() {
if (typeof (___grecaptcha_cfg) !== 'undefined') {
return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
const objects = Object.entries(client).filter(([_, value]) => value && typeof value === 'object');objects.forEach(([toplevelKey, toplevel]) => {
const found = Object.entries(toplevel).find(([_, value]) => (
value && typeof value === 'object' && 'sitekey' in value && 'size' in value
));
if (typeof toplevel === 'object' && toplevel instanceof HTMLElement && toplevel['tagName'] === 'DIV'){
data.pageurl = toplevel.baseURI;
}
if (found) {
const [sublevelKey, sublevel] = found;data.sitekey = sublevel.sitekey;
const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
const callback = sublevel[callbackKey];
if (!callback) {
data.callback = null;
data.function = null;
} else {
data.function = callback;
const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
data.callback = `___grecaptcha_cfg.clients${keys}`;
}
}
});
return data;
});
}
return [];
}अंत में, callback function को call करें:
myCallbackFunction();
या वैकल्पिक रूप से:
___grecaptcha_cfg.clients[0].aa.l.callback();
कुछ मामलों में, callback फंक्शन को एक आर्गुमेंट की आवश्यकता होती है। अधिकांश स्थितियों में, आपको हल किए गए टोकन को उस आर्गुमेंट के रूप में पास करना चाहिए। उदाहरण के लिए:
myCallbackFunction('TOKEN');
reCAPTCHA V2 Invisible
reCAPTCHA v2 में एक Invisible mode भी होता है। आप यहाँ एक उदाहरण देख सकते हैं:
https://www.google.com/recaptcha/api2/demo?invisible=true
Invisible reCAPTCHA “I’m not a robot” checkbox नहीं दिखाता। इसके बजाय, यह आमतौर पर किसी बटन से जुड़ा होता है या पेज लोड या यूज़र इंटरैक्शन पर अपने आप ट्रिगर होता है, जैसे किसी बटन पर क्लिक करना या फॉर्म सबमिट करना।
आंतरिक रूप से, Invisible reCAPTCHA widget एक छिपे हुए के अंदर render होता है <div> दृश्यमान viewport के बाहर स्थित element, जो इसे उपयोगकर्ता के लिए अदृश्य बना देता है।
उपयोगकर्ता के cookies और risk score के आधार पर, reCAPTCHA बिना कोई challenge दिखाए अपने आप पास हो सकता है। अन्यथा, एक standard image challenge दिखाई देगा।
अधिकांश मामलों में, चैलेंज पूरा होने पर एक callback फंक्शन एक्ज़ीक्यूट होता है। अधिक विवरण के लिए ऊपर callback सेक्शन देखें।
POST और GET request parameters की सूची यहाँ उपलब्ध है: reCAPTCHA V2 POST और GET request पैरामीटर
कैसे तय करें कि reCAPTCHA Invisible है या नहीं?
आप निम्नलिखित संकेतकों में से किसी एक का उपयोग करके Invisible reCAPTCHA पहचान सकते हैं:
“I’m not a robot” checkbox दिखता नहीं है, पर उपयोगकर्ता के इंटरैक्शन के बाद एक challenge दिखता है।
reCAPTCHA iframe URL में parameter होता है
size=invisible.reCAPTCHA कॉन्फ़िगरेशन ऑब्जेक्ट में शामिल है एक
sizeप्रॉपर्टी इस पर सेटinvisible, उदाहरण के लिए:___grecaptcha_cfg.clients[0].aa.l.size === "invisible"
API के ज़रिए Invisible reCAPTCHA हल करते समय, यह पैरामीटर शामिल करें: invisible=1
Browser में Invisible reCAPTCHA को कैसे संभालें?
तरीक़ा 1: JavaScript का उपयोग
इसका मान सेट करें g-recaptcha-response field को CapSkip द्वारा लौटाए गए token पर:
document.getElementById("g-recaptcha-response").innerHTML="TOKEN";token सेट करने के बाद, वह action निष्पादित करें जो आमतौर पर सफल वेरिफ़िकेशन के बाद होता है।
अधिकांश मामलों में, इसका मतलब है एक फॉर्म सबमिट करना। आपको सही फॉर्म को उसके आधार पर पहचानना होता है id, name, या कोई अन्य attribute, और फिर submission को ट्रिगर करें। यहाँ कुछ उदाहरण हैं:
document.getElementById("recaptcha-demo-form").submit(); //by id "recaptcha-demo-form"
document.getElementsByName("myFormName")[0].submit(); //by element name "myFormName"
document.getElementsByClassName("example").submit(); //by class name "example"कुछ मामलों में, reCAPTCHA हल होने पर एक callback फ़ंक्शन अपने आप निष्पादित होता है।
callback function आम तौर पर इसमें परिभाषित होता है data-callback reCAPTCHA widget का attribute, उदाहरण के लिए:
data-callback="myCallbackFunction"
अन्य मामलों में, callback फंक्शन को इस रूप में परिभाषित किया जाता है callback इसका parameter the grecaptcha.render() function, उदाहरण के लिए:
grecaptcha.render('example', {
'sitekey' : 'someSitekey',
'callback' : myCallbackFunction,
'theme' : 'dark'
});आपको बस उस फंक्शन को कॉल करना है:
myCallbackFunction();
विधि 2: HTML को संशोधित करना
हटाएँ the <div> वह element जो page body से reCAPTCHA widget रखता है।
<div style="visibility: hidden; position: absolute; width:100%; top: -10000px; left: 0px; right: 0px; transition: visibility 0s linear 0.3s, opacity 0.3s linear; opacity: 0;"> <div style="width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; z-index: 2000000000; background-color: #fff; opacity: 0.5; filter: alpha(opacity=50)"></div> <div style="margin: 0 auto; top: 0px; left: 0px; right: 0px; position: absolute; border: 1px solid #ccc; z-index: 2000000000; background-color: #fff; overflow: hidden;"> <iframe src="https://www.google.com/recaptcha/api2/bframe?hl=en&v=r20170213115309&k=6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs#zglq3yifgkmj" title="recaptcha challenge" style="width: 100%; height: 100%;" scrolling="no" name="zglq3yifgkmj" frameborder="0"></iframe> </div> </div>
पेज से पूरा reCAPTCHA block हटा दें।
<div class="">
<!-- BEGIN: ReCAPTCHA implementation example. -->
<div
id="recaptcha-demo"
class="g-recaptcha"
data-sitekey="6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs"
data-callback="onSuccess"
data-bind="recaptcha-demo-submit"
>
<div
class="grecaptcha-badge"
style="width: 256px; height: 60px; transition: right 0.3s ease 0s; position: fixed; bottom: 14px; right: -186px; box-shadow: 0px 0px 5px gray;"
>
<div class="grecaptcha-logo">
<iframe
src="https://www.google.com/recaptcha/api2/anchor?k=6LfP0CITAAAAAHq9FOgCo7v_fb0-pmmH9VW3ziFs&co=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbTo0NDM.&hl=en&v=r20170213115309&size=invisible&cb=uror1hlow5a"
title="recaptcha widget"
scrolling="no"
name="undefined"
width="256"
height="60"
frameborder="0"
></iframe>
</div>
<div class="grecaptcha-error"></div>
<textarea
id="g-recaptcha-response"
name="g-recaptcha-response"
class="g-recaptcha-response"
style="width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none; display: none; "
></textarea>
</div>
</div>
<script>
var onSuccess = function (response) {
var errorDivs = document.getElementsByClassName('recaptcha-error');
if (errorDivs.length) {
errorDivs[0].className = '';
}
var errorMsgs = document.getElementsByClassName('recaptcha-error-message');
if (errorMsgs.length) {
errorMsgs[0].parentNode.removeChild(errorMsgs[0]);
}
document.getElementById('recaptcha-demo-form').submit();
};
</script>
<!-- Optional noscript fallback. --><!-- END: ReCAPTCHA implementation example. -->
</div>हटाए गए ब्लॉक के स्थान पर निम्नलिखित कोड डालें:
<input type="submit" /> <textarea name="g-recaptcha-response">%g-recaptcha-response%</textarea>
%g-recaptcha-response% CapSkip से प्राप्त उत्तर token को दर्शाता है।
block को बदलने के बाद, एक “Submit query” button दिखाई देगा। form को इसके साथ सबमिट करने के लिए button पर क्लिक करें g-recaptcha-response मान और अन्य सभी आवश्यक फॉर्म डेटा वेबसाइट को।
reCAPTCHA V3
reCAPTCHA v3 Google द्वारा विकसित एक आधुनिक कैप्चा तंत्र है। यह कोई दिखने वाला challenge पेश नहीं करता और किसी user interaction की ज़रूरत नहीं होती। इसके बजाय, यह इस संभावना के आधार पर एक score देता है कि interaction इंसानी है।
तकनीकी रूप से, reCAPTCHA v3, reCAPTCHA v2 के समान है। वेबसाइट को reCAPTCHA API से एक token प्राप्त होता है, जिसे फिर एक POST request में लक्ष्य सर्वर पर भेजा जाता है और reCAPTCHA API के माध्यम से सत्यापित किया जाता है।
मुख्य अंतर यह है कि reCAPTCHA v3 कोई दृश्यमान challenge नहीं दिखाता। इसके बजाय, यह एक रेटिंग लौटाता है जो अनुमान लगाती है कि उपयोगकर्ता इंसान है या बॉट। इस रेटिंग को कहते हैं score और 0.0 से 1.0 तक होता है। स्कोर वेबसाइट को भेजा जाता है, जो फिर उस वैल्यू के आधार पर तय करती है कि रिक्वेस्ट को कैसे संभालना है।
एक अतिरिक्त पैरामीटर भी है जिसे कहते हैं action, जो वेबसाइट को विभिन्न उपयोगकर्ता इंटरैक्शन के बीच अंतर करने की अनुमति देता है। token को सत्यापित करने के बाद, reCAPTCHA API request से जुड़े action name को लौटाता है।
CapSkip का उपयोग करके reCAPTCHA v3 कैसे हल करें?
पहले, पुष्टि करें कि टारगेट वेबसाइट reCAPTCHA v3 इस्तेमाल कर रही है।
reCAPTCHA v3 के संकेतकों में शामिल हैं:
कोई दिखने वाला कैप्चा या image challenge नहीं
The
api.jsscript इसके साथ लोड होती हैrender=SITEKEYपैरामीटर, उदाहरण के लिए:https://www.google.com/recaptcha/api.js?render=SITEKEYThe
___grecaptcha_cfg.clientsarray में एक उच्च numeric index वाली entry होती है, जैसे किclients[100000]
reCAPTCHA v3 हल करने के लिए, निम्नलिखित parameters की पहचान करें:
- sitekey
यह इसमें पाया जा सकता हैrenderइसका parameter theapi.jsस्क्रिप्ट URL। यह एक iframe URL में भी दिखाई दे सकता है, उस JavaScript कोड के भीतर जो कॉल करता हैgrecaptcha.execute(), या इसके अंदर___grecaptcha_cfgconfiguration object। - action
इसे JavaScript code में इन calls के निरीक्षण द्वारा खोजेंgrecaptcha.execute(), उदाहरण के लिए:grecaptcha.execute('SITEKEY', {action: 'do_something'})कुछ मामलों में, action ढूँढने के लिए page द्वारा load की गई कई JavaScript files की समीक्षा करनी पड़ती है। अगर आप action value तय नहीं कर पाते, तो आप default value इस्तेमाल कर सकते हैं"verify". - pageurl
उस page का पूरा URL जहां reCAPTCHA v3 लागू किया गया है।
स्कोर को समझना
स्वीकार्य स्कोर थ्रेशोल्ड वेबसाइट के अनुसार अलग-अलग होता है और केवल टेस्टिंग के माध्यम से निर्धारित किया जा सकता है। स्कोर की रेंज:
0.0 → संभवतः बॉट
1.0 → संभवतः इंसान
अधिकांश वेबसाइटें 0.3 और 0.7 के बीच thresholds इस्तेमाल करती हैं, क्योंकि वैध उपयोगकर्ताओं को भी कम scores मिल सकते हैं।
आप अपना इच्छित threshold इसका इस्तेमाल करके पास कर सकते हैं min_score parameter, पर अंतिम स्कोर हमेशा वेरिफ़िकेशन के समय Google द्वारा तय किया जाता है और सॉल्वर द्वारा इसकी गारंटी नहीं दी जा सकती।
POST Request Parameters की सूची
| पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| method | स्ट्रिंग | हां | userrecaptcha – एक reCAPTCHA request निर्दिष्ट करता है। |
| version | स्ट्रिंग | हां | v3 – दर्शाता है कि request reCAPTCHA v3 के लिए है। |
| googlekey | स्ट्रिंग | हां | इसका value data-sitekey टारगेट पेज पर पाया गया पैरामीटर। |
| pageurl | स्ट्रिंग | हां | उस पेज का पूरा URL जहाँ reCAPTCHA स्थित है। |
| enterprise | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
1 – reCAPTCHA Enterprise v3 दर्शाता है। 0 – मानक reCAPTCHA v3। |
| action | स्ट्रिंग Default: verify | नहीं | इसका value action पेज पर परिभाषित पैरामीटर। |
| min_score | Float | नहीं | token के लिए अनुरोधित न्यूनतम score। जब आपका server token सत्यापित करता है तब Google अंतिम score असाइन करता है, इसलिए यह वैल्यू एक संकेत है और इसकी गारंटी नहीं है। Google बाद में जो भी score असाइन करे उससे बेपरवाह, CapSkip जो token हासिल करता है वह लौटा देता है। |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 – response सादे टेक्स्ट के रूप में लौटाया जाता है। 1 – response को JSON format में लौटाया जाता है। |
| proxy | स्ट्रिंग | नहीं | प्रॉक्सी पता। IP authentication के लिए format: IP:PORT (उदाहरण: 123.123.123.123:3128). login/password authentication के लिए format: login:password@IP:PORT |
| proxytype | स्ट्रिंग | नहीं | प्रॉक्सी का प्रकार। समर्थित values: HTTP, HTTPS, SOCKS5, SOCKS5H। डिफ़ॉल्ट: HTTP जब proxy प्रदान किया गया है पर proxytype छोड़ दिया जाता है। |
reCAPTCHA v3 सबमिट करें:
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&version=v3&action=submit&min_score=0.7&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com" http://127.0.0.1:8080/in.php
Enterprise reCAPTCHA v3 सबमिट करें:
curl -X POST -d "key=YOUR_API_KEY&method=userrecaptcha&version=v3&action=submit&min_score=0.7&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://example.com&enterprise=1" http://127.0.0.1:8080/in.php
अगर request सफल होती है, तो CapSkip कैप्चा ID को plain text के रूप में लौटाएगा: OK|12345
अगर json=1 पैरामीटर निर्दिष्ट किया गया है, तो response को JSON format में लौटाया जाएगा:
{
"status":1,
"request":"12345"
}अगर कोई error होता है, तो CapSkip एक error code लौटाएगा।
10 से 15 सेकंड प्रतीक्षा करें, फिर result endpoint पर एक HTTP GET request भेजें: http://127.0.0.1:PORT/res.php
अपनी request में लौटाई गई CAPTCHA ID दें। उपलब्ध parameters की पूरी सूची नीचे तालिका में दिखाई गई है।
अगर कैप्चा सफलतापूर्वक हल हो गया है, तो CapSkip नतीजा plain text या JSON format में लौटाएगा। लौटाई गई value नीचे दी गई जैसी एक verification token होती है:
03AHJ_Vuve5Asa4koK3KSMyUkCq0vUFCR5Im4CwB7PzO3dCxIo11i53epEraq-uBO5mVm2XRikL8iKOWr0aG50sCuej9bXx5qcviUGSm4iK4NC_Q88flavWhaTXSh0VxoihBwBjXxwXuJZ-WGN5Sy4dtUl2wbpMqAj8Zwup1vyCaQJWFvRjYGWJ_TQBKTXNB5CCOgncqLetmJ6B6Cos7qoQyaB8ZzBOTGf5KSP6e-K9niYs772f53Oof6aJeSUDNjiKG9gN3FTrdwKwdnAwEYX-F37sI_vLB1Zs8NQo0PObHYy0b0sf7WSLkzzcIgW9GR0FwcCCm1P8lB--gf50q5BMkiRH7osm4DoUgsjc_XyQiEmQmxl5sqZP7aKsaE-EM00x59XsPzD3m3YI6SRCFRUevSyumBd7KmXE8VuzIO9lgnnbka4-eZynZa6vbB9cO3QjLH0xSG3--o-fxrOuphwfrtwvvi2FGfpTexWvxhqWICMFTTjFBCEGEgj7_IFWEKirXW2RTZCVF0Gid7EtIsoEeZkPbrcUISGmgtiJkJ_KojuKwImF0G0CsTlxYTOU2sPsd5o1JDt65wGniQR2IZufnPbbK76Yh_KI2DY4cUxMfcb2fAXcFMc9dcpHg6f9wBXhUtFYTu6pi5LhhGuhpkiGcv6vWYNxMrpWJW_pV7q8mPilwkAP-zw5MJxkgijl2wDMpM-UUQ_k37FVtf-ndbQAIPG7S469doZMmb5IZYgvcB4ojqCW3Vz6Q
अगर कैप्चा अभी तक हल नहीं हुआ है, तो CapSkip लौटाएगा CAPCHA_NOT_READY। 5 सेकंड प्रतीक्षा करें और request दोहराएं। अगर CapSkip एक खाली response body लौटाता है, तो या तो नतीजा पहले ही retrieve किया जा चुका है या वह ID मौजूद नहीं है। हर नतीजा केवल एक बार पढ़ा जा सकता है।
GET request parameters की सूची
| GET पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| action | स्ट्रिंग | हां | get – सबमिट किए गए कैप्चा के लिए answer प्राप्त करें। |
| id | पूर्णांक | हां |
इसके द्वारा लौटाया गया कैप्चा ID in.php. |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 – रिस्पॉन्स प्लेन टेक्स्ट के रूप में लौटाया जाता है 1 – response JSON format में लौटाया जाता है |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
CapSkip से token मिलने के बाद, आपको इसे सही तरीके से टारगेट वेबसाइट को सबमिट करना होगा। यह कैसे काम करता है इसे समझने का सबसे अच्छा तरीका है सामान्य उपयोगकर्ता की तरह वेरिफ़िकेशन पूरा करते समय भेजी गई रिक्वेस्ट्स को देखना। ज़्यादातर browsers developer tools देते हैं जिनमें एक Network tab जो आपको आउटगोइंग requests का निरीक्षण करने देता है।
ज़्यादातर मामलों में, token एक POST request के माध्यम से भेजा जाता है। parameter name हो सकता है g-recaptcha-response, reCAPTCHA v2 के समान, या कुछ ऐसा जैसे g-recaptcha-response-100000। कुछ कार्यान्वयनों में, एक अलग parameter name का उपयोग किया जा सकता है।
आपको network requests का निरीक्षण करके यह तय करना चाहिए कि token कैसे प्रसारित होता है और फिर उसके अनुसार अपनी request की संरचना करनी चाहिए।
reCAPTCHA Enterprise
reCAPTCHA Enterprise, Google के reCAPTCHA सिस्टम का उन्नत संस्करण है। यह v2 और v3 दोनों मोड में काम कर सकता है और वेबसाइट एडमिनिस्ट्रेटर को अतिरिक्त नियंत्रण देता है, जिसमें यह आकलन और रिपोर्ट करने की क्षमता शामिल है कि कोई इंटरैक्शन इंसानी था या स्वचालित।
reCAPTCHA Enterprise कैसे हल करें?
पहला कदम यह निर्धारित करना है कि website reCAPTCHA के Enterprise संस्करण का उपयोग कर रही है या नहीं।
reCAPTCHA Enterprise के मुख्य संकेतकों में शामिल हैं:
पेज लोड होता है
enterprise.jsके बजायapi.js, उदाहरण के लिए:<script src="https://recaptcha.net/recaptcha/enterprise.js" async defer></script>
वेबसाइट का JavaScript कोड कॉल करता है
grecaptcha.enterprise.METHODके बजायgrecaptcha.METHOD
इसके बाद तय करें कि कौन सा implementation इस्तेमाल हो रहा है: v2, Invisible v2, या v3। इसे आम तौर पर यह विश्लेषण करके पहचाना जा सकता है कि widget कैसे render होता है और page पर कैसे व्यवहार करता है।
सही इम्प्लीमेंटेशन तय करने के लिए नीचे दिए flowchart का पालन करें। यह अधिकांश मामलों में लागू होता है।

कैप्चा parameters को उसी तरह पहचानें जैसा reCAPTCHA v2 या v3 के लिए बताया गया है।
v2 Enterprise implementations के लिए, कुछ अतिरिक्त वैकल्पिक data हो सकता है। ज़्यादातर मामलों में, यह एक custom string होता है जो में परिभाषित होता है s या data-s parameter। अगर मौजूद हो, तो इस मान को अपनी रिक्वेस्ट में इसका इस्तेमाल करते हुए शामिल करें data-s पैरामीटर।
POST और GET request parameters की सूची यहाँ उपलब्ध है: reCAPTCHA V2 POST और GET request पैरामीटर
v3 Enterprise कार्यान्वयनों के लिए, आपको इसकी भी ज़रूरत हो सकती है action value। इसे ढूँढने के लिए, website’s के JavaScript code का निरीक्षण करें और खोजें grecaptcha.enterprise.execute() कॉल। यह action पैरामीटर आमतौर पर इस फंक्शन के भीतर पास किया जाता है। ध्यान रखें कि action वैकल्पिक है और कुछ मामलों में undefined हो सकता है।
POST और GET request parameters की सूची यहाँ उपलब्ध है: reCAPTCHA V3 POST और GET request parameters
जब आप अपनी request सबमिट करते हैं /in.php endpoint, अतिरिक्त parameter शामिल करें: enterprise=1
उसके बाद, CapSkip API के साथ उसी तरह इंटरैक्ट करें जैसे reCAPTCHA v2 या v3 हल करते समय करते हैं। जब token लौट आता है, तो उसे टारगेट वेबसाइट को उसके इम्प्लीमेंटेशन के अनुसार सबमिट करें।
Cloudflare Turnstile
Cloudflare Turnstile, Cloudflare द्वारा विकसित एक आधुनिक कैप्चा विकल्प है। यह पारंपरिक विज़ुअल challenge पर निर्भर हुए बिना यह सत्यापित करता है कि विज़िटर इंसान है या नहीं। Turnstile एक स्टैंडअलोन विजेट के रूप में या किसी challenge पेज के हिस्से के रूप में दिख सकता है, और यह कम या बिना किसी यूज़र इंटरैक्शन के काम करता है।
दो आम Turnstile implementations हैं:
1. स्टैंडअलोन Turnstile Widget
एक standalone Turnstile widget सीधे किसी website page पर एम्बेड होता है, जो आमतौर पर किसी form को स्वचालित सबमिशन से बचाता है। इस मामले में:
इसे निकालें
sitekeyfrom the page.इसे पूरे के साथ CapSkip API को भेजें
pageurl.token प्राप्त करने के बाद, इसे इसमें डालें the
cf-turnstile-responseफ़ील्ड।कुछ इम्प्लीमेंटेशन में, टोकन को इसमें भी रखने की आवश्यकता हो सकती है
g-recaptcha-responseफ़ील्ड।अगर में कोई callback परिभाषित है
turnstile.render()कॉन्फ़िगरेशन, इसे लौटाए गए token के साथ निष्पादित करें।
फिर form को हमेशा की तरह submit करें।
2. Cloudflare Challenge Page पर Turnstile
यह तब होता है जब वेबसाइट Cloudflare के ज़रिए proxied होती है और access देने से पहले एक Turnstile challenge पेज प्रस्तुत करती है। इस स्थिति में, आपको निम्नलिखित parameters निकालने होंगे:
cDatachlPageDataaction
ये मान आपकी API रिक्वेस्ट में शामिल होने ही चाहिए। इसके अलावा, आपको यह इस्तेमाल करना ही होगा User-Agent token सबमिट करते समय CapSkip API द्वारा लौटाया गया value।
आवश्यक Parameters कैसे निकालें?
आवश्यक parameters निकालने के लिए, आप override कर सकते हैं turnstile.render मेथड और उस पर कॉल होने पर पास किए गए आर्गुमेंट्स को इंटरसेप्ट करें। उदाहरण के लिए, निम्नलिखित JavaScript कोड को पेज में इंजेक्ट करें। पैरामीटर्स को सफलतापूर्वक कैप्चर करने के लिए स्क्रिप्ट को Turnstile विजेट लोड होने से पहले एक्ज़ीक्यूट किया जाना चाहिए।
const i = setInterval(()=>{
if (window.turnstile) {
clearInterval(i)
window.turnstile.render = (a,b) => {
let p = {
method: "turnstile",
key: "YOUR_API_KEY",
sitekey: b.sitekey,
pageurl: window.location.href,
data: b.cData,
pagedata: b.chlPageData,
action: b.action,
userAgent: navigator.userAgent,
json: 1
}
console.log(JSON.stringify(p))
window.tsCallback = b.callback
return 'foo'
}
}
},50)POST Request Parameters की सूची
| पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| method | स्ट्रिंग | हां | turnstile – एक Cloudflare Turnstile रिक्वेस्ट निर्दिष्ट करता है। |
| sitekey | स्ट्रिंग | हां | इसका value data-sitekey टारगेट पेज पर पाया गया पैरामीटर। |
| pageurl | स्ट्रिंग | हां | उस page का पूरा URL जहाँ Turnstile challenge स्थित है। |
| action | स्ट्रिंग | नहीं |
में परिभाषित वैकल्पिक action value data-action attribute या इसे पास किया गया turnstile.render(). |
| data | स्ट्रिंग | नहीं |
इसका मान cData पास किया गया turnstile.render() या इसमें परिभाषित data-cdata attribute। |
| pagedata | स्ट्रिंग | नहीं |
इसका मान chlPageData पास किया गया turnstile.render(). |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 – response सादे टेक्स्ट के रूप में लौटाया जाता है। 1 – response को JSON format में लौटाया जाता है। |
| proxy | स्ट्रिंग | नहीं | प्रॉक्सी पता। IP authentication के लिए format: IP:PORT (उदाहरण: 123.123.123.123:3128). login/password authentication के लिए format: login:password@IP:PORT |
| proxytype | स्ट्रिंग | नहीं | प्रॉक्सी का प्रकार। समर्थित values: HTTP, HTTPS, SOCKS5, SOCKS5H। डिफ़ॉल्ट: HTTP जब proxy प्रदान किया गया है पर proxytype छोड़ दिया जाता है। |
Turnstile सबमिट करें (standalone):
curl -X POST -d "key=YOUR_API_KEY&method=turnstile&sitekey=0x4AAAAAAABUYP0XeMJF0xoy&pageurl=https://example.com" http://127.0.0.1:8080/in.php
Turnstile सबमिट करें (challenge – वैकल्पिक action, data, pagedata):
curl -X POST -d "key=YOUR_API_KEY&method=turnstile&sitekey=0x4AAAAAAABUYP0XeMJF0xoy&pageurl=https://example.com&action=managed&data=...&pagedata=..." http://127.0.0.1:8080/in.php
अगर request सफल होती है, तो CapSkip कैप्चा ID को plain text के रूप में लौटाएगा: OK|12345
अगर json=1 पैरामीटर निर्दिष्ट किया गया है, तो response को JSON format में लौटाया जाएगा:
{
"status":1,
"request":"12345"
}अगर कोई error होता है, तो CapSkip एक error code लौटाएगा।
परिणाम प्राप्त करने के लिए लौटाई गई ID का उपयोग करें /res.php API का endpoint।
GET request parameters की सूची
| GET पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हां | आपकी CapSkip API key। |
| action | स्ट्रिंग | हां | get – सबमिट किए गए कैप्चा के लिए answer प्राप्त करें। |
| id | पूर्णांक | हां |
इसके द्वारा लौटाया गया कैप्चा ID in.php. |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं |
0 - response को plain text के रूप में लौटाया जाता है। 1 - response को JSON format में लौटाया जाता है, जिसमें शामिल है userAgent value। |
Cloudflare Turnstile के लिए सॉल्वर एक विशिष्ट browser User-Agent का उपयोग करता है, और token सबमिट करते समय आपको वही User-Agent भेजना ज़रूरी है। इसके साथ json=1 response में शामिल है एक userAgent field। plain text मोड में, वही value यहाँ से पढ़ें X-Turnstile-User-Agent रिस्पॉन्स हेडर।
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=CAPTCHA_ID"
GeeTest v3 Slider, GeeTest द्वारा विकसित एक इंटरैक्टिव कैप्चा है। यह तेज़ और सहज सत्यापन अनुभव प्रदान करते हुए मनुष्यों को बॉट्स से अलग करने के लिए एक slider challenge के माध्यम से उपयोगकर्ताओं का सत्यापन करता है।
CapSkip से GeeTest v3 कैप्चा हल करने के लिए, आपको पहले target website से ज़रूरी कैप्चा parameters प्राप्त करने होंगे। ज़रूरी parameters ये हैं:
- gt: Public website key (static)
- challenge: Dynamic challenge value
- api_server: GeeTest API सर्वर डोमेन (वैकल्पिक)
ये values आम तौर पर तब उपलब्ध होती हैं जब website GeeTest को इनिशियलाइज़ करती है।
महत्वपूर्ण: एक नया
challengeवैल्यू हर हल request के लिए प्राप्त करनी होती है। एक बार जब कैप्चा पेज पर लोड हो जाता है, तो पिछलाchallengeअमान्य हो जाता है। आपको website’s के network requests का निरीक्षण करके उस request की पहचान करनी चाहिए जो एक नया generate करती हैchallengevalue और CapSkip को हर हल request सबमिट करने से पहले वह request करें।
POST Request Parameters की सूची
| पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हाँ* | आपकी CapSkip API key। सिर्फ़ तब ज़रूरी जब API Key सत्यापन सक्षम है। |
| method | स्ट्रिंग | हां | होना ही चाहिए geetest। निर्दिष्ट करता है कि आप एक GeeTest v3 कैप्चा सबमिट कर रहे हैं। |
| gt | स्ट्रिंग | हां | The gt टारगेट वेबसाइट से प्राप्त वैल्यू। |
| challenge | स्ट्रिंग | हां | The challenge लक्षित वेबसाइट से प्राप्त value। हर हल request के लिए एक नई value प्राप्त करनी होगी। |
| pageurl | स्ट्रिंग | हां | GeeTest कैप्चा वाले पेज का पूरा URL। |
| api_server | स्ट्रिंग | नहीं | लक्ष्य वेबसाइट द्वारा उपयोग किया जाने वाला GeeTest API server domain (उदाहरण के लिए api.geetest.com या api-na.geetest.com). |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं | 0 response को plain text के रूप में लौटाता है। 1 response को JSON के रूप में लौटाता है। |
| proxy | स्ट्रिंग | नहीं | प्रॉक्सी पता। IP authentication के लिए format: IP:PORT (उदाहरण: 123.123.123.123:3128). login/password authentication के लिए format: login:password@IP:PORT. |
| proxytype | स्ट्रिंग | नहीं | प्रॉक्सी का प्रकार। समर्थित values: HTTP, HTTPS, SOCKS5, SOCKS5H। डिफ़ॉल्ट: HTTP जब proxy प्रदान किया गया है पर proxytype छोड़ दिया जाता है। |
अपने CapSkip API endpoint पर एक HTTP GET या POST request सबमिट करें (/in.php) के साथ method=geetest। पिछले चरण में प्राप्त आवश्यक GeeTest parameters को कैप्चा वाले पेज के पूर्ण URL के साथ शामिल करें।
curl -X POST \ -d "key=YOUR_API_KEY" \ -d "method=geetest" \ -d "gt=f1ab2cdefa3456789012345b6c78d90e" \ -d "challenge=12345678abc90123d45678ef90123a456b" \ -d "pageurl=https://www.example.com/" \ -d "api_server=api-na.geetest.com" \ http://127.0.0.1:8080/in.php
अगर सब कुछ सफल होता है, तो CapSkip कैप्चा ID को सादे text के रूप में लौटाएगा: OK|212
अगर json=1 पैरामीटर निर्दिष्ट किया गया है, तो response को JSON format में लौटाया जाएगा:
{
"status": 1,
"request": "212"
}अन्यथा, CapSkip एक उपयुक्त error code लौटाएगा।
लगभग प्रतीक्षा करें 5 सेकंड, फिर एक HTTP GET request सबमिट करें res.php परिणाम प्राप्त करने के लिए एंडपॉइंट।
GET request parameters की सूची
| पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| key | स्ट्रिंग | हाँ* | आपकी CapSkip API key। सिर्फ़ तब ज़रूरी जब API Key सत्यापन सक्षम है। |
| action | स्ट्रिंग | हां | निर्दिष्ट करें get कैप्चा का हल प्राप्त करने के लिए। |
| id | पूर्णांक | हां | इसके द्वारा लौटाई गई CAPTCHA ID in.php request। |
| json | पूर्णांक डिफ़ॉल्ट: 0 | नहीं | 0 response को plain text के रूप में लौटाता है। 1 response को JSON के रूप में लौटाता है। |
curl "http://127.0.0.1:8080/res.php?key=YOUR_API_KEY&action=get&id=212&json=1"
अगर कैप्चा सफलतापूर्वक हल हो गया है, तो CapSkip समाधान को JSON format में लौटाएगा:
{
"status": 1,
"request": "{\"geetest_challenge\":\"1a2b3456cd67890e12345fab678901c2de\",\"geetest_validate\":\"09fe8d7c6ba54f32e1dcb0a9fedc8765\",\"geetest_seccode\":\"12fe3d4c56789ba01f2e345d6789c012|jordan\"}"
}अगर कैप्चा अभी तक हल नहीं हुआ है, तो CapSkip लौटाएगा: CAPCHA_NOT_READY
5 सेकंड इंतज़ार करें और request दोहराएँ। अगर कोई त्रुटि होती है, तो CapSkip एक उपयुक्त error code लौटाएगा। टारगेट वेबसाइट को अपनी request सबमिट करते समय निम्नलिखित फ़ील्ड का इस्तेमाल करके CapSkip द्वारा लौटाए गए मानों का उपयोग करें:
geetest_challengegeetest_validategeetest_seccode
प्रॉक्सी का उपयोग
reCAPTCHA v2, v3, Invisible, Enterprise और Cloudflare के लिए, आप हर task के साथ एक प्रॉक्सी भेज सकते हैं। CapSkip उस कैप्चा को CapSkip application में कॉन्फ़िगर किए गए proxy pool का इस्तेमाल करने के बजाय उस प्रॉक्सी के ज़रिए हल करेगा।
यह तब उपयोगी है जब लक्षित वेबसाइट जाँचती है कि कैप्चा token उसी IP address से बना है जिससे आपकी अपनी requests आती हैं, उदाहरण के लिए, Cloudflare के पीछे की साइटें, सख़्त reCAPTCHA scoring, या geo-restricted पेज।
POST Request Parameters की सूची
| पैरामीटर | Type | आवश्यक | विवरण |
|---|---|---|---|
| proxy | स्ट्रिंग | नहीं | प्रॉक्सी पता। IP authentication के लिए format: IP:PORT (उदाहरण: 123.123.123.123:3128). login/password authentication के लिए format: login:password@IP:PORT |
| proxytype | स्ट्रिंग | नहीं | प्रॉक्सी का प्रकार। समर्थित values: HTTP, HTTPS, SOCKS5, SOCKS5H। डिफ़ॉल्ट: HTTP जब proxy प्रदान किया गया है पर proxytype छोड़ दिया जाता है। |
एरर कोड
| कोड | अर्थ |
|---|---|
ERROR_KEY_DOES_NOT_EXIST | अमान्य API key। |
ERROR_WRONG_USER_KEY | API key गायब या खाली है। |
ERROR_WRONG_METHOD | अमान्य HTTP method या action पैरामीटर। |
ERROR_WRONG_ID_FORMAT | अमान्य कैप्चा ID फॉर्मैट। |
ERROR_BAD_PARAMETERS | आवश्यक parameters गायब या अमान्य हैं। |
ERROR_UPLOAD | कोई image data नहीं दिया गया या अपलोड नाकाम रहा। |
ERROR_INVALID_IMAGE | अमान्य image format या दूषित image डेटा। |
ERROR_INVALID_BASE64 | अमान्य base64 एन्कोडिंग। |
ERROR_TOO_BIG_CAPTCHA_FILESIZE | इमेज का साइज़ 600 kB से अधिक है या आयाम 1000px से अधिक हैं। |
ERROR_CAPTCHA_UNSOLVABLE | कैप्चा हल करने में विफल। एक नया task सबमिट करें और पुनः प्रयास करें। |
ERROR_GOOGLEKEY | Invalid googlekey पैरामीटर। |
ERROR_PAGEURL | Invalid pageurl पैरामीटर। |
CAPCHA_NOT_READY | कैप्चा अभी भी प्रोसेस हो रहा है। पोल करते रहें। |
| (खाली response) | परिणाम पहले ही प्राप्त किया जा चुका है, या ID मौजूद नहीं है। |
