
Rajinder Singh
Deep Learning Researcher

GeeTest V4, GeeTest के व्यवहार CAPTCHA सिस्टम की नवीनतम पीढ़ी है, जिसका उपयोग बढ़ती संख्या में वेबसाइटें लॉगिन फ़ॉर्म, पंजीकरण पृष्ठों और डेटा एंडपॉइंट्स की सुरक्षा के लिए करती हैं। पुरानी CAPTCHA प्रणालियों के विपरीत जो छवि पहेलियों पर निर्भर करती हैं, GeeTest V4 अनुकूली चुनौतियों और व्यवहार विश्लेषण का उपयोग करता है - जिससे यह स्वचालन वर्कफ़्लो में सामना की जाने वाली सबसे परिष्कृत सुरक्षा में से एक बन जाता है।
क्या होगा यदि आप अपने n8n वर्कफ़्लो के भीतर GeeTest V4 को स्वचालित रूप से हल कर सकते हैं - चाहे आप एक पुन: प्रयोज्य सॉल्वर एपीआई बना रहे हों, एक कैप्चा-संरक्षित साइट को स्क्रैैप कर रहे हों, या एक लॉगिन फ़ॉर्म को स्वचालित कर रहे हों - यह सब पारंपरिक कोड की एक भी पंक्ति लिखे बिना?
इस गाइड में, आप GeeTest V4 चुनौतियों को मांग पर हल करने के लिए n8n (एक विज़ुअल वर्कफ़्लो ऑटोमेशन टूल) को CapSolver (एक AI-संचालित कैप्चा सॉल्विंग सेवा) के साथ जोड़ना सीखेंगे - या तो एक स्टैंडअलोन एपीआई एंडपॉइंट के रूप में या किसी भी स्वचालन वर्कफ़्लो के भीतर एक कदम के रूप में।
आप क्या बनाएंगे:
सॉल्वर एपीआई — पुन: प्रयोज्य एंडपॉइंट्स जिन्हें आपके अन्य उपकरण कॉल कर सकते हैं:
प्रत्यक्ष-उपयोग वर्कफ़्लो — CapSolver को बड़े स्वचालन के भीतर एक कदम के रूप में एम्बेड किया गया है:
GeeTest V4, GeeTest के CAPTCHA प्लेटफ़ॉर्म का नवीनतम संस्करण है। यह एक सरलीकृत एकीकरण मॉडल और बढ़ी हुई व्यवहार पहचान के साथ पुराने V3 सिस्टम को प्रतिस्थापित करता है। हल करने के दृष्टिकोण से, V4 V3 की तुलना में संरचनात्मक रूप से सरल है - इसे V3 को आवश्यक गतिशील चुनौती प्रवाह के बजाय केवल एक स्थिर पैरामीटर (captchaId) की आवश्यकता होती है।

GeeTest V3 से मुख्य अंतर:
| विशेषता | GeeTest V3 | GeeTest V4 |
|---|---|---|
| मुख्य पैरामीटर | gt + गतिशील challenge |
captchaId (स्थिर) |
| चुनौती प्राप्त करना | आवश्यक - पहले GeeTest API को कॉल करना होगा | आवश्यक नहीं - captchaId स्थिर है |
| समाधान फ़ील्ड | 3 (challenge, validate, seccode) |
5 (captcha_id, lot_number, pass_token, gen_time, captcha_output) |
| विजेट स्क्रिप्ट | gt.js |
gcaptcha4.js |
| कार्य प्रकार | GeeTestTask / GeeTestTaskProxyLess |
GeeTestTaskProxyLess केवल |
V4 को स्वचालित करना क्यों सरल है:
captchaIdपृष्ठ स्रोत में एम्बेडेड है और कभी नहीं बदलता है - इसे एक बार ढूंढें, इसे हमेशा के लिए उपयोग करें। गतिशील चुनौती प्राप्त करने का मतलब है आपके वर्कफ़्लो में कम नोड्स।
शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित हैं:
महत्वपूर्ण: सुनिश्चित करें कि आपके CapSolver खाते में पर्याप्त शेष राशि है। GeeTest V4 सॉल्विंग कार्य उपयोग के आधार पर क्रेडिट का उपभोग करते हैं।
CapSolver n8n में एक आधिकारिक एकीकरण के रूप में उपलब्ध है - किसी समुदाय नोड इंस्टॉलेशन की आवश्यकता नहीं है। आप इसे अपने वर्कफ़्लो बनाते समय सीधे नोड पैनल में पा सकते हैं।
चूंकि यह एक आधिकारिक एकीकरण है, आपको n8n में एक क्रेडेंशियल बनाना होगा ताकि CapSolver नोड आपके खाते के साथ प्रमाणित हो सके।
अपने n8n इंस्टेंस पर जाएं और सेटिंग्स > क्रेडेंशियल पर नेविगेट करें। आपको यहां अपने सभी कॉन्फ़िगर किए गए क्रेडेंशियल दिखाई देंगे।

सभी (डिफ़ॉल्ट) पर सेट रहने देंn8n स्वचालित रूप से कनेक्शन का परीक्षण करेगा। आपको एक हरा "कनेक्शन सफलतापूर्वक परीक्षण किया गया" बैनर दिखाई देना चाहिए जो पुष्टि करता है कि आपकी एपीआई कुंजी वैध है।

महत्वपूर्ण: आपके वर्कफ़्लो में प्रत्येक CapSolver नोड इस क्रेडेंशियल को संदर्भित करेगा। आपको इसे केवल एक बार बनाने की आवश्यकता है - आपके सभी सॉल्वर वर्कफ़्लो एक ही क्रेडेंशियल साझा करेंगे।
अब आप अपना GeeTest V4 सॉल्वर वर्कफ़्लो बनाने के लिए तैयार हैं!
इससे पहले कि आप GeeTest V4 CAPTCHA को हल कर सकें, आपको इसका captchaId खोजना होगा - एकमात्र आवश्यक पैरामीटर। GeeTest V3 (जिसे एक गतिशील challenge प्राप्त करने की आवश्यकता होती है) के विपरीत, V4 का captchaId स्थिर है और सीधे पृष्ठ स्रोत में एम्बेडेड है।
captcha_id या captchaId खोजेंgcaptcha4.js के संदर्भों की तलाश करें - GeeTest V4 विजेट स्क्रिप्टcaptchaId आमतौर पर विजेट को इनिशियलाइज़ करते समय एक कॉन्फ़िगरेशन पैरामीटर के रूप में पास किया जाता है<!-- उदाहरण: पृष्ठ स्रोत में GeeTest V4 इनिशियलाइज़ेशन -->
<script>
initGeetest4({
captchaId: 'e392e1d7fd421dc63325744d5a2b9c73',
product: 'bind'
});
</script>
gcaptcha4 या geetest द्वारा अनुरोधों को फ़िल्टर करेंgcaptcha4.geetest.com पर अनुरोधों की तलाश करें - captcha_id पैरामीटर क्वेरी स्ट्रिंग में होगाV4 का मुख्य लाभ:
captchaIdस्थिर है - एक बार जब आप इसे ढूंढ लेते हैं, तो आप इसे अनिश्चित काल तक उपयोग कर सकते हैं बिना हर बार एक नई चुनौती प्राप्त करने की आवश्यकता के। यह V4 वर्कफ़्लो को टर्नस्टाइल वर्कफ़्लो के समान संरचनात्मक रूप से बनाता है।
यह वर्कफ़्लो एक POST एपीआई एंडपॉइंट बनाता है जो GeeTest V4 पैरामीटर स्वीकार करता है और एक हल किया गया टोकन सेट लौटाता है।

वर्कफ़्लो में चार नोड्स होते हैं:
$json.error खाली नहीं है){"error": "..."}| सेटिंग | मान |
|---|---|
| HTTP विधि | POST |
| पथ | solver-geetest-v4 |
| जवाब दें | रिस्पांस नोड |
यह एक एंडपॉइंट बनाता है: https://your-n8n-instance.com/webhook/solver-geetest-v4
| पैरामीटर | मान | विवरण |
|---|---|---|
| ऑपरेशन | GeeTest V4 |
GeeTest V4 पर सेट होना चाहिए |
| प्रकार | GeeTestTaskProxyLess |
यह एकमात्र उपलब्ध कार्य प्रकार है (कोई प्रॉक्सी वेरिएंट नहीं) |
| वेबसाइट URL | {{ $json.body.websiteURL }} |
GeeTest V4 विजेट वाले पृष्ठ का URL |
| कैप्चा आईडी | {{ $json.body.captchaId }} |
स्थिर GeeTest V4 कैप्चा आईडी |
| GeeTest API सर्वर सबडोमेन | (वैकल्पिक) | यदि साइट एक का उपयोग करती है तो कस्टम GeeTest API सर्वर |
इस नोड में अपने CapSolver क्रेडेंशियल का चयन करें। वैकल्पिक
geetestApiServerSubdomainपैरामीटर की शायद ही कभी आवश्यकता होती है - इसे तभी जोड़ें जब डिफ़ॉल्ट GeeTest सर्वर आपकी लक्ष्य साइट के लिए काम न करे।
| सेटिंग | मान |
|---|---|
| शर्त | ={{ $json.error }} खाली नहीं है |
| सही शाखा | त्रुटि वेबहुक को जवाब दें नोड पर रूट करता है |
| गलत शाखा | सफलता वेबहुक को जवाब दें नोड पर रूट करता है |
सफलता शाखा (CapSolver त्रुटि? का गलत आउटपुट):
| सेटिंग | मान |
|---|---|
| के साथ जवाब दें | JSON |
| प्रतिक्रिया बॉडी | ={{ JSON.stringify($json.data) }} |
अपने वेबहुक एंडपॉइंट पर एक POST अनुरोध भेजें:
curl -X POST https://your-n8n-instance.com/webhook/solver-geetest-v4 \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/login",
"captchaId": "e392e1d7fd421dc63325744d5a2b9c73"
}'
अपेक्षित प्रतिक्रिया:
{
"taskId": "abc123...",
"solution": {
"captcha_id": "e392e1d7fd421dc63325744d5a2b9c73",
"lot_number": "7c18c041a6ed4e...",
"pass_token": "d88ce40c0a5c5a18...",
"gen_time": "1709123456",
"captcha_output": "dGVzdF9jYXB0Y2hh..."
},
"status": "ready"
}
नीचे दिए गए JSON को कॉपी करें और इसे n8n में मेनू > JSON से आयात करें के माध्यम से आयात करें:
{
"nodes": [
{
"parameters": {
"content": "## GeeTest V4 — सॉल्वर एपीआई\n\n### यह कैसे काम करता है\n\n1. वेबहुक के माध्यम से एक सॉल्वर अनुरोध प्राप्त करता है।\n2. GeeTest V4 सॉल्वर का उपयोग करके अनुरोध को संसाधित करता है।\n3. मूल्यांकन करता है कि हल करने की प्रक्रिया के दौरान कोई त्रुटि हुई है या नहीं।\n4. यदि कोई त्रुटि हुई है तो त्रुटि संदेश के साथ वेबहुक को जवाब देता है।\n5. यदि कोई त्रुटि नहीं हुई है तो वेबहुक को एक सफल प्रतिक्रिया प्रदान करता है।\n\n### सेटअप चरण\n\n- [ ] आने वाले अनुरोध विवरण के साथ वेबहुक नोड को कॉन्फ़िगर करें\n- [ ] उपयुक्त क्रेडेंशियल के साथ GeeTest V4 सॉल्वर नोड सेट करें\n\n### अनुकूलन\n\n'CapSolver त्रुटि?' नोड में अतिरिक्त शर्तों को त्रुटि प्रबंधन आवश्यकताओं के अनुसार समायोजित किया जा सकता है।",
"width": 480,
"height": 672
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-800,
-208
],
"id": "ab19b274-21ce-4939-bdb7-bcf9942e1116",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## अनुरोध प्राप्त करें और संसाधित करें\n\nएक अनुरोध प्राप्त करता है और इसे सॉल्वर को भेजता है।",
"width": 496,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-240,
-112
],
"id": "0037b174-7efe-48d7-a71d-41c0096f60d4",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## त्रुटि प्रबंधन और प्रतिक्रिया\n\nत्रुटियों की जांच करता है और तदनुसार जवाब देता है।",
"width": 496,
"height": 480,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
352,
-208
],
"id": "f219ff43-c594-4726-a358-80db0fb2cefa",
"name": "Sticky Note2"
},
{
"parameters": {
"httpMethod": "POST",
"path": "solver-geetest-v4",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-192,
0
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40001",
"name": "Receive Solver Request",
"webhookId": "a1b2c3d4-0001-0001-0001-a1b2c3d40002",
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "={{ $json.body.websiteURL }}",
"captchaId": "={{ $json.body.captchaId }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
112,
0
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40003",
"name": "GeeTest V4",
"onError": "continueRegularOutput",
"credentials": {
"capSolverApi": {
"id": "BeBFMAsySMsMGeE9",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose",
"version": 2
},
"conditions": [
{
"id": "capsolver-err-001",
"leftValue": "={{ $json.error }}",
"operator": {
"type": "string",
"operation": "isNotEmpty",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
400,
0
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40004",
"name": "CapSolver Error?"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify({ error: $json.error }) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
700,
-100
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40005",
"name": "Respond to Webhook (Error)"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json.data) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
700,
100
],
"id": "a1b2c3d4-0001-0001-0001-a1b2c3d40006",
"name": "Respond to Webhook"
}
],
"connections": {
"Receive Solver Request": {
"main": [
[
{
"node": "GeeTest V4",
"type": "main",
"index": 0
}
]
]
},
"GeeTest V4": {
"main": [
[
{
"node": "CapSolver Error?",
"type": "main",
"index": 0
}
]
]
},
"CapSolver Error?": {
"main": [
[
{
"node": "Respond to Webhook (Error)",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"meta": {
"instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
}
}
GeeTest V4 सॉल्वर एपीआई एंडपॉइंट निम्नलिखित पैरामीटर स्वीकार करता है:
| पैरामीटर | आवश्यक | विवरण |
|---|---|---|
websiteURL |
हाँ | GeeTest V4 विजेट होस्ट करने वाले पृष्ठ का URL |
captchaId |
हाँ | स्थिर GeeTest V4 कैप्चा आईडी (पृष्ठ स्रोत में पाया गया) |
geetestApiServerSubdomain |
नहीं | कस्टम GeeTest API सर्वर सबडोमेन (शायद ही कभी आवश्यक) |
टिप: आप पृष्ठ स्रोत का निरीक्षण करके या नेटवर्क अनुरोधों में
captcha_idखोजने के लिए DevTools का उपयोग करकेwebsiteURLऔरcaptchaIdकी पहचान कर सकते हैं।
GeeTest V3 की तुलना में, V4 सरल है - आपको केवल दो आवश्यक पैरामीटर की आवश्यकता है और captchaId स्थिर है। किसी गतिशील चुनौती प्राप्त करने की आवश्यकता नहीं है।
ऊपर दिया गया एपीआई वर्कफ़्लो दिखाता है कि एक हल किया गया GeeTest V4 टोकन सेट कैसे प्राप्त करें। लेकिन आप वास्तव में इसके साथ क्या करते हैं?
वास्तविक दुनिया के स्वचालन में, चुनौती को हल करना केवल आधा काम है। आपको 5 समाधान फ़ील्ड को लक्ष्य वेबसाइट पर सबमिट करना होगा - ठीक वैसे ही जैसे एक ब्राउज़र करेगा - GeeTest V4 सुरक्षा के पीछे के डेटा या कार्रवाई को अनलॉक करने के लिए।
यहां सामान्य पैटर्न है:
टर्नस्टाइल (एकल टोकन) या reCAPTCHA (एकल gRecaptchaResponse) के विपरीत, GeeTest V4 5 समाधान फ़ील्ड लौटाता है जिन्हें सभी को एक साथ सबमिट किया जाना चाहिए:
| फ़ील्ड | विवरण |
|---|---|
captcha_id |
कैप्चा पहचानकर्ता (इनपुट captchaId के समान) |
lot_number |
इस हल के लिए अद्वितीय लॉट नंबर |
pass_token |
हल को साबित करने वाला प्रमाणीकरण टोकन |
gen_time |
समाधान उत्पन्न होने का टाइमस्टैम्प |
captcha_output |
वास्तविक कैप्चा आउटपुट/उत्तर |
उदाहरण: https://example.com/ — एक GeeTest V4-संरक्षित वेबसाइट
मैनुअल ट्रिगर > CapSolver GeeTest V4 > HTTP POST अनुरोध (5 फ़ील्ड) > IF (सफलता की जांच करें) > फ़ील्ड संपादित करें (डेटा निकालें)
GeeTest V4https://example.com/logine392e1d7fd421dc... (पृष्ठ स्रोत का निरीक्षण करके इसे ढूंढें)captcha_id = {{ $json.data.solution.captcha_id }}lot_number = {{ $json.data.solution.lot_number }}pass_token = {{ $json.data.solution.pass_token }}gen_time = {{ $json.data.solution.gen_time }}captcha_output = {{ $json.data.solution.captcha_output }}username, password)मुख्य अवधारणा: प्रत्येक वेबसाइट टोकन सबमिशन को अलग तरह से संभालती है। इस उदाहरण में, 5 फ़ील्ड को फ़ॉर्म-यूआरएलएन्कोडेड POST डेटा के रूप में भेजा जाता है - लेकिन अन्य साइटें उन्हें JSON बॉडी फ़ील्ड, क्वेरी पैरामीटर, या पूरी तरह से अलग एंडपॉइंट के माध्यम से अपेक्षित कर सकती हैं। फ़ील्ड को ठीक से कैसे भेजा जाना चाहिए, यह देखने के लिए हमेशा साइट के वास्तविक फ़ॉर्म सबमिशन (DevTools नेटवर्क टैब का उपयोग करके) का निरीक्षण करें।
ऊपर दिया गया सॉल्वर एपीआई और स्क्रैपिंग उदाहरण मुख्य पैटर्न दिखाते हैं: GeeTest V4 को हल करें, 5 फ़ील्ड सबमिट करें, परिणाम संसाधित करें। निम्नलिखित वर्कफ़्लो इस पैटर्न को उत्पादन-तैयार उपयोग मामलों तक विस्तारित करते हैं - प्रत्येक दोहरे ट्रिगर (शेड्यूल + वेबहुक), लगातार स्थिति ट्रैकिंग और संरचित आउटपुट के साथ।
| वर्कफ़्लो | उद्देश्य |
|---|---|
GeeTest V4 स्क्रैपिंग — मूल्य और उत्पाद विवरण — CapSolver + शेड्यूल + वेबहुक |
हर 6 घंटे में मूल्य और उत्पाद नाम को स्क्रैप करता है, staticData में संग्रहीत पिछले मूल्यों के खिलाफ तुलना करता है, परिवर्तनों पर अलर्ट करता है |
GeeTest V4 खाता लॉगिन — CapSolver + शेड्यूल + वेबहुक |
पहले हल करके कैप्चा-संरक्षित साइट पर अपने खाते में लॉग इन करता है, फिर 5 समाधान फ़ील्ड के साथ क्रेडेंशियल POST करता है |
यह वर्कफ़्लो हर 6 घंटे (शेड्यूल) या मांग पर (वेबहुक) एक उत्पाद पृष्ठ को स्क्रैप करता है, HTML नोड का उपयोग करके मूल्य निकालता है, और इसे पहले संग्रहीत मूल्य के खिलाफ तुलना करता है।
शेड्यूल पथ:
हर 6 घंटे > कैप्चा विवरण प्राप्त करें > GeeTest V4 हल करें > उत्पाद पृष्ठ प्राप्त करें > डेटा निकालें
> डेटा की तुलना करें > डेटा बदला? > अलर्ट बनाएं / कोई बदलाव नहीं
मुख्य व्यवहार:
.product-price, [data-price], .price, h1, .product-title) का उपयोग करके मूल्य और उत्पाद नाम निकालता हैdeal) और वृद्धि (गंभीरता: info) दोनों का पता लगाती है{
"nodes": [
{
"parameters": {
"content": "## GeeTest V4 स्क्रैपिंग — मूल्य और उत्पाद मॉनिटर\n\n### यह कैसे काम करता है\n\n1. GeeTest V4 कार्यान्वयन के लिए एक शेड्यूल या वेबहुक पर ट्रिगर करता है।\n2. उत्पाद पृष्ठ तक पहुंचने के लिए कैप्चा प्राप्त करता है और हल करता है।\n3. उत्पाद पृष्ठ से डेटा निकालता है और इसकी तुलना पिछले डेटा से करता है।\n4. यदि डेटा बदलता है तो अलर्ट बनाता है, यदि नहीं तो स्थिति सेट करता है।\n5. निष्कर्षों के साथ वेबहुक को जवाब देता है।\n\n### सेटअप चरण\n\n- [ ] लक्ष्य साइट के लिए एपीआई कुंजी और URL कॉन्फ़िगर करें।\n- [ ] कैप्चा हल करने के लिए CapSolver क्रेडेंशियल सेट करें।\n- [ ] यदि वेबहुक ट्रिगर का उपयोग कर रहे हैं तो वेबहुक एंडपॉइंट कॉन्फ़िगर करें।\n\n### अनुकूलन\n\nयदि आवश्यक हो तो विभिन्न उत्पाद पृष्ठों के लिए लक्ष्य URL समायोजित करें।",
"width": 480,
"height": 896
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1312,
-256
],
"id": "efca1569-1a78-481e-9b4e-3f4e3b443eef",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## अनुसूचित कैप्चा प्राप्त करना\n\nउत्पाद डेटा तक पहुंचने के लिए कैप्चा प्राप्त करने और हल करने के लिए हर 6 घंटे में ट्रिगर किया जाता है।",
"width": 800,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-752,
-112
],
"id": "ad65cf5e-a763-4327-a67a-f1a1d86f3691",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## उत्पाद डेटा प्राप्त करें और संसाधित करें\n\nउत्पाद डेटा पृष्ठ प्राप्त करता है और डेटा निष्कर्षण के लिए HTML को संसाधित करता है।",
"width": 784,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
160,
-112
],
"id": "1930f8a2-085c-4cff-a207-2ccfac0b3c96",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "## डेटा सत्यापन और अलर्टिंग\n\nयह जांचता है कि डेटा बदल गया है या नहीं, यह तय करने के लिए कि अलर्ट बनाना है या स्थिति अपडेट करनी है।",
"width": 480,
"height": 480,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1056,
-256
],
"id": "2439556a-ba0d-49d0-896e-f5898d256b8c",
"name": "Sticky Note3"
},
{
"parameters": {
"content": "## वेबहुक कैप्चा हैंडलिंग\n\nउत्पाद डेटा तक पहुंचने के लिए कैप्चा को प्राप्त करने और हल करने के लिए वेबहुक द्वारा ट्रिगर किया जाता है।",
"width": 800,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-752,
320
],
"id": "27e8071b-7581-466e-8346-273c8c4e9f46",
"name": "Sticky Note4"
},
{
"parameters": {
"content": "## वेबहुक के लिए उत्पाद डेटा प्राप्त करें और संसाधित करें\n\nवेबहुक के लिए उत्पाद पृष्ठ प्राप्त करता है, डेटा निष्कर्षण के लिए HTML को संसाधित करता है और पिछले डेटा से तुलना करता है।",
"width": 784,
"height": 304,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
160,
304
],
"id": "0deb6807-e5f9-47a8-b381-c2a588970c77",
"name": "Sticky Note5"
},
{
"parameters": {
"content": "## डेटा सत्यापन और वेबहुक प्रतिक्रिया\n\nउत्पाद डेटा परिवर्तनों का निर्धारण करता है और वेबहुक प्रतिक्रिया के माध्यम से अलर्ट या स्थिति वापस भेजता है।",
"width": 688,
"height": 512,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1056,
256
],
"id": "06dfec0b-2773-42a6-98fa-5cd02b4da831",
"name": "Sticky Note6"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
-704,
0
],
"id": "v4s-901",
"name": "Every 6 Hours"
},
{
"parameters": {
"url": "https://YOUR-TARGET-SITE.com/api/captcha/config",
"options": {
"response": {
"response": {}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
-400,
0
],
"id": "v4s-900",
"name": "Fetch Captcha Details"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
"captchaId": "={{ $json.captcha_id || $json.captchaId || $json.gt4 }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-96,
0
],
"id": "v4s-902",
"name": "Solve GeeTest V4",
"credentials": {
"capSolverApi": {
"id": "BeBFMAsySMsMGeE9",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://YOUR-TARGET-SITE.com/product-page",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "captcha_id",
"value": "={{ $json.data.solution.captcha_id }}"
},
{
"name": "lot_number",
"value": "={{ $json.data.solution.lot_number }}"
},
{
"name": "pass_token",
"value": "={{ $json.data.solution.pass_token }}"
},
{
"name": "gen_time",
"value": "={{ $json.data.solution.gen_time }}"
},
{
"name": "captcha_output",
"value": "={{ $json.data.solution.captcha_output }}"
}
]
},
"options": {
"response": {
"response": {}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
208,
0
],
"id": "v4s-903",
"name": "Fetch Product Page"
},
{
"parameters": {
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "price",
"cssSelector": ".product-price, [data-price], .price"
},
{
"key": "productName",
"cssSelector": "h1, .product-title"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"position": [
512,
0
],
"id": "v4s-904",
"name": "Extract Data"
},
{
"parameters": {
"jsCode": "const staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\nconst parsePrice = (str) => { if (!str) return null; const match = str.match(/[\\d]+\\.?\\d*/); return match ? parseFloat(match[0].replace(',', '')) : null; };\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\nreturn [{ json: { productName, currentPrice, previousPrice: previousPrice || 'first check', changed, direction, diff: changed ? `$${diff}` : null, checkedAt: new Date().toISOString() } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
0
],
"id": "v4s-905",
"name": "Compare Data"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "if-1",
"leftValue": "={{ $json.changed }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1104,
0
],
"id": "v4s-906",
"name": "Data Changed?"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a1",
"name": "alert",
"value": "=Price {{ $json.direction }} for {{ $json.productName }}: {{ $json.previousPrice }} \u2192 {{ $json.currentPrice }}",
"type": "string"
},
{
"id": "a2",
"name": "severity",
"value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
"type": "string"
},
{
"id": "a3",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1392,
-128
],
"id": "v4s-907",
"name": "Build Alert"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "n1",
"name": "status",
"value": "no_change",
"type": "string"
},
{
"id": "n2",
"name": "currentPrice",
"value": "={{ $json.currentPrice }}",
"type": "string"
},
{
"id": "n3",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1376,
48
],
"id": "v4s-908",
"name": "No Change"
},
{
"parameters": {
"httpMethod": "POST",
"path": "price-monitor-geetest-v4",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-704,
432
],
"id": "v4s-909",
"name": "Webhook Trigger",
"webhookId": "v4s-909-webhook",
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "={{ $json.body.websiteURL }}",
"captchaId": "={{ $json.body.captchaId }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-96,
432
],
"id": "v4s-910",
"name": "Solve GeeTest V4 [Webhook]",
"credentials": {
"capSolverApi": {
"id": "BeBFMAsySMsMGeE9",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "={{ $('Webhook Trigger').item.json.body.websiteURL }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "captcha_id",
"value": "={{ $json.data.solution.captcha_id }}"
},
{
"name": "lot_number",
"value": "={{ $json.data.solution.lot_number }}"
},
{
"name": "pass_token",
"value": "={{ $json.data.solution.pass_token }}"
},
{
"name": "gen_time",
"value": "={{ $json.data.solution.gen_time }}"
},
{
"name": "captcha_output",
"value": "={{ $json.data.solution.captcha_output }}"
}
]
},
"options": {
"response": {
"response": {}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
208,
432
],
"id": "v4s-911",
"name": "Fetch Product Page [Webhook]"
},
{
"parameters": {
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "price",
"cssSelector": ".product-price, [data-price], .price"
},
{
"key": "productName",
"cssSelector": "h1, .product-title"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"position": [
512,
432
],
"id": "v4s-912",
"name": "Extract Data [Webhook]"
},
{
"parameters": {
"jsCode": "const staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\nconst parsePrice = (str) => { if (!str) return null; const match = str.match(/[\\d]+\\.?\\d*/); return match ? parseFloat(match[0].replace(',', '')) : null; };\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\nreturn [{ json: { productName, currentPrice, previousPrice: previousPrice || 'first check', changed, direction, diff: changed ? `$${diff}` : null, checkedAt: new Date().toISOString() } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
432
],
"id": "v4s-913",
"name": "Compare Data [Webhook]"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "if-2",
"leftValue": "={{ $json.changed }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1104,
464
],
"id": "v4s-914",
"name": "Data Changed? [Webhook]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a4",
"name": "alert",
"value": "=Price {{ $json.direction }} for {{ $json.productName }}: {{ $json.previousPrice }} \u2192 {{ $json.currentPrice }}",
"type": "string"
},
{
"id": "a5",
"name": "severity",
"value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
"type": "string"
},
{
"id": "a6",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1408,
384
],
"id": "v4s-915",
"name": "Build Alert [Webhook]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "n4",
"name": "status",
"value": "no_change",
"type": "string"
},
{
"id": "n5",
"name": "currentPrice",
"value": "={{ $json.currentPrice }}",
"type": "string"
},
{
"id": "n6",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1408,
592
],
"id": "v4s-916",
"name": "No Change [Webhook]"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
1600,
448
],
"id": "v4s-917",
"name": "Respond to Webhook"
}
],
"connections": {
"Every 6 Hours": {
"main": [
[
{
"node": "Fetch Captcha Details",
"type": "main",
"index": 0
}
]
]
},
"Fetch Captcha Details": {
"main": [
[
{
"node": "Solve GeeTest V4",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4": {
"main": [
[
{
"node": "Fetch Product Page",
"type": "main",
"index": 0
}
]
]
},
"Fetch Product Page": {
"main": [
[
{
"node": "Extract Data",
"type": "main",
"index": 0
}
]
]
},
"Extract Data": {
"main": [
[
{
"node": "Compare Data",
"type": "main",
"index": 0
}
]
]
},
"Compare Data": {
"main": [
[
{
"node": "Data Changed?",
"type": "main",
"index": 0
}
]
]
},
"Data Changed?": {
"main": [
[
{
"node": "Build Alert",
"type": "main",
"index": 0
}
],
[
{
"node": "No Change",
"type": "main",
"index": 0
}
]
]
},
"Webhook Trigger": {
"main": [
[
{
"node": "Solve GeeTest V4 [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4 [Webhook]": {
"main": [
[
{
"node": "Fetch Product Page [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Fetch Product Page [Webhook]": {
"main": [
[
{
"node": "Extract Data [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Extract Data [Webhook]": {
"main": [
[
{
"node": "Compare Data [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Compare Data [Webhook]": {
"main": [
[
{
"node": "Data Changed? [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Data Changed? [Webhook]": {
"main": [
[
{
"node": "Build Alert [Webhook]",
"type": "main",
"index": 0
}
],
[
{
"node": "No Change [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Build Alert [Webhook]": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"No Change [Webhook]": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"meta": {
"instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
}
}
यह वर्कफ़्लो एक कैप्चा-संरक्षित साइट पर लॉगिन को स्वचालित करता है। एक लॉगिन कॉन्फ़िग सेट करें नोड सभी पैरामीटरों को केंद्रीकृत करता है - शेड्यूल पथ के लिए [शेड्यूल] और ऑन-डिमांड वेबहुक पथ के लिए [वेबहुक]। प्रत्येक पथ को कॉन्फ़िगर करने के लिए उपयुक्त कॉन्फ़िग नोड को संपादित करें।
शेड्यूल पथ:
हर 24 घंटे > लॉगिन कॉन्फ़िग सेट करें > कैप्चा विवरण प्राप्त करें > GeeTest V4 हल करें > लॉगिन सबमिट करें
> लॉगिन सफल? > लॉगिन सफलता चिह्नित करें / लॉगिन विफलता चिह्नित करें
मुख्य व्यवहार:
GeeTest V4 पर सेट हैcaptcha_id, lot_number, pass_token, gen_time, captcha_output)statusCode < 400 और प्रतिक्रिया बॉडी में एक कॉन्फ़िगर करने योग्य successMarker की उपस्थिति दोनों का मूल्यांकन करती है{
"nodes": [
{
"parameters": {
"content": "## GeeTest V4 खाता लॉगिन\n\n### यह कैसे काम करता है\n\n1. वर्कफ़्लो या तो एक शेड्यूल पर या एक वेबहुक के माध्यम से ट्रिगर होता है।\n2. यह URL और उपयोगकर्ता फ़ील्ड के साथ लॉगिन कॉन्फ़िगरेशन तैयार करता है।\n3. वर्कफ़्लो निर्दिष्ट एपीआई से कैप्चा विवरण प्राप्त करता है।\n4. यह एक सॉल्विंग सेवा का उपयोग करके GeeTest V4 कैप्चा को हल करता है।\n5. लॉगिन प्रयास सबमिट किया जाता है और सफलता या विफलता दर्ज की जाती है।\n\n### सेटअप चरण\n\n- [ ] नियमित लॉगिन प्रयासों के लिए शेड्यूल ट्रिगर कॉन्फ़िगर करें।\n- [ ] मैन्युअल लॉगिन प्रयासों के लिए वेबहुक URL सेट करें।\n- [ ] सुनिश्चित करें कि GeeTest V4 capSolver सेवा एपीआई कुंजी के साथ ठीक से कॉन्फ़िगर की गई है।\n- [ ] सही लॉगिन एंडपॉइंट और फ़ील्ड मैपिंग परिभाषित करें।\n\n### अनुकूलन\n\nआप अपनी विशिष्ट आवश्यकताओं से मेल खाने के लिए शेड्यूल अंतराल को बदल सकते हैं या वेबहुक URL को अपडेट कर सकते हैं।",
"width": 480,
"height": 896
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1552,
-320
],
"id": "73972bce-83df-4c59-9b19-511f769b5fe9",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## अनुसूचित लॉगिन तैयारी\n\nलॉगिन सेटिंग्स को इनिशियलाइज़ करता है और प्रक्रिया को शेड्यूल करता है।",
"width": 496,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-992,
-112
],
"id": "74d19371-a64a-4362-a304-11d73336dbab",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## अनुसूचित कैप्चा हैंडलिंग\n\nअनुसूचित लॉगिन के लिए कैप्चा प्राप्त करता है और हल करता है।",
"width": 496,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-384,
-112
],
"id": "6e51b545-0fa0-4929-85af-c848d75f9640",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "## अनुसूचित लॉगिन सबमिशन\n\nअनुसूचित लॉगिन सबमिट करता है और परिणाम दर्ज करता है।",
"width": 800,
"height": 496,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
224,
-320
],
"id": "0db63f1f-5767-40a5-a9bd-56fcfd2a314b",
"name": "Sticky Note3"
},
{
"parameters": {
"content": "## वेबहुक लॉगिन प्रोसेसिंग\n\nकैप्चा सॉल्विंग सहित वेबहुक-ट्रिगर किए गए लॉगिन को संभालता है।",
"width": 1104,
"height": 272,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-688,
320
],
"id": "f71814c4-ec66-4359-8984-4736eae8bfb4",
"name": "Sticky Note4"
},
{
"parameters": {
"content": "## वेबहुक लॉगिन परिणाम\n\nवेबहुक लॉगिन प्रक्रिया के परिणाम का निर्धारण करता है और जवाब देता है।",
"width": 800,
"height": 464,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
528,
240
],
"id": "241c39e7-dc38-4372-9951-e5aa83667893",
"name": "Sticky Note5"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 24
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
-944,
0
],
"id": "v4l-921",
"name": "Every 24 Hours"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "l1",
"name": "websiteURL",
"value": "https://YOUR-LOGIN-PAGE.com",
"type": "string"
},
{
"id": "l2",
"name": "captchaApiURL",
"value": "https://YOUR-TARGET-SITE.com/api/captcha/config",
"type": "string"
},
{
"id": "l3",
"name": "usernameField",
"value": "email",
"type": "string"
},
{
"id": "l4",
"name": "passwordField",
"value": "password",
"type": "string"
},
{
"id": "l5",
"name": "usernameValue",
"value": "your-email@example.com",
"type": "string"
},
{
"id": "l6",
"name": "passwordValue",
"value": "YOUR_ACCOUNT_PASSWORD",
"type": "string"
},
{
"id": "l7",
"name": "successMarker",
"value": "account-dashboard",
"type": "string"
},
{
"id": "l8",
"name": "userAgent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-640,
0
],
"id": "v4l-922",
"name": "Set Login Config [Schedule]"
},
{
"parameters": {
"url": "={{ $json.captchaApiURL }}",
"options": {
"response": {
"response": {}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
-336,
0
],
"id": "v4l-922b",
"name": "Fetch Captcha Details [Schedule]"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "={{ $('Set Login Config [Schedule]').item.json.websiteURL }}",
"captchaId": "={{ $json.captcha_id || $json.captchaId || $json.gt4 }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-32,
0
],
"id": "v4l-923",
"name": "Solve GeeTest V4 [Schedule]",
"credentials": {
"capSolverApi": {
"id": "BeBFMAsySMsMGeE9",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "={{ $('Set Login Config [Schedule]').item.json.websiteURL }}/login",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "content-type",
"value": "application/x-www-form-urlencoded"
},
{
"name": "user-agent",
"value": "={{ $('Set Login Config [Schedule]').item.json.userAgent }}"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "={{ $('Set Login Config [Schedule]').item.json.usernameField }}",
"value": "={{ $('Set Login Config [Schedule]').item.json.usernameValue }}"
},
{
"name": "={{ $('Set Login Config [Schedule]').item.json.passwordField }}",
"value": "={{ $('Set Login Config [Schedule]').item.json.passwordValue }}"
},
{
"name": "captcha_id",
"value": "={{ $json.data.solution.captcha_id }}"
},
{
"name": "lot_number",
"value": "={{ $json.data.solution.lot_number }}"
},
{
"name": "pass_token",
"value": "={{ $json.data.solution.pass_token }}"
},
{
"name": "gen_time",
"value": "={{ $json.data.solution.gen_time }}"
},
{
"name": "captcha_output",
"value": "={{ $json.data.solution.captcha_output }}"
}
]
},
"options": {
"response": {
"response": {
"fullResponse": true,
"neverError": true
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
272,
0
],
"id": "v4l-924",
"name": "Submit Login [Schedule]"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "lif1",
"leftValue": "={{ $json.statusCode < 400 && String($json.body || $json.data || '').includes($('Set Login Config [Schedule]').item.json.successMarker) }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
576,
0
],
"id": "v4l-925",
"name": "Login Successful? [Schedule]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "s1",
"name": "action",
"value": "account_login",
"type": "string"
},
{
"id": "s2",
"name": "status",
"value": "success",
"type": "string"
},
{
"id": "s3",
"name": "message",
"value": "Configured account login flow succeeded",
"type": "string"
},
{
"id": "s4",
"name": "checkedAt",
"value": "={{ new Date().toISOString() }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
880,
-208
],
"id": "v4l-926",
"name": "Mark Login Success [Schedule]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "f1",
"name": "action",
"value": "account_login",
"type": "string"
},
{
"id": "f2",
"name": "status",
"value": "failed",
"type": "string"
},
{
"id": "f3",
"name": "statusCode",
"value": "={{ $json.statusCode }}",
"type": "number"
},
{
"id": "f4",
"name": "message",
"value": "Login response did not match the configured success marker",
"type": "string"
},
{
"id": "f5",
"name": "checkedAt",
"value": "={{ new Date().toISOString() }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
880,
16
],
"id": "v4l-927",
"name": "Mark Login Failed [Schedule]"
},
{
"parameters": {
"httpMethod": "POST",
"path": "account-login-geetest-v4",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-640,
432
],
"id": "v4l-928",
"name": "Webhook Trigger",
"webhookId": "v4l-928-webhook",
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "GeeTest V4",
"websiteURL": "={{ $json.body.websiteURL }}",
"captchaId": "={{ $json.body.captchaId }}",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-32,
432
],
"id": "v4l-929",
"name": "Solve GeeTest V4 [Webhook]",
"credentials": {
"capSolverApi": {
"id": "BeBFMAsySMsMGeE9",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "={{ $('Webhook Trigger').item.json.body.loginActionURL }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "content-type",
"value": "application/x-www-form-urlencoded"
},
{
"name": "user-agent",
"value": "={{ $('Webhook Trigger').item.json.body.userAgent || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36' }}"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "={{ $('Webhook Trigger').item.json.body.usernameField || 'email' }}",
"value": "={{ $('Webhook Trigger').item.json.body.usernameValue }}"
},
{
"name": "={{ $('Webhook Trigger').item.json.body.passwordField || 'password' }}",
"value": "={{ $('Webhook Trigger').item.json.body.passwordValue }}"
},
{
"name": "captcha_id",
"value": "={{ $json.data.solution.captcha_id }}"
},
{
"name": "lot_number",
"value": "={{ $json.data.solution.lot_number }}"
},
{
"name": "pass_token",
"value": "={{ $json.data.solution.pass_token }}"
},
{
"name": "gen_time",
"value": "={{ $json.data.solution.gen_time }}"
},
{
"name": "captcha_output",
"value": "={{ $json.data.solution.captcha_output }}"
}
]
},
"options": {
"response": {
"response": {
"fullResponse": true,
"neverError": true
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
272,
432
],
"id": "v4l-930",
"name": "Submit Login [Webhook]"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "lif2",
"leftValue": "={{ $json.statusCode < 400 && String($json.body || $json.data || '').includes($('Webhook Trigger').item.json.body.successMarker) }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
576,
432
],
"id": "v4l-931",
"name": "Login Successful? [Webhook]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ws1",
"name": "action",
"value": "account_login",
"type": "string"
},
{
"id": "ws2",
"name": "status",
"value": "success",
"type": "string"
},
{
"id": "ws3",
"name": "message",
"value": "Configured account login flow succeeded",
"type": "string"
},
{
"id": "ws4",
"name": "checkedAt",
"value": "={{ new Date().toISOString() }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
880,
352
],
"id": "v4l-932",
"name": "Mark Login Success [Webhook]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "wf1",
"name": "action",
"value": "account_login",
"type": "string"
},
{
"id": "wf2",
"name": "status",
"value": "failed",
"type": "string"
},
{
"id": "wf3",
"name": "statusCode",
"value": "={{ $json.statusCode }}",
"type": "number"
},
{
"id": "wf4",
"name": "message",
"value": "Login response did not match the configured success marker",
"type": "string"
},
{
"id": "wf5",
"name": "checkedAt",
"value": "={{ new Date().toISOString() }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
880,
544
],
"id": "v4l-933",
"name": "Mark Login Failed [Webhook]"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
1184,
432
],
"id": "v4l-934",
"name": "Respond to Webhook"
}
],
"connections": {
"Every 24 Hours": {
"main": [
[
{
"node": "Set Login Config [Schedule]",
"type": "main",
"index": 0
}
]
]
},
"Set Login Config [Schedule]": {
"main": [
[
{
"node": "Fetch Captcha Details [Schedule]",
"type": "main",
"index": 0
}
]
]
},
"Fetch Captcha Details [Schedule]": {
"main": [
[
{
"node": "Solve GeeTest V4 [Schedule]",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4 [Schedule]": {
"main": [
[
{
"node": "Submit Login [Schedule]",
"type": "main",
"index": 0
}
]
]
},
"Submit Login [Schedule]": {
"main": [
[
{
"node": "Login Successful? [Schedule]",
"type": "main",
"index": 0
}
]
]
},
"Login Successful? [Schedule]": {
"main": [
[
{
"node": "Mark Login Success [Schedule]",
"type": "main",
"index": 0
}
],
[
{
"node": "Mark Login Failed [Schedule]",
"type": "main",
"index": 0
}
]
]
},
"Webhook Trigger": {
"main": [
[
{
"node": "Solve GeeTest V4 [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Solve GeeTest V4 [Webhook]": {
"main": [
[
{
"node": "Submit Login [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Submit Login [Webhook]": {
"main": [
[
{
"node": "Login Successful? [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Login Successful? [Webhook]": {
"main": [
[
{
"node": "Mark Login Success [Webhook]",
"type": "main",
"index": 0
}
],
[
{
"node": "Mark Login Failed [Webhook]",
"type": "main",
"index": 0
}
]
]
},
"Mark Login Success [Webhook]": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Mark Login Failed [Webhook]": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"meta": {
"instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
}
}
आपने n8n और CapSolver का उपयोग करके GeeTest V4-सॉल्विंग एपीआई और उत्पादन-तैयार स्क्रैपिंग वर्कफ़्लो बनाना सीख लिया है - किसी पारंपरिक कोडिंग की आवश्यकता नहीं है।
इस गाइड में, हमने कवर किया:
captchaIdमुख्य बात यह है: GeeTest V4 चुनौती को हल करना केवल आधा काम है - आपको संरक्षित डेटा को अनलॉक करने के लिए लक्ष्य वेबसाइट पर सभी 5 समाधान फ़ील्ड (captcha_id, lot_number, pass_token, gen_time, captcha_output) को भी सबमिट करना होगा।
टिप: ये वर्कफ़्लो शेड्यूल + वेबहुक ट्रिगर का उपयोग करते हैं, लेकिन आप ट्रिगर नोड को किसी भी n8n ट्रिगर से बदल सकते हैं - मैन्युअल, ऐप इवेंट, फ़ॉर्म सबमिशन, आदि। डेटा प्राप्त करने के बाद, n8n के अंतर्निहित नोड्स का उपयोग करके परिणामों को Google शीट्स, डेटाबेस, क्लाउड स्टोरेज में सहेजें, या टेलीग्राम के माध्यम से अलर्ट भेजें।
शुरू करने के लिए तैयार हैं? CapSolver के लिए साइन अप करें और अपने पहले रिचार्ज पर अतिरिक्त 8% बोनस के लिए बोनस कोड n8n का उपयोग करें!

GeeTest V4, GeeTest के व्यवहार CAPTCHA सिस्टम की नवीनतम पीढ़ी है। यह अनुकूली चुनौतियों और व्यवहार विश्लेषण का उपयोग करके आगंतुकों को सत्यापित करता है, एक सरलीकृत एकीकरण मॉडल के साथ पुराने V3 सिस्टम को प्रतिस्थापित करता है। हल करने के दृष्टिकोण से, V4 को केवल एक स्थिर captchaId पैरामीटर की आवश्यकता होती है - किसी गतिशील चुनौती प्राप्त करने की आवश्यकता नहीं है।
मूल्य उपयोग के आधार पर भिन्न होता है। वर्तमान GeeTest V4 दरों के लिए CapSolver मूल्य निर्धारण पृष्ठ देखें।
GeeTest V4 चुनौतियों को आमतौर पर कुछ सेकंड में हल किया जाता है। सटीक समय सर्वर लोड और चुनौती की जटिलता पर निर्भर करता है।
हाँ! यह वर्कफ़्लो स्व-होस्टेड n8n और n8n क्लाउड दोनों के साथ काम करता है। CapSolver नोड एक आधिकारिक एकीकरण के रूप में पहले से ही उपलब्ध है - बस अपनी एपीआई क्रेडेंशियल जोड़ें।
पृष्ठ स्रोत में captcha_id या captchaId खोजें, या gcaptcha4.js (GeeTest V4 विजेट स्क्रिप्ट) के संदर्भों की तलाश करें। captchaId स्थिर है - इसे एक बार ढूंढें, इसे हमेशा के लिए उपयोग करें।
GeeTest V3 को प्रत्येक हल से पहले एक गतिशील challenge पैरामीटर ( gt और challenge फ़ील्ड के माध्यम से) प्राप्त करने की आवश्यकता होती है, और 3 समाधान फ़ील्ड लौटाता है। GeeTest V4 एक स्थिर captchaId का उपयोग करता है जो कभी नहीं बदलता है, किसी गतिशील चुनौती प्राप्त करने की आवश्यकता नहीं होती है, और 5 समाधान फ़ील्ड (captcha_id, lot_number, pass_token, gen_time, captcha_output) लौटाता है। V4 को स्वचालित करना संरचनात्मक रूप से सरल है।
कई चीजें इसका कारण बन सकती हैं। सबसे पहले, समाधान जल्दी समाप्त हो जाते हैं - सुनिश्चित करें कि आप हल करने के तुरंत बाद 5 फ़ील्ड सबमिट कर रहे हैं। दूसरा, सत्यापित करें कि आप सभी 5 फ़ील्ड भेज रहे हैं: captcha_id, lot_number, pass_token, gen_time, और captcha_output - उनमें से किसी एक को भी गुम करने से अस्वीकृति होगी। तीसरा, फ़ील्ड नाम और सबमिशन प्रारूप की जांच करें: ब्राउज़र द्वारा किए गए वास्तविक नेटवर्क अनुरोध का निरीक्षण करें (DevTools > नेटवर्क टैब) ताकि सटीक फ़ील्ड नाम, अनुरोध विधि और एंडपॉइंट की पुष्टि हो सके। कुछ साइटें फ़ील्ड को फ़ॉर्म-यूआरएलएन्कोडेड के बजाय JSON बॉडी में अपेक्षित करती हैं। यदि समाधान अभी भी अस्वीकार कर दिया जाता है, तो साइट-विशिष्ट सहायता के लिए CapSolver समर्थन से संपर्क करें।
CapSolver और n8n का उपयोग करके eCAPTCHA v2/v3 सॉल्वर API बनाएं। बिना कोडिंग के टोकन को ऑटोमेट करने, वेबसाइट पर सबमिट करने और सुरक्षित डेटा निकालने का तरीका सीखें।

CapSolver और n8n का उपयोग करके Cloudflare Turnstile को हल करने के लिए एक API बनाएं। सीखें कि टोकन सॉल्विंग को कैसे ऑटोमेट करें, उसे वेबसाइट पर सबमिट करें, और बिना कोडिंग के संरक्षित डेटा निकालें।
