n8n से CAPTCHA हल करने वाली API को कॉल करें
टास्क बनाने के लिए n8n के HTTP Request नोड का उपयोग करें, फिर उसकी स्थिति के आधार पर शाखा चुनें। यदि वह अभी भी लंबित है या हल किया जा रहा है, तो प्रतीक्षा करें और उसी टास्क ID को प्राप्त करें—दूसरा POST न भेजें।
इस पेज पर
साइट और क्रेडेंशियल सेट अप करें
- 1.
साइट प्रोफ़ाइल सक्रिय करें
solvethree कंसोल में लक्ष्य होस्टनाम सेट अप करें और सुनिश्चित करें कि उसकी प्रोफ़ाइल आपके वर्कस्पेस के लिए सक्रिय है। टास्क में होस्टनाम और एक्शन भेजने से प्रोफ़ाइल नहीं बनती।
- 2.
n8n में Header Auth क्रेडेंशियल बनाएँ
इसे ऐसा कॉन्फ़िगर करें कि यह
Authorizationहेडर भेजे, जिसका मानBearerके बाद आपकी वर्कस्पेस API कुंजी हो। कुंजी को क्रेडेंशियल में रखें, टास्क JSON में नहीं।
निर्माण अनुरोध कॉन्फ़िगर करें
HTTP Request नोड का नाम Create task रखें। मूल टास्क ID प्राप्त करने के लिए पोलिंग नोड इसी नाम का संदर्भ लेगा।
| फ़ील्ड | सेटिंग |
|---|---|
| विधि | POST |
| URL | https://api.solvethree.com/v1/tasks |
| प्रमाणीकरण | सामान्य क्रेडेंशियल प्रकार |
| सामान्य प्रमाणीकरण प्रकार | Header Auth; अपना बनाया हुआ क्रेडेंशियल चुनें |
| क्वेरी पैरामीटर भेजें | सक्षम करें; waitMs जोड़ें और उसका मान 15000 रखें |
| बॉडी भेजें | सक्षम करें; JSON चुनें और नीचे दी गई बॉडी का उपयोग करें |
{
"site": "accounts.example.com",
"action": "login",
"proxy": "http://user:[email protected]:8080",
"requestId": "example_login_001"
}site, action और proxy को अपने अनुरोध के होस्टनाम, एक्शन और प्रॉक्सी से बदलें। proxy या proxyCandidates में से ठीक एक भेजें; यह उदाहरण एक प्रॉक्सी का उपयोग करता है। type या url न जोड़ें। डिफ़ॉल्ट reCAPTCHA प्रकार Enterprise v3 है।
हर नए तार्किक टास्क के लिए उदाहरण के requestId को एक अद्वितीय मान से बदलें। टाइमआउट के बाद इस टास्क को पुनः प्राप्त करने की आवश्यकता हो, तो उस मान को अपरिवर्तित रखें। इसमें 1–64 ASCII अक्षर, अंक, अंडरस्कोर या हाइफ़न स्वीकार किए जाते हैं।
waitMs को URL क्वेरी में रखें, JSON बॉडी में नहीं। नेटवर्क ओवरहेड के लिए HTTP अनुरोध का टाइमआउट माँगी गई 15-सेकंड की प्रतीक्षा से अधिक रखें; 30 सेकंड एक उचित शुरुआती कॉन्फ़िगरेशन है, समाधान के समय की गारंटी नहीं। Header Auth क्रेडेंशियल प्रमाणीकरण प्रदान करता है, इसलिए उसे हेडर भेजें के अंतर्गत दोहराने की आवश्यकता नहीं है।
HTTP सफलता नहीं, स्थिति के आधार पर शाखा चुनें
टास्क पेलोड की जाँच करने से पहले असफल HTTP प्रतिक्रियाओं को संभालें। सफल प्रतिक्रिया के लिए IF या Switch नोड जोड़ें और {{ $json.status }} की जाँच करें।
| स्थिति | अगली कार्रवाई |
|---|---|
| तैयार | पोलिंग लूप से बाहर निकलें और समाधान का उपयोग करें। |
| failed | पोलिंग रोकें। निदान के लिए errorCode और error दर्ज करें। |
| pending या solving | पोलिंग की समय-सीमा जाँचें, फिर प्रतीक्षा करके मौजूदा टास्क को GET से प्राप्त करें। |
तैयार reCAPTCHA टास्क के लिए लौटाए गए टोकन को लौटाई गई userAgent और secChUa पहचान तथा सफल हुई प्रॉक्सी के साथ सबमिट करें। तैयार टास्क का अर्थ है कि समाधान जनरेट हुआ; इससे यह सिद्ध नहीं होता कि वेबसाइट ने बाद का अनुरोध स्वीकार कर लिया।
असफल समाधानों का शुल्क वापस कर दिया जाता है। अपरिवर्तित इनपुट के साथ फिर से प्रयास करने या वर्कस्पेस में अपर्याप्त क्रेडिट मान लेने के बजाय बताई गई त्रुटि का निदान करें।
प्रतीक्षा करें, फिर मूल ID को GET से प्राप्त करें
- 1.
एक निश्चित समय-सीमा सहेजें
Create task चलने से पहले वर्कफ़्लो में पोलिंग की समय-सीमा सहेजें—उदाहरण के लिए, निर्माण शुरू होने के दो मिनट बाद। यह आपके वर्कफ़्लो की रुकने की नीति है, solvethree API की सीमा नहीं। समय-सीमा को HTTP प्रतिक्रिया से बाहर रखें, ताकि बाद की प्रतिक्रियाएँ उसे ओवरराइट न करें।
- 2.
हर पोलिंग चक्र से पहले जाँच करें
लंबित या हल किए जा रहे टास्क के लिए IF नोड से वर्तमान समय की तुलना सहेजी गई समय-सीमा से करें। यदि समय-सीमा समाप्त हो गई है, तो लूप समाप्त करें और टास्क ID बनाए रखें। अन्यथा, Wait नोड से दो सेकंड रुकें, फिर GET से पहले समय-सीमा दोबारा जाँचें।
- 3.
मौजूदा टास्क प्राप्त करें
नीचे दी गई सेटिंग के साथ दूसरा HTTP Request नोड कॉन्फ़िगर करें। उसकी प्रतिक्रिया को वापस उसी स्थिति-आधारित शाखा से गुज़ारें। पोलिंग शाखा को कभी भी वापस Create task पर न भेजें।
| फ़ील्ड | सेटिंग |
|---|---|
| विधि | GET |
| URL | https://api.solvethree.com/v1/tasks/{{ $('Create task').item.json.id }} |
| प्रमाणीकरण | सामान्य क्रेडेंशियल प्रकार |
| सामान्य प्रमाणीकरण प्रकार | Header Auth; वही क्रेडेंशियल चुनें |
| क्वेरी पैरामीटर भेजें | सक्षम करें; waitMs जोड़ें और उसका मान 15000 रखें |
| बॉडी भेजें | अक्षम करें |
टास्क ID का एक्सप्रेशन {{ $('Create task').item.json.id }} है। यह नामित निर्माण नोड से id पढ़ता है, भले ही नवीनतम आइटम में पोलिंग प्रतिक्रिया या अन्य वर्कफ़्लो डेटा हो। एक्सप्रेशन में नोड का नाम अपने वर्कफ़्लो के अनुरूप रखें।
GET अधिकतम 15 सेकंड की प्रतीक्षा स्वीकार करता है। इस HTTP अनुरोध को भी निर्माण अनुरोध जितना ही अतिरिक्त टाइमआउट दें। समय-सीमा नए पोलिंग प्रयास रोकती है; पहले से चल रहा अनुरोध उसके बाद पूरा हो सकता है।
n8n के बाहर समतुल्य GET अनुरोध यह है:
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"दूसरा टास्क बनाए बिना टाइमआउट हुए POST की रिकवरी करें
कनेक्शन टाइमआउट यह साबित नहीं करता कि निर्माण असफल हुआ। यदि आपको ID मिली है, तो उस टास्क को प्राप्त करें। यदि नहीं मिली, तो मौजूदा टास्क को पुनः प्राप्त करने के लिए उन्हीं टास्क इनपुट और उसी requestId के साथ POST दोहराएँ। अलग टास्क इनपुट के साथ उस ID का दोबारा उपयोग करने पर टकराव होता है।
इसी तरह, पोलिंग की समय-सीमा तक पहुँचना स्थानीय रूप से रुकने की शर्त है, टास्क की असफल स्थिति नहीं। मूल ID बनाए रखें, ताकि बाद का निष्पादन दूसरे समाधान का भुगतान करने के बजाय उसी टास्क को प्राप्त कर सके।
स्रोत और API संदर्भ
अपना पहला टास्क चलाएँ।
$5 वर्कस्पेस क्रेडिट के साथ शुरुआत करें।