उत्पादएकीकरणसंसाधनदस्तावेजीकरणमूल्य निर्धारण
अभी शुरू करें

© 2026 CapSolver. All rights reserved.

हमसे संपर्क करें

Slack: lola@capsolver.com

उत्पाद

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • ब्राउज़र एक्सटेंशन
  • अधिक कैप्चा प्रकार

एकीकरण

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • साझेदार
  • सभी एकीकरण देखें

संसाधन

  • रेफरल प्रोग्राम
  • दस्तावेजीकरण
  • API संदर्भ
  • ब्लॉग
  • FAQ
  • शब्दावली
  • स्थिति

कानूनी

  • सेवा की शर्तें
  • गोपनीयता नीति
  • धनवापसी नीति
  • मेरी व्यक्तिगत जानकारी न बेचें
//CapSolver और n8n का उपयोग करके Cloudflare Turnstile को कैसे हल करें
Mar09, 2026

CapSolver और n8n का उपयोग करके Cloudflare Turnstile को कैसे हल करें

Rajinder Singh

Rajinder Singh

Deep Learning Researcher

Cloudflare Turnstile आधुनिक वेबसाइटों के लिए तेजी से पसंदीदा CAPTCHA विकल्प बनता जा रहा है। पारंपरिक CAPTCHA के विपरीत जो उपयोगकर्ताओं को छवि पहेलियाँ हल करने के लिए मजबूर करते हैं, Turnstile पृष्ठभूमि में चुपचाप चलता है — जिससे मानक स्वचालन उपकरणों के साथ इसका पता लगाना और इसे बायपास करना कठिन हो जाता है।

क्या होगा यदि आप अपने n8n वर्कफ़्लो के भीतर Turnstile को स्वचालित रूप से हल कर सकें — चाहे आप एक पुन: प्रयोज्य सॉल्वर एपीआई बना रहे हों, एक कैप्चा-संरक्षित साइट को स्क्रैप कर रहे हों, या एक लॉगिन फ़ॉर्म को स्वचालित कर रहे हों — यह सब पारंपरिक कोड की एक भी पंक्ति लिखे बिना?

इस गाइड में, आप सीखेंगे कि Cloudflare Turnstile चुनौतियों को मांग पर हल करने के लिए n8n (एक विज़ुअल वर्कफ़्लो ऑटोमेशन टूल) को CapSolver (एक AI-संचालित कैप्चा समाधान सेवा) के साथ कैसे संयोजित करें — या तो एक स्टैंडअलोन एपीआई एंडपॉइंट के रूप में या किसी भी स्वचालन वर्कफ़्लो के भीतर एक कदम के रूप में।

आप क्या बनाएंगे:

सॉल्वर एपीआई — पुन: प्रयोज्य एंडपॉइंट जिन्हें आपके अन्य टूल कॉल कर सकते हैं:

  • एक Cloudflare Turnstile सॉल्वर एपीआई

प्रत्यक्ष-उपयोग वर्कफ़्लो — CapSolver को बड़े स्वचालन के भीतर एक कदम के रूप में एम्बेड किया गया है:

  • एक मूल्य और उत्पाद स्क्रैपर जो Turnstile को हल करता है, संरक्षित पृष्ठों को प्राप्त करता है, और मूल्य परिवर्तनों पर अलर्ट करता है
  • एक खाता लॉगिन स्वचालन जो क्रेडेंशियल सबमिट करने से पहले Turnstile को हल करता है

Cloudflare Turnstile क्या है?

Cloudflare Turnstile एक CAPTCHA विकल्प है जो ब्राउज़र संकेतों का उपयोग करके आगंतुकों को स्वचालित रूप से सत्यापित करता है — कोई पहेली नहीं, कोई चेकबॉक्स नहीं। यह फ़ॉर्म (लॉगिन, साइनअप, चेकआउट) में एम्बेडेड एक छोटे विजेट के रूप में दिखाई देता है और तीन मोड में आता है: प्रबंधित (Managed), गैर-इंटरैक्टिव (Non-Interactive), और अदृश्य (Invisible)। समाधान के दृष्टिकोण से, मोड मायने नहीं रखता — आपको हमेशा समान दो पैरामीटर की आवश्यकता होती है: websiteURL और websiteKey।

Cloudflare Challenge के समान नहीं। यदि आपको एक पूर्ण-पृष्ठ "सुरक्षा सत्यापन कर रहा है..." स्क्रीन दिखाई देती है, तो वह एक Cloudflare Challenge है, Turnstile नहीं — इसके लिए एक अलग सॉल्वर की आवश्यकता होती है।


पूर्वापेक्षाएँ

शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित हैं:

  1. एक n8n इंस्टेंस — या तो स्व-होस्टेड या n8n Cloud
  2. एक CapSolver खाता — यहां साइन अप करें और अपनी एपीआई कुंजी प्राप्त करें
  3. CapSolver n8n नोड — n8n में एक आधिकारिक नोड के रूप में पहले से ही उपलब्ध है (कोई स्थापना की आवश्यकता नहीं)
  4. CapSolver ब्राउज़र एक्सटेंशन (वैकल्पिक लेकिन अनुशंसित) — लक्ष्य वेबसाइटों पर कैप्चा पैरामीटर की पहचान करने के लिए

महत्वपूर्ण: सुनिश्चित करें कि आपके CapSolver खाते में पर्याप्त शेष राशि है। Turnstile समाधान कार्य उपयोग के आधार पर क्रेडिट का उपभोग करते हैं।


n8n में CapSolver सेट करना

CapSolver n8n में एक आधिकारिक एकीकरण के रूप में उपलब्ध है — किसी सामुदायिक नोड स्थापना की आवश्यकता नहीं है। आप अपने वर्कफ़्लो का निर्माण करते समय इसे सीधे नोड पैनल में पा सकते हैं।

चूंकि यह एक आधिकारिक एकीकरण है, आपको n8n में एक क्रेडेंशियल बनाना होगा ताकि CapSolver नोड आपके खाते के साथ प्रमाणित हो सके।

चरण 1: क्रेडेंशियल पृष्ठ खोलें

अपने n8n इंस्टेंस पर जाएं और सेटिंग्स (Settings) → क्रेडेंशियल (Credentials) पर नेविगेट करें। आपको यहां अपने सभी कॉन्फ़िगर किए गए क्रेडेंशियल दिखाई देंगे।

CapSolver खाते को दर्शाने वाला n8n क्रेडेंशियल पृष्ठ

चरण 2: CapSolver क्रेडेंशियल बनाएं

  1. क्रेडेंशियल बनाएं (Create credential) पर क्लिक करें (ऊपर दाएं)
  2. "CapSolver" खोजें और CapSolver API चुनें
  3. अपनी एपीआई कुंजी (API Key) दर्ज करें — इसे सीधे CapSolver डैशबोर्ड से कॉपी करें
  4. अनुमत HTTP अनुरोध डोमेन (Allowed HTTP Request Domains) को सभी (All) (डिफ़ॉल्ट) पर सेट रहने दें
  5. सहेजें (Save) पर क्लिक करें

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

सफल कनेक्शन परीक्षण के साथ CapSolver क्रेडेंशियल कॉन्फ़िगरेशन

महत्वपूर्ण: आपके वर्कफ़्लो में प्रत्येक CapSolver नोड इस क्रेडेंशियल को संदर्भित करेगा। आपको इसे केवल एक बार बनाने की आवश्यकता है — आपके सभी सॉल्वर वर्कफ़्लो समान क्रेडेंशियल साझा करेंगे।

अब आप अपना Turnstile सॉल्वर वर्कफ़्लो बनाने के लिए तैयार हैं!


वर्कफ़्लो: Cloudflare Turnstile सॉल्वर एपीआई

यह वर्कफ़्लो एक POST एपीआई एंडपॉइंट बनाता है जो Turnstile पैरामीटर स्वीकार करता है और एक हल किया गया टोकन लौटाता है।

Cloudflare Turnstile

यह कैसे काम करता है

वर्कफ़्लो में चार नोड होते हैं:

  1. वेबहुक (Webhook) — Turnstile पैरामीटर के साथ आने वाले POST अनुरोध प्राप्त करता है
  2. Cloudflare Turnstile — चुनौती को CapSolver को भेजता है और समाधान की प्रतीक्षा करता है
  3. CapSolver त्रुटि? (CapSolver Error?) — IF नोड जो इस बात पर शाखा करता है कि समाधान विफल हुआ या नहीं ($json.error खाली नहीं है)
  4. वेबहुक को जवाब दें (Respond to Webhook) — सफलता पर समाधान लौटाता है, या विफलता पर {"error": "..."}

नोड कॉन्फ़िगरेशन

1. वेबहुक नोड

सेटिंग मान
HTTP विधि POST
पथ solver-turnstile
जवाब दें रिस्पांस नोड (Response Node)

यह एक एंडपॉइंट बनाता है: https://your-n8n-instance.com/webhook/solver-turnstile

2. CapSolver Cloudflare Turnstile नोड

पैरामीटर मान विवरण
ऑपरेशन Cloudflare Turnstile Cloudflare Turnstile पर सेट होना चाहिए
प्रकार AntiTurnstileTaskProxyLess इस कार्य प्रकार को प्रॉक्सी की आवश्यकता नहीं है
वेबसाइट URL {{ $json.body.websiteURL }} Turnstile विजेट वाले पृष्ठ का URL
वेबसाइट कुंजी {{ $json.body.websiteKey }} Turnstile साइट कुंजी
metadata.action (वैकल्पिक) कुछ साइटों को Turnstile चुनौती के लिए एक विशिष्ट एक्शन स्ट्रिंग की आवश्यकता होती है
metadata.cdata (वैकल्पिक) कस्टम डेटा जो कुछ साइटें सत्यापन के लिए Turnstile विजेट को पास करती हैं

कुछ साइटों को metadata.action और/या metadata.cdata की भी आवश्यकता होती है — आप इन्हें नोड के वैकल्पिक (Optional) अनुभाग के तहत जोड़ सकते हैं। इस नोड में अपने CapSolver क्रेडेंशियल (CapSolver credentials) का भी चयन करें।

3. CapSolver त्रुटि? नोड (IF)

सेटिंग मान
शर्त ={{ $json.error }} खाली नहीं है
सही शाखा त्रुटि (Error) वेबहुक को जवाब दें नोड पर रूट करता है
गलत शाखा सफलता (Success) वेबहुक को जवाब दें नोड पर रूट करता है

यह कैनवास पर त्रुटि पथ को स्पष्ट करता है। CapSolver नोड त्रुटि पर जारी रहता है (onError: continueRegularOutput), इसलिए विफलताएं वर्कफ़्लो को क्रैश करने के बजाय { "error": "..." } के रूप में यहां आती हैं।

4. वेबहुक नोड्स को जवाब दें

सफलता शाखा (Success branch) (CapSolver त्रुटि? का गलत आउटपुट):

सेटिंग मान
के साथ जवाब दें JSON
प्रतिक्रिया निकाय ={{ JSON.stringify($json.data) }}

इसका परीक्षण करें

अपने वेबहुक एंडपॉइंट पर एक POST अनुरोध भेजें:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/solver-turnstile \
  -H "Content-Type: application/json" \
  -d '{
    "websiteURL": "https://example.com/login",
    "websiteKey": "0x4AAAAAAADV8V8V8V8V8V8V"
  }'

अपेक्षित प्रतिक्रिया:

json Copy
{
  "taskId": "abc123...",
  "solution": {
    "token": "0.XXXXXXXXXXXXXXXX..."
  },
  "status": "ready"
}

इस वर्कफ़्लो को आयात करें

नीचे दिए गए JSON को कॉपी करें और इसे n8n में मेनू (Menu) → JSON से आयात करें (Import from JSON) के माध्यम से आयात करें:

वर्कफ़्लो JSON का विस्तार करने के लिए क्लिक करें
json Copy
{
  "nodes": [
    {
      "parameters": {
        "content": "## Turnstile — सॉल्वर एपीआई\n\n### यह कैसे काम करता है\n- वेबहुक द्वारा ट्रिगर किया गया\n- CapSolver: Cloudflare Turnstile\n- सशर्त शाखा\n- वेबहुक को जवाब दें\n- वेबहुक को जवाब दें\n\n### सेटअप\n- सेटिंग्स → क्रेडेंशियल के तहत अपनी **CapSolver** एपीआई कुंजी जोड़ें\n- प्लेसहोल्डर मान कॉन्फ़िगर करें\n- वर्कफ़्लो को सक्रिय करें",
        "height": 448,
        "width": 480
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -800,
        -176
      ],
      "id": "5ffd9cef-8202-4382-b878-6c99193e85c9",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## सॉल्वर अनुरोध प्राप्त करें और संसाधित करें\n\nआने वाले सॉल्वर अनुरोधों को संभालता है और उन्हें Cloudflare Turnstile के माध्यम से संसाधित करता है।",
        "height": 336,
        "width": 496,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -240,
        -176
      ],
      "id": "6ad0812b-7141-41e4-96d6-e72e08a24405",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## सॉल्वर प्रतिक्रिया का मूल्यांकन करें\n\nसॉल्वर प्रतिक्रिया में त्रुटियों की जाँच करता है और तदनुसार प्रवाह को निर्देशित करता है।",
        "height": 336,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        352,
        -176
      ],
      "id": "8839e65a-8735-4135-9b0f-07ac081ebd70",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## वेबहुक को जवाब दें\n\nसॉल्वर की सफलता या विफलता के आधार पर वेबहुक को एक प्रतिक्रिया भेजता है।",
        "height": 528,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        656,
        -256
      ],
      "id": "2fec67ea-a216-4717-8336-2aa060c352ab",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "solver-turnstile",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -192,
        0
      ],
      "id": "137be4f0-1762-4f0c-b993-c512d27e35de",
      "name": "Receive Solver Request",
      "webhookId": "901bdfa1-308c-4145-87fb-9c1958914751"
    },
    {
      "parameters": {
        "operation": "Cloudflare Turnstile",
        "websiteURL": "={{ $json.body.websiteURL }}",
        "websiteKey": "={{ $json.body.websiteKey }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        112,
        0
      ],
      "id": "954ff1f0-d5de-4468-b0d1-fbce03676676",
      "name": "Cloudflare Turnstile",
      "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-e5f6-7890-abcd-ef1234567890",
      "name": "CapSolver Error?"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ error: $json.error }) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        704,
        -64
      ],
      "id": "e1f2a3b4-c5d6-7890-abcd-123456789012",
      "name": "Respond to Webhook (Error)"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json.data) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        704,
        112
      ],
      "id": "db264e2b-48ce-4887-9b2b-2b8077993c30",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Receive Solver Request": {
      "main": [
        [
          {
            "node": "Cloudflare Turnstile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cloudflare Turnstile": {
      "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
          }
        ]
      ]
    }
  },
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}

एपीआई पैरामीटर संदर्भ

Turnstile सॉल्वर एपीआई एंडपॉइंट निम्नलिखित पैरामीटर स्वीकार करता है:

पैरामीटर आवश्यक विवरण
websiteURL हाँ Turnstile विजेट होस्ट करने वाले पृष्ठ का URL
websiteKey हाँ Turnstile साइट कुंजी
metadata.action नहीं कुछ साइटों द्वारा Turnstile चुनौती के लिए आवश्यक एक्शन स्ट्रिंग
metadata.cdata नहीं कस्टम डेटा जो कुछ साइटें सत्यापन के लिए Turnstile विजेट को पास करती हैं

टिप: आप पृष्ठ स्रोत का निरीक्षण करके या CapSolver ब्राउज़र एक्सटेंशन का उपयोग करके websiteURL और websiteKey की पहचान कर सकते हैं।

reCAPTCHA की तुलना में, Turnstile सरल है — आपको केवल दो आवश्यक पैरामीटर की आवश्यकता है। कुछ साइटों को वैकल्पिक metadata.action या metadata.cdata फ़ील्ड की भी आवश्यकता हो सकती है — यदि टोकन स्वीकार नहीं किया जा रहा है तो इन्हें नोड के वैकल्पिक (Optional) अनुभाग में जोड़ें।


वर्कफ़्लो: एक वेबसाइट पर एक Turnstile टोकन सबमिट करना

ऊपर दिया गया एपीआई वर्कफ़्लो दिखाता है कि एक हल किया गया Turnstile टोकन कैसे प्राप्त करें। लेकिन आप वास्तव में इसके साथ क्या करते हैं?

वास्तविक दुनिया के स्वचालन में, चुनौती को हल करना केवल आधा काम है। आपको लक्ष्य वेबसाइट पर टोकन सबमिट करना होगा — ठीक वैसे ही जैसे एक ब्राउज़र करेगा — Turnstile सुरक्षा के पीछे के डेटा या कार्रवाई को अनलॉक करने के लिए।

यहां सामान्य पैटर्न है:

  1. चुनौती को हल करें → CapSolver से टोकन प्राप्त करें
  2. टोकन सबमिट करें → इसे एक HTTP अनुरोध के माध्यम से लक्ष्य वेबसाइट पर भेजें (आमतौर पर एक cf-turnstile-response फ़ॉर्म फ़ील्ड के रूप में)
  3. प्रतिक्रिया सत्यापित करें → जांचें कि क्या वेबसाइट ने टोकन स्वीकार किया है
  4. परिणाम संसाधित करें → आपको आवश्यक डेटा निकालें

उदाहरण: Turnstile को हल करना और सबमिट करना

उदाहरण: https://example.com/ — एक Turnstile-संरक्षित वेबसाइट

वर्कफ़्लो प्रवाह

Copy
मैनुअल ट्रिगर → CapSolver Turnstile → HTTP POST अनुरोध → IF (सफलता की जाँच करें) → फ़ील्ड संपादित करें (डेटा निकालें)

यह कैसे काम करता है

  1. मैनुअल ट्रिगर (Manual Trigger) — वर्कफ़्लो को मैन्युअल रूप से शुरू करता है ("वर्कफ़्लो निष्पादित करें" पर क्लिक करें)। आप इसे किसी भी ट्रिगर से बदल सकते हैं — वेबहुक, शेड्यूल, ऐप इवेंट, आदि।
  2. CapSolver Cloudflare Turnstile — Turnstile चुनौती को हल करता है:
    • ऑपरेशन: Cloudflare Turnstile
    • वेबसाइट URL: https://example.com/login
    • वेबसाइट कुंजी: 0x4AAAAAAA... (पृष्ठ स्रोत का निरीक्षण करके इसे ढूंढें — देखें Turnstile पैरामीटर की पहचान कैसे करें)
  3. HTTP POST अनुरोध (HTTP POST Request) — हल किए गए टोकन को लक्ष्य वेबसाइट पर सबमिट करता है:
    • टोकन cf-turnstile-response फ़ॉर्म फ़ील्ड में भेजा जाता है
    • साइट द्वारा अपेक्षित किसी भी अन्य फ़ॉर्म फ़ील्ड को शामिल करें (जैसे, username, password)
    • Turnstile द्वारा आपको मान्य करने के बाद जब आप फ़ॉर्म सबमिट करते हैं तो एक ब्राउज़र यही करता है
  4. IF नोड (IF Node) — जांचता है कि क्या प्रतिक्रिया सफलता का संकेत देती है (जैसे, एक रीडायरेक्ट, एक सफलता संदेश, या विशिष्ट JSON फ़ील्ड)
  5. फ़ील्ड संपादित करें (Edit Fields) — प्रतिक्रिया से आपको आवश्यक डेटा निकालता है। एक वास्तविक परिदृश्य में, यह वह जगह है जहाँ आप विशिष्ट तत्वों (जैसे, उपयोगकर्ता डेटा, उत्पाद लिस्टिंग, डैशबोर्ड सामग्री) को निकालने और उन्हें अपने आउटपुट फ़ील्ड में मैप करने के लिए HTML नोड का उपयोग करके HTML को पार्स करेंगे।

मुख्य अवधारणा: प्रत्येक वेबसाइट टोकन सबमिशन को अलग तरह से संभालती है। इस उदाहरण में, टोकन एक cf-turnstile-response फ़ील्ड में जाता है।


वर्कफ़्लो: उपयोग-केस उदाहरण

ऊपर दिया गया सॉल्वर एपीआई और स्क्रैपिंग उदाहरण मुख्य पैटर्न दिखाते हैं: Turnstile को हल करें, टोकन सबमिट करें, परिणाम संसाधित करें। निम्नलिखित वर्कफ़्लो इस पैटर्न को उत्पादन-तैयार उपयोग मामलों तक विस्तारित करते हैं — प्रत्येक दोहरे ट्रिगर (शेड्यूल + वेबहुक), लगातार स्थिति ट्रैकिंग, और संरचित आउटपुट के साथ।

वर्कफ़्लो उद्देश्य
Turnstile स्क्रैपिंग — मूल्य और उत्पाद विवरण — CapSolver + शेड्यूल + वेबहुक हर 6 घंटे में मूल्य और उत्पाद नाम को स्क्रैप करता है, staticData में संग्रहीत पिछले मानों के खिलाफ तुलना करता है, परिवर्तनों पर अलर्ट करता है
Turnstile खाता लॉगिन — CapSolver + शेड्यूल + वेबहुक पहले हल करके, फिर टोकन के साथ क्रेडेंशियल POST करके कैप्चा-संरक्षित साइट पर अपने खाते में लॉग इन करता है

उदाहरण 1: स्क्रैपिंग

यह वर्कफ़्लो हर 6 घंटे (शेड्यूल) या मांग पर (वेबहुक) एक उत्पाद पृष्ठ को स्क्रैप करता है, HTML नोड का उपयोग करके मूल्य निकालता है, और इसे पहले से संग्रहीत मान के खिलाफ तुलना करता है।

शेड्यूल पथ:

Copy
हर 6 घंटे → कैप्चा हल करें → उत्पाद पृष्ठ प्राप्त करें → डेटा निकालें
  → डेटा की तुलना करें → डेटा बदला? → अलर्ट बनाएं / कोई बदलाव नहीं

मुख्य व्यवहार:

  • टोकन को cf-turnstile-response हेडर के रूप में भेजा जाता है (अपनी साइट के अपेक्षित प्रारूप के अनुकूल — कुछ साइटें एक अलग फ़ील्ड नाम का उपयोग कर सकती हैं)
  • HTML नोड CSS चयनकर्ताओं (.product-price, h1) के माध्यम से मूल्य और उत्पाद नाम निकालता है
  • $workflow.staticData.lastPrice पिछले मूल्य को निष्पादन के दौरान बनाए रखता है
  • मूल्य तुलना गिरावट (dropped) (गंभीरता: deal) और वृद्धि (increased) (गंभीरता: info) दोनों का पता लगाती है
पूर्ण वर्कफ़्लो JSON का विस्तार करने के लिए क्लिक करें (17 नोड)
json Copy
{
  "nodes": [
    {
      "parameters": {
        "content": "## Turnstile स्क्रैपिंग — मूल्य और उत्पाद विवरण — CapSolver + शेड्यूल + वेबहुक\n\n### यह कैसे काम करता है\n- scheduleTrigger द्वारा ट्रिगर किया गया\n- वेबहुक द्वारा ट्रिगर किया गया\n- सेट करता है: websiteURL, websiteKey\n- CapSolver: Cloudflare Turnstile\n- GET अनुरोध\n- HTML निकालें\n- कस्टम कोड\n\n### सेटअप\n- सेटिंग्स → क्रेडेंशियल के तहत अपनी **CapSolver** एपीआई कुंजी जोड़ें\n- प्लेसहोल्डर मान कॉन्फ़िगर करें\n- वर्कफ़्लो को सक्रिय करें",
        "height": 928,
        "width": 480
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1312,
        -272
      ],
      "id": "e7600f37-30e2-414c-8482-136e850c7767",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## अनुसूचित स्क्रैपिंग सेटअप\n\nहर 6 घंटे में स्क्रैपिंग प्रक्रिया को ट्रिगर करता है और लक्ष्य सेटिंग्स को कॉन्फ़िगर करता है।",
        "height": 288,
        "width": 496,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -752,
        -160
      ],
      "id": "b5976b58-4e25-4db2-8968-b918d51ae3db",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## अनुसूचित स्क्रैपिंग निष्पादन\n\nTurnstile को हल करता है, उत्पाद पृष्ठ प्राप्त करता है, और अनुसूचित ट्रिगर के लिए डेटा निकालता और तुलना करता है।",
        "height": 464,
        "width": 1456,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -144,
        -272
      ],
      "id": "81ae9453-8fac-49c8-906e-f6054a1d5311",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## वेबहुक स्क्रैपिंग सेटअप\n\nवेबहुक ट्रिगर के माध्यम से स्क्रैपिंग प्रक्रिया शुरू करता है और Turnstile को हल करता है।",
        "height": 304,
        "width": 528,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -752,
        304
      ],
      "id": "5b9d6820-6036-43d4-8d47-1c207864256e",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -704,
        -32
      ],
      "id": "ts-s-901",
      "name": "Every 6 Hours"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "cfg-001",
              "name": "websiteURL",
              "value": "https://YOUR-TARGET-SITE.com/product-page",
              "type": "string"
            },
            {
              "id": "cfg-002",
              "name": "websiteKey",
              "value": "YOUR_SITE_KEY_HERE",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -400,
        -32
      ],
      "id": "ts-s-900",
      "name": "Set Target Config [Schedule]"
    },
    {
      "parameters": {
        "operation": "Cloudflare Turnstile",
        "websiteURL": "={{ $json.websiteURL }}",
        "websiteKey": "={{ $json.websiteKey }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        0
      ],
      "id": "ts-s-902",
      "name": "Solve Turnstile",
      "credentials": {
        "capSolverApi": {
          "id": "BeBFMAsySMsMGeE9",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "url": "={{ $(\'Set Target Config [Schedule]\').first().json.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"
            },
            {
              "name": "cf-turnstile-response",
              "value": "={{ $json.data.solution.token }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "ts-s-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": "ts-s-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": [
        688,
        0
      ],
      "id": "ts-s-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": [
        864,
        0
      ],
      "id": "ts-s-906",
      "name": "Data Changed?"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "a1",
              "name": "alert",
              "value": "=Price {{ $json.direction }} for {{ $json.productName }}: {{ $json.previousPrice }} → {{ $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": [
        1152,
        -192
      ],
      "id": "ts-s-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": [
        1168,
        32
      ],
      "id": "ts-s-908",
      "name": "No Change"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "price-monitor-turnstile",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -704,
        432
      ],
      "id": "ts-s-909",
      "name": "Webhook Trigger",
      "webhookId": "28b7ba21-7608-45c2-8552-ec91b8ce7c9b"
    },
    {
      "parameters": {
        "operation": "Cloudflare Turnstile",
        "websiteURL": "={{ $json.body.websiteURL }}",
        "websiteKey": "={{ $json.body.websiteKey }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -368,
        432
      ],
      "id": "ts-s-910",
      "name": "Solve Turnstile [Webhook]",
      "credentials": {
        "capSolverApi": {
          "id": "BeBFMAsySMsMGeE9",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "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"
            },
            {
              "name": "cf-turnstile-response",
              "value": "={{ $json.data.solution.token }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        -80,
        432
      ],
      "id": "ts-s-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": [
        208,
        432
      ],
      "id": "ts-s-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": [
        512,
        432
      ],
      "id": "ts-s-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": [
        704,
        432
      ],
      "id": "ts-s-914",
      "name": "Data Changed? [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "a4",
              "name": "alert",
              "value": "=Price {{ $json.direction }} for {{ $json.productName }}: {{ $json.previousPrice }} → {{ $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": [
        960,
        240
      ],
      "id": "ts-s-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": [
        992,
        496
      ],
      "id": "ts-s-916",
      "name": "No Change [Webhook]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1248,
        384
      ],
      "id": "ts-s-917",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Every 6 Hours": {
      "main": [
        [
          {
            "node": "Set Target Config [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Target Config [Schedule]": {
      "main": [
        [
          {
            "node": "Solve Turnstile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve Turnstile": {
      "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 Turnstile [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve Turnstile [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
          }
        ]
      ]
    }
  },
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}

उदाहरण 2: खाता लॉगिन

यह वर्कफ़्लो कैप्चा-संरक्षित साइट पर लॉगिन को स्वचालित करता है। एक लॉगिन कॉन्फ़िग सेट करें (Set Login Config) नोड सभी पैरामीटर को केंद्रीकृत करता है — शेड्यूल पथ के लिए [शेड्यूल (Schedule)] और ऑन-डिमांड वेबहुक पथ के लिए [वेबहुक (Webhook)]। प्रत्येक पथ को कॉन्फ़िगर करने के लिए उपयुक्त कॉन्फ़िग नोड को संपादित करें।

शेड्यूल पथ:

Copy
हर 24 घंटे → लॉगिन कॉन्फ़िग सेट करें → कैप्चा हल करें → लॉगिन सबमिट करें
  → लॉगिन सफल? → लॉगिन सफलता चिह्नित करें / लॉगिन विफल चिह्नित करें

मुख्य व्यवहार:

  • डिफ़ॉल्ट रूप से Cloudflare Turnstile — अन्य कैप्चा प्रकारों के लिए सॉल्व कैप्चा नोड में ऑपरेशन (Operation) बदलें।
  • बॉडी पैरामीटर हार्डकोडेड हैं: email, password, और cf-turnstile-response (अपनी साइट के फ़ील्ड नामों से मेल खाने के लिए सबमिट लॉगिन नोड को सीधे संपादित करें)।
  • लॉगिन सफल? (Login Successful?) जांच statusCode < 400 और प्रतिक्रिया बॉडी में एक कॉन्फ़िगर करने योग्य successMarker दोनों का मूल्यांकन करती है।
  • वेबहुक पथ (Webhook path) समान हार्डकोडेड प्लेसहोल्डर मानों के साथ लॉगिन कॉन्फ़िग सेट करें [वेबहुक] (Set Login Config [Webhook]) का उपयोग करता है — ऑन-डिमांड वेबहुक पथ को कॉन्फ़िगर करने के लिए उस नोड को संपादित करें।
  • वेबहुक पथ वेबहुक को जवाब दें (Respond to Webhook) के माध्यम से JSON के रूप में परिणाम लौटाता है।
पूर्ण वर्कफ़्लो JSON का विस्तार करने के लिए क्लिक करें (15 नोड)
json Copy
{
  "nodes": [
    {
      "parameters": {
        "content": "## Turnstile खाता लॉगिन — CapSolver + शेड्यूल + वेबहुक\n\n### यह कैसे काम करता है\n- scheduleTrigger द्वारा ट्रिगर किया गया\n- वेबहुक द्वारा ट्रिगर किया गया\n- सेट करता है: websiteURL, websiteKey, successMarker\n- CapSolver: Cloudflare Turnstile\n- POST अनुरोध\n- सशर्त शाखा\n- सेट करता है: status, checkedAt\n\n### सेटअप\n- सेटिंग्स → क्रेडेंशियल के तहत अपनी **CapSolver** एपीआई कुंजी जोड़ें\n- प्लेसहोल्डर मान कॉन्फ़िगर करें\n- वर्कफ़्लो को सक्रिय करें",
        "height": 768,
        "width": 480
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1168,
        -128
      ],
      "id": "887d0c97-af49-4830-99a3-8dd04a78ec10",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## अनुसूचित लॉगिन प्रक्रिया\n\nहर 24 घंटे में ट्रिगर होने वाली लॉगिन प्रक्रिया को संभालता है",
        "height": 416,
        "width": 1920,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -608,
        -128
      ],
      "id": "3fac5b95-ad9c-4029-ac4b-c99952659970",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## वेबहुक ट्रिगर लॉगिन प्रक्रिया\n\nवेबहुक द्वारा ट्रिगर होने वाली लॉगिन प्रक्रिया को संभालता है",
        "height": 384,
        "width": 2288,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -624,
        336
      ],
      "id": "08fa3f86-8373-44ab-abb1-1358cbb3f963",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 24
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -560,
        48
      ],
      "id": "ts-l-01",
      "name": "Every 24 Hours"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "l1",
              "name": "websiteURL",
              "value": "https://YOUR-LOGIN-PAGE.com",
              "type": "string"
            },
            {
              "id": "l2",
              "name": "websiteKey",
              "value": "YOUR_SITE_KEY_HERE",
              "type": "string"
            },
            {
              "id": "l3",
              "name": "successMarker",
              "value": "account-dashboard",
              "type": "string"
            },
            {
              "id": "l4",
              "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": [
        -240,
        48
      ],
      "id": "ts-l-02",
      "name": "Set Login Config [Schedule]"
    },
    {
      "parameters": {
        "operation": "Cloudflare Turnstile",
        "websiteURL": "={{ $json.websiteURL }}",
        "websiteKey": "={{ $json.websiteKey }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        256,
        48
      ],
      "id": "ts-l-03",
      "name": "Solve Turnstile [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": "email",
              "value": "your-email@example.com"
            },
            {
              "name": "password",
              "value": "YOUR_ACCOUNT_PASSWORD"
            },
            {
              "name": "cf-turnstile-response",
              "value": "={{ $json.data.solution.token }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "neverError": true
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        576,
        48
      ],
      "id": "ts-l-04",
      "name": "Submit Login [Schedule]"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "strict"
          },
          "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": [
        896,
        48
      ],
      "id": "ts-l-05",
      "name": "Login OK? [Schedule]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "s1",
              "name": "status",
              "value": "success",
              "type": "string"
            },
            {
              "id": "s2",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1168,
        -48
      ],
      "id": "ts-l-06",
      "name": "Mark Success"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "f1",
              "name": "status",
              "value": "failed",
              "type": "string"
            },
            {
              "id": "f2",
              "name": "statusCode",
              "value": "={{ $json.statusCode }}",
              "type": "number"
            },
            {
              "id": "f3",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1168,
        128
      ],
      "id": "ts-l-07",
      "name": "Mark Failed"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "account-login-turnstile",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -560,
        448
      ],
      "id": "ts-l-08",
      "name": "Webhook Trigger",
      "webhookId": "9c7a53a4-d3ee-495b-9381-3a9425bb1b36"
    },
    {
      "parameters": {
        "operation": "Cloudflare Turnstile",
        "websiteURL": "={{ $json.body.websiteURL }}",
        "websiteKey": "={{ $json.body.websiteKey }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        256,
        448
      ],
      "id": "ts-l-09",
      "name": "Solve Turnstile [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": "cf-turnstile-response",
              "value": "={{ $json.data.solution.token }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "neverError": true
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        576,
        448
      ],
      "id": "ts-l-10",
      "name": "Submit Login [Webhook]"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "strict"
          },
          "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": [
        896,
        448
      ],
      "id": "ts-l-11",
      "name": "Login OK? [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "ws1",
              "name": "status",
              "value": "success",
              "type": "string"
            },
            {
              "id": "ws2",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1168,
        352
      ],
      "id": "ts-l-12",
      "name": "Mark Success [W]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "wf1",
              "name": "status",
              "value": "failed",
              "type": "string"
            },
            {
              "id": "wf2",
              "name": "statusCode",
              "value": "={{ $json.statusCode }}",
              "type": "number"
            },
            {
              "id": "wf3",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1168,
        544
      ],
      "id": "ts-l-13",
      "name": "Mark Failed [W]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1504,
        448
      ],
      "id": "ts-l-14",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Every 24 Hours": {
      "main": [
        [
          {
            "node": "Set Login Config [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Login Config [Schedule]": {
      "main": [
        [
          {
            "node": "Solve Turnstile [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve Turnstile [Schedule]": {
      "main": [
        [
          {
            "node": "Submit Login [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Login [Schedule]": {
      "main": [
        [
          {
            "node": "Login OK? [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Login OK? [Schedule]": {
      "main": [
        [
          {
            "node": "Mark Success",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Mark Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Solve Turnstile [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve Turnstile [Webhook]": {
      "main": [
        [
          {
            "node": "Submit Login [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Login [Webhook]": {
      "main": [
        [
          {
            "node": "Login OK? [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Login OK? [Webhook]": {
      "main": [
        [
          {
            "node": "Mark Success [W]",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Mark Failed [W]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Success [W]": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Failed [W]": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}

निष्कर्ष

आपने n8n और CapSolver का उपयोग करके Cloudflare Turnstile-सुलझाने वाली एपीआई और उत्पादन-तैयार स्क्रैपिंग वर्कफ़्लो बनाना सीख लिया है — बिना किसी पारंपरिक कोडिंग की आवश्यकता के।

इस गाइड में, हमने कवर किया:

  • वेबहुक-आधारित वर्कफ़्लो का उपयोग करके Cloudflare Turnstile के लिए एक एपीआई सॉल्वर एंडपॉइंट।
  • उपयोग-केस उदाहरण — स्क्रैपिंग और खाता लॉगिन — यह दिखाते हुए कि हल किए गए टोकन कैसे सबमिट करें और संरक्षित डेटा को कैसे संसाधित करें।
  • पृष्ठ स्रोत का निरीक्षण करके Turnstile पैरामीटर की पहचान कैसे करें।
  • टोकन हैंडलिंग, त्रुटि प्रबंधन और उत्पादन उपयोग के लिए सर्वोत्तम अभ्यास।

मुख्य बात: Turnstile चुनौती को हल करना केवल आधा काम है — आपको संरक्षित डेटा को अनलॉक करने के लिए लक्ष्य वेबसाइट पर टोकन सबमिट करना होगा।

टिप: ये वर्कफ़्लो शेड्यूल + वेबहुक ट्रिगर का उपयोग करते हैं, लेकिन आप ट्रिगर नोड को किसी भी n8n ट्रिगर से बदल सकते हैं — मैनुअल, ऐप इवेंट, फ़ॉर्म सबमिशन, आदि। डेटा प्राप्त करने के बाद, Google शीट्स, डेटाबेस, क्लाउड स्टोरेज में परिणाम सहेजने के लिए या टेलीग्राम/स्लैक/ईमेल के माध्यम से अलर्ट भेजने के लिए n8n के अंतर्निहित नोड्स का उपयोग करें।


शुरू करने के लिए तैयार हैं? CapSolver के लिए साइन अप करें और अपनी पहली रिचार्ज पर अतिरिक्त 8% बोनस के लिए बोनस कोड n8n का उपयोग करें!

CapSolver बोनस कोड बैनर

अक्सर पूछे जाने वाले प्रश्न

Cloudflare Turnstile क्या है?

Cloudflare Turnstile एक CAPTCHA विकल्प है जो आगंतुकों को पहेलियाँ हल करने की आवश्यकता के बिना सत्यापित करता है। यह ब्राउज़र संकेतों और व्यवहार विश्लेषण का उपयोग करके पृष्ठभूमि में चलता है ताकि यह निर्धारित किया जा सके कि कोई आगंतुक मानव है या नहीं।

एक Turnstile चुनौती को हल करने में कितना खर्च आता है?

मूल्य उपयोग के आधार पर भिन्न होता है। वर्तमान Turnstile दरों के लिए CapSolver मूल्य निर्धारण पृष्ठ देखें।

एक Turnstile चुनौती को हल करने में कितना समय लगता है?

Turnstile चुनौतियों को आमतौर पर कुछ सेकंड में हल किया जाता है क्योंकि इसमें कोई छवि चुनौतियां शामिल नहीं होती हैं।

क्या मैं इस वर्कफ़्लो को n8n Cloud के साथ उपयोग कर सकता हूँ?

हाँ! यह वर्कफ़्लो स्व-होस्टेड n8n और n8n Cloud दोनों के साथ काम करता है। CapSolver नोड एक आधिकारिक एकीकरण के रूप में पहले से ही उपलब्ध है — बस अपनी एपीआई क्रेडेंशियल जोड़ें।

मैं एक वेबसाइट के लिए Turnstile साइट कुंजी कैसे ढूंढूं?

HTML में data-sitekey के लिए पृष्ठ स्रोत खोजें या JavaScript में turnstile.render() देखें। आप DevTools (F12) → नेटवर्क (Network) टैब भी खोल सकते हैं और अनुरोधों में साइट कुंजी खोजने के लिए turnstile द्वारा फ़िल्टर कर सकते हैं। एक विस्तृत गाइड के लिए, CapSolver दस्तावेज़ देखें।

CapSolver ने एक टोकन लौटाया लेकिन वेबसाइट ने अभी भी इसे अस्वीकार कर दिया — क्यों?

कई चीजें इसका कारण बन सकती हैं। सबसे पहले, टोकन जल्दी समाप्त हो जाते हैं — सुनिश्चित करें कि आप टोकन तुरंत सबमिट कर रहे हैं। दूसरा, सत्यापित करें कि आप टोकन सही जगह पर भेज रहे हैं: वास्तविक नेटवर्क अनुरोध का निरीक्षण करें जो ब्राउज़र फ़ॉर्म सबमिट करते समय करता है (DevTools → नेटवर्क टैब) और फ़ील्ड नाम (cf-turnstile-response विशिष्ट है लेकिन सार्वभौमिक नहीं), अनुरोध विधि, और एंडपॉइंट सभी आपके द्वारा n8n में कॉन्फ़िगर किए गए से मेल खाते हैं। तीसरा, कुछ साइटों को metadata.action या metadata.cdata पैरामीटर की आवश्यकता होती है — यह जांचने के लिए CapSolver एक्सटेंशन का उपयोग करें कि क्या इनमें से कोई भी लागू होता है। यदि टोकन अभी भी अस्वीकार कर दिया जाता है, तो साइट-विशिष्ट सहायता के लिए CapSolver समर्थन से संपर्क करें।

और देखें

Web ScrapingApr 22, 2026

रस्ट वेब स्क्रैपिंग आर्किटेक्चर लिए स्केलेबल डेटा निष्कर्षण

Rust में वेब स्क्रैपिंग के स्केलेबल आर्किटेक्चर सीखें, reqwest, scraper, असिंक्रोनस स्क्रैपिंग, हेडलेस ब्राउज़र स्क्रैपिंग, प्रॉक्सी रोटेशन, और संगत CAPTCHA का निपटारा।

Rajinder Singh
Rajinder Singh
Web ScrapingFeb 03, 2026

रॉक्सीब्राउज़र में कैप्चा हल करना कैपसॉल्वर एकीकरण के साथ

CapSolver के साथ RoxyBrowser के एकीकरण करें ताकि ब्राउज़र के कार्यों को स्वचालित किया जा सके और reCAPTCHA, Turnstile और अन्य CAPTCHAs को बायपास किया जा सके।

विषय-सूची

Rajinder Singh
Rajinder Singh
Web ScrapingFeb 02, 2026

ईजीस्पाइडर में कैप्चा हल करें कैपसॉल्वर एकीकरण के साथ

ईज़ीस्पाइडर एक दृश्य, नो-कोड वेब स्क्रैपिंग और ब्राउज़र ऑटोमेशन टूल है, जबकि कैपसॉल्वर के साथ जुड़ा हुआ है, तो यह reCAPTCHA v2 और Cloudflare Turnstile जैसे CAPTCHA को विश्वसनीय रूप से हल कर सकता है, जो वेबसाइटों पर सुचारू रूप से स्वचालित डेटा निकालने की अनुमति देता है।

Rajinder Singh
Rajinder Singh
Web ScrapingJan 29, 2026

रीकैपचा वी२ कैसे हल करें रीलेवेंस एआई में कैपसॉल्वर एकीकरण के साथ

रिलेवेंस एआई उपकरण बनाएं जो reCAPTCHA v2 को CapSolver के उपयोग से हल करे। ब्राउजर ऑटोमेशन के बिना एपीआई के माध्यम से फॉर्म जमाकर स्वचालित करें।

Rajinder Singh
Rajinder Singh
ब्लॉग
Web Scraping