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

© 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
  • शब्दावली
  • स्थिति

कानूनी

  • सेवा की शर्तें
  • गोपनीयता नीति
  • धनवापसी नीति
  • मेरी व्यक्तिगत जानकारी न बेचें
//कैसे AWS WAF को n8n में CapSolver के साथ हल करें
Mar12, 2026

कैसे AWS WAF को n8n में CapSolver के साथ हल करें

Rajinder Singh

Rajinder Singh

Deep Learning Researcher

AWS WAF (वेब एप्लिकेशन फ़ायरवॉल) अमेज़न का एंटरप्राइज़-ग्रेड बॉट सुरक्षा सिस्टम है जिसका उपयोग इंटरनेट पर कुछ सबसे बड़े वेबसाइट्स द्वारा किया जाता है। पारंपरिक CAPTCHA की तरह जो इमेज पहेलियाँ या चेकबॉक्स दिखाते हैं, AWS WAF अदृश्य चुनौतियाँ और टोकन-आधारित सत्यापन का उपयोग करता है — जिससे इसे ऑटोमेशन टूल्स के लिए संभालना विशेष रूप से चुनौतीपूर्ण बन जाता है।

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

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

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

Solver API — एक पुन: उपयोग योग्य एंडपॉइंट जिसे आपके अन्य टूल कॉल कर सकते हैं:

  • एक AWS WAF सॉल्वर API

प्रत्यक्ष उपयोग वर्कफ़्लोज़ — CapSolver को बड़े ऑटोमेशन के अंदर एक स्टेप के रूप में एम्बेड किया गया:

  • एक प्राइस और प्रोडक्ट स्क्रैपर जो AWS WAF को हल करता है, संरक्षित पेज लाता है, और प्राइस बदलाव पर अलर्ट करता है
  • एक अकाउंट लॉगिन ऑटोमेशन जो क्रेडेंशियल्स सबमिट करने से पहले AWS WAF को हल करता है

AWS WAF क्या है?

AWS WAF (वेब एप्लिकेशन फ़ायरवॉल) अमेज़न वेब सर्विसेज़ की बॉट रोकथाम और वेब सुरक्षा सेवा है। यह वेबसाइट्स को सामान्य वेब एक्सप्लॉइट्स, बॉट ट्रैफ़िक, और स्वचालित दुरुपयोग से बचाता है। कई उच्च-ट्रैफ़िक साइट्स — विशेष रूप से ई-कॉमर्स प्लेटफ़ॉर्म, वित्तीय सेवाएं, और एंटरप्राइज़ एप्लिकेशन — AWS WAF का उपयोग अदृश्य CAPTCHA चुनौतियों के पीछे पहुंच को नियंत्रित करने के लिए करते हैं।

AWS WAF reCAPTCHA और Turnstile से कैसे अलग है:

  • कोई साइट की आवश्यकता नहीं — reCAPTCHA या Turnstile के विपरीत, AWS WAF कोई सार्वजनिक साइट की नहीं देता। हल शुरू करने के लिए केवल websiteURL की आवश्यकता होती है।
  • कुकी-आधारित प्रमाणीकरण — AWS WAF एक टोकन वापस करने के बजाय, एक aws-waf-token कुकी लौटाता है जिसे बाद के अनुरोधों में Cookie HTTP हेडर के माध्यम से भेजना होता है।
  • कई वैकल्पिक पैरामीटर — AWS WAF साइट की कॉन्फ़िगरेशन के आधार पर awsKey, awsIv, awsContext, awsChallengeJS और अन्य पैरामीटर प्रदान कर सकता है। ये वैकल्पिक हैं और केवल विशिष्ट कार्यान्वयन के लिए आवश्यक हैं।
  • अदृश्य चुनौती — AWS WAF चुनौतियाँ आमतौर पर पूरी तरह से पृष्ठभूमि में जावास्क्रिप्ट का उपयोग करके चलती हैं, उपयोगकर्ता के लिए कोई दृश्य विजेट नहीं होता।

CloudFront से अलग। AWS WAF वह फ़ायरवॉल लेयर है जो वेब एप्लिकेशन के सामने होती है। CloudFront अमेज़न का CDN है। एक साइट CloudFront का उपयोग AWS WAF के बिना कर सकती है, या AWS WAF का उपयोग CloudFront के बिना कर सकती है — ये अलग-अलग सेवाएं हैं, हालांकि आमतौर पर साथ में उपयोग की जाती हैं।


आवश्यकताएँ

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

  1. एक n8n इंस्टेंस — या तो स्वयं-होस्टेड या n8n क्लाउड
  2. एक CapSolver खाता — यहाँ साइन अप करें और अपना API कुंजी प्राप्त करें
  3. CapSolver n8n नोड — n8n में आधिकारिक नोड के रूप में पहले से उपलब्ध (इंस्टॉलेशन की आवश्यकता नहीं)

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


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

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

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

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

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

n8n credentials page showing CapSolver account

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

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

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

CapSolver credential configuration with successful connection test

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

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


AWS WAF पैरामीटर कैसे पहचानें

AWS WAF चुनौती को हल करने से पहले, आपको यह पुष्टि करनी होगी कि लक्षित साइट AWS WAF का उपयोग कर रही है और कोई वैकल्पिक पैरामीटर इकट्ठा करने होंगे। सबसे आसान तरीका है CapSolver ब्राउज़र एक्सटेंशन का उपयोग करना और मैनुअल निरीक्षण करना।

चरण 1: AWS WAF संकेत देखें

अपने लक्षित वेबसाइट पर जाएं और DevTools (F12) खोलें। इन संकेतों की तलाश करें:

  • कुकीज़ — Application टैब में aws-waf-token कुकी देखें
  • नेटवर्क अनुरोध — captcha.awswaf.com या challenge.js वाले URL के लिए अनुरोध देखें
  • प्रतिक्रिया हेडर — AWS WAF अक्सर x-amzn-waf-* हेडर लौटाता है

चरण 2: वैकल्पिक पैरामीटर इकट्ठा करें (यदि आवश्यक हो)

अधिकांश AWS WAF सॉल्व केवल websiteURL की आवश्यकता होती है। हालांकि, कुछ साइट्स अतिरिक्त पैरामीटर प्रदान करती हैं जो सॉल्व की सटीकता बढ़ा सकते हैं:

पैरामीटर कहाँ मिलेगा विवरण
awsKey पेज स्रोत / JS वेरिएबल्स कैप्चा पेज द्वारा लौटाया गया key मान
awsIv पेज स्रोत / JS वेरिएबल्स कैप्चा पेज द्वारा लौटाया गया iv मान
awsContext पेज स्रोत / JS वेरिएबल्स कैप्चा पेज द्वारा लौटाया गया context मान
awsChallengeJS नेटवर्क टैब challenge.js URL (जैसे, https://captcha.awswaf.com/.../challenge.js)
awsApiJs नेटवर्क टैब jsapi.js URL
awsProblemUrl नेटवर्क टैब समस्या एंडपॉइंट URL
awsApiKey नेटवर्क टैब समस्या एंडपॉइंट से api_key मान
awsExistingToken कुकीज़ यदि रिफ्रेश कर रहे हों तो पिछला aws-waf-token

टिप: अधिकांश साइट्स के लिए केवल websiteURL की आवश्यकता होती है। पहले केवल वही पैरामीटर दें और यदि टोकन स्वीकार नहीं हो रहा है तो वैकल्पिक पैरामीटर जोड़ें।

कैप्चा पैरामीटर पहचानने के लिए विस्तृत गाइड के लिए, देखें आधिकारिक CapSolver दस्तावेज़।


वर्कफ़्लो: AWS WAF सॉल्वर API

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

AWS WAF solver workflow in n8n

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

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

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

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

1. Webhook नोड

सेटिंग मान
HTTP Method POST
Path solver-aws-waf
Respond Response Node

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

2. CapSolver AWS WAF नोड

पैरामीटर मान विवरण
Operation AWS WAF AWS WAF पर सेट होना चाहिए
Type AntiAwsWafTaskProxyLess कोई प्रॉक्सी आवश्यक नहीं (डिफ़ॉल्ट)। कड़े साइट्स के लिए प्रॉक्सी के साथ AntiAwsWafTask का उपयोग करें
Website URL {{ $json.body.websiteURL }} AWS WAF चुनौती वाले पेज का URL
awsKey (वैकल्पिक) कैप्चा पेज द्वारा लौटाया गया key मान
awsIv (वैकल्पिक) कैप्चा पेज द्वारा लौटाया गया iv मान
awsContext (वैकल्पिक) कैप्चा पेज द्वारा लौटाया गया context मान
awsChallengeJS (वैकल्पिक) challenge.js लिंक
awsApiJs (वैकल्पिक) jsapi.js लिंक

Turnstile/reCAPTCHA से मुख्य अंतर: AWS WAF को websiteKey की आवश्यकता नहीं होती। केवल websiteURL अनिवार्य है। साथ ही इस नोड में अपने CapSolver क्रेडेंशियल चुनें।

3. CapSolver Error? नोड (IF)

सेटिंग मान
Condition ={{ $json.error }} खाली नहीं है
True branch Error Respond to Webhook नोड की ओर जाता है
False branch Success Respond to Webhook नोड की ओर जाता है

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

4. Respond to Webhook नोड्स

सफलता शाखा (CapSolver Error? का false आउटपुट):

सेटिंग मान
Respond With JSON
Response Body ={{ JSON.stringify($json.data) }}

त्रुटि शाखा (CapSolver Error? का true आउटपुट):

सेटिंग मान
Respond With JSON
Response Body ={{ JSON.stringify({ error: $json.error }) }}

त्रुटि संदेश दो प्रारूपों में से एक का पालन करते हैं, यह निर्भर करता है कि विफलता कहाँ हुई:

विफलता बिंदु प्रारूप
टास्क निर्माण अस्वीकृत (गलत कुंजी, बैलेंस नहीं, अमान्य डेटा, आदि) {"error": "Failed to create task: Request failed with status code 400"}
टास्क बना लेकिन कैप्चा हल नहीं हो सका {"error": "Solve failed: <reason>"}
120 सेकंड के बाद सॉल्व टाइमआउट {"error": "Get task result timeout: unable to solve within 120000 seconds"}

नोट: टास्क निर्माण विफलताएँ (गलत API कुंजी, शून्य बैलेंस, अमान्य टास्क डेटा) सभी एक ही HTTP 400 संदेश के रूप में आती हैं — n8n नोड HTTP अपवाद को पकड़ता है इससे पहले कि CapSolver की त्रुटि बॉडी पढ़े।

सामान्य त्रुटि उदाहरण:

json Copy
{"error": "Failed to create task: Request failed with status code 400"}
{"error": "Solve failed: Invalid parameters"}
{"error": "Get task result timeout: unable to solve within 120000 seconds"}

इसे टेस्ट करें

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

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/solver-aws-waf \
  -H "Content-Type: application/json" \
  -d '{
    "websiteURL": "https://example.com/protected-page"
  }'

आप वैकल्पिक पैरामीटर भी शामिल कर सकते हैं:

bash Copy
curl -X POST https://your-n8n-instance.com/webhook/solver-aws-waf \
  -H "Content-Type: application/json" \
  -d '{
    "websiteURL": "https://example.com/protected-page",
    "awsKey": "AQIDAHjc...",
    "awsIv": "CgAHAQABAA...",
    "awsContext": "gxPZ0w9O..."
  }'

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

json Copy
{
  "taskId": "abc123...",
  "solution": {
    "cookie": "aws-waf-token=76b8ee9e-fa6a-4c36-b8e9-0c1d97EXAMPLE..."
  },
  "status": "ready"
}

महत्वपूर्ण: समाधान एक cookie फ़ील्ड लौटाता है (अन्य कैप्चा प्रकारों की तरह token या gRecaptchaResponse नहीं)। इसका मान एक पूर्ण कुकी स्ट्रिंग होता है जैसे aws-waf-token=LONG_VALUE जिसे आप Cookie HTTP हेडर के माध्यम से भेजते हैं।

इस वर्कफ़्लो को इम्पोर्ट करें

नीचे दिया गया JSON कॉपी करें और n8n में Menu -> Import from JSON के माध्यम से इम्पोर्ट करें:

वर्कफ़्लो JSON विस्तार के लिए क्लिक करें
json Copy
{
  "nodes": [
    {
      "parameters": {
        "content": "## AWS WAF \u2014 Solver API\n\n### How it works\n\n1. Receives requests via a webhook trigger.\n2. Solves AWS WAF challenges using CapSolver.\n3. Evaluates the result for potential errors.\n4. Sends an error response if CapSolver fails.\n5. Sends a success response if CapSolver succeeds.\n\n### Setup steps\n\n- [ ] Configure webhook node to receive requests.\n- [ ] Ensure CapSolver node is properly configured with necessary settings.\n- [ ] Set up the 'If' node conditions correctly.\n\n### Customization\n\nCustomize the webhook response messages in the 'Respond to Webhook' nodes for error and success cases.",
        "width": 480,
        "height": 608
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -800,
        -240
      ],
      "id": "4d932006-48c5-42d6-90d8-5f5e5575f789",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## Handle Solver Request\n\nReceives incoming requests and solves AWS WAF challenges.",
        "width": 496,
        "height": 304,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -240,
        -128
      ],
      "id": "25adfac1-3634-4356-bfdb-494c6a4671db",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## Evaluate and Respond\n\nEvaluates the CapSolver results and sends appropriate responses.",
        "width": 496,
        "height": 496,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        352,
        -240
      ],
      "id": "4ad350dd-e339-482b-8565-be63f64061f4",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "solver-aws-waf",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -192,
        0
      ],
      "id": "aw111111-1111-1111-1111-aw1111111101",
      "name": "Receive Solver Request",
      "webhookId": "aw111111-aaaa-bbbb-cccc-aw1111111101",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "operation": "AWS WAF",
        "websiteURL": "={{ $json.body.websiteURL }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        112,
        0
      ],
      "id": "aw111111-1111-1111-1111-aw1111111102",
      "name": "Solve AWS WAF",
      "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.3,
      "position": [
        400,
        0
      ],
      "id": "aw111111-1111-1111-1111-aw1111111103",
      "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": "aw111111-1111-1111-1111-aw1111111104",
      "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": "aw111111-1111-1111-1111-aw1111111105",
      "name": "Respond to Webhook (Success)"
    }
  ],
  "connections": {
    "Receive Solver Request": {
      "main": [
        [
          {
            "node": "Solve AWS WAF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve AWS WAF": {
      "main": [
        [
          {
            "node": "CapSolver Error?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CapSolver Error?": {
      "main": [
        [
          {
            "node": "Respond to Webhook (Error)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond to Webhook (Success)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}
```

API पैरामीटर संदर्भ

AWS WAF सॉल्वर API एंडपॉइंट निम्नलिखित पैरामीटर स्वीकार करता है:

पैरामीटर आवश्यक विवरण
websiteURL हाँ AWS WAF चुनौती वाले पेज का URL
awsKey नहीं कैप्चा पेज द्वारा लौटाया गया key मान
awsIv नहीं कैप्चा पेज द्वारा लौटाया गया iv मान
awsContext नहीं कैप्चा पेज द्वारा लौटाया गया context मान
awsChallengeJS नहीं कैप्चा पेज से challenge.js लिंक
awsApiJs नहीं कैप्चा पेज से jsapi.js लिंक
awsProblemUrl नहीं समस्या एंडपॉइंट URL
awsApiKey नहीं समस्या एंडपॉइंट का api_key मान
awsExistingToken नहीं पिछला aws-waf-token जो अंतिम सत्यापन के लिए उपयोग किया गया था

टिप: आप websiteURL को पेज URL निरीक्षण करके पहचान सकते हैं। DevTools का उपयोग करके aws-waf-token कुकीज़ और captcha.awswaf.com के नेटवर्क अनुरोधों की जांच करें।

reCAPTCHA और Turnstile की तुलना में, AWS WAF एक तरीके से सरल है — आपको केवल एक आवश्यक पैरामीटर (websiteURL) चाहिए, साइट की कोई key आवश्यक नहीं है। हालांकि, इसमें सूक्ष्म समायोजन के लिए अधिक वैकल्पिक पैरामीटर होते हैं।


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

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

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

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

  1. चुनौती हल करें -> CapSolver से कुकी प्राप्त करें (solution.cookie)
  2. कुकी सबमिट करें -> इसे Cookie HTTP हेडर के माध्यम से लक्ष्य वेबसाइट को भेजें
  3. प्रतिक्रिया सत्यापित करें -> जांचें कि वेबसाइट ने कुकी स्वीकार की या नहीं
  4. परिणाम संसाधित करें -> आवश्यक डेटा निकालें

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

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

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

Copy
मैनुअल ट्रिगर -> CapSolver AWS WAF -> HTTP GET अनुरोध (Cookie हेडर के साथ) -> यदि (सफलता जांचें) -> वैध / अमान्य

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

  1. मैनुअल ट्रिगर — वर्कफ़्लो को मैन्युअल रूप से शुरू करता है ("Execute workflow" क्लिक करें)। आप इसे किसी भी ट्रिगर से बदल सकते हैं — वेबहुक, शेड्यूल, ऐप इवेंट आदि।
  2. CapSolver AWS WAF — AWS WAF चुनौती हल करता है:
    • ऑपरेशन: AWS WAF
    • वेबसाइट URL: https://example.com/protected-page
    • प्रकार: AntiAwsWafTaskProxyLess
  3. HTTP {
    "name": "AWS WAF Submit Token Example",
    "nodes": [
    {
    "parameters": {
    "content": "## AWS WAF — टोकन हल करें और सबमिट करें\n\n
    किसके लिए है:** जो कोई भी AWS WAF-संरक्षित पेजों पर फॉर्म सबमिशन ऑटोमेट कर रहा है।\n\nक्या करता है: AWS WAF चुनौती हल करता है, टोकन लक्ष्य साइट को सबमिट करता है, और जांचता है कि इसे स्वीकार किया गया या नहीं।\n\n### यह कैसे काम करता है\n1. CapSolver के माध्यम से AWS WAF हल करें\n2. हल किया गया टोकन लक्ष्य साइट को POST करें\n3. प्रतिक्रिया में सफलता मार्कर जांचें → वैध या अमान्य के लिए मार्गदर्शन करें\n\n### सेटअप\n1. अपनी CapSolver API कुंजी Settings → Credentials में जोड़ें\n2. लक्ष्य URL, साइट की, और फॉर्म फ़ील्ड बदलें\n3. अपने लक्ष्य साइट के फॉर्म का निरीक्षण करें (DevTools → Network) ताकि सबमिशन फॉर्मेट मेल खाए",
    "height": 494,
    "width": 460
    },
    "type": "n8n-nodes-base.stickyNote",
    "typeVersion": 1,
    "position": [
    -728,
    -400
    ],
    "id": "sticky-blog-main-1773678228095-1",
    "name": "Sticky Note"
    },
    {
    "parameters": {},
    "type": "n8n-nodes-base.manualTrigger",
    "typeVersion": 1,
    "position": [
    -208,
    0
    ],
    "id": "aw222222-2222-2222-2222-aw2222222201",
    "name": "'Execute workflow' क्लिक करने पर"
    },
    {
    "parameters": {
    "operation": "AWS WAF",
    "websiteURL": "https://YOUR-TARGET-SITE.com",
    "optional": {}
    },
    "type": "n8n-nodes-capsolver.capSolver",
    "typeVersion": 1,
    "position": [
    96,
    0
    ],
    "id": "aw222222-2222-2222-2222-aw2222222202",
    "name": "AWS WAF",
    "credentials": {
    "capSolverApi": {
    "id": "BeBFMAsySMsMGeE9",
    "name": "CapSolver account"
    }
    }
    },
    {
    "parameters": {
    "url": "https://YOUR-TARGET-SITE.com",
    "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": "Cookie",
    "value": "={{ $json.data.solution.cookie }}"
    }
    ]
    },
    "options": {
    "response": {
    "response": {
    "fullResponse": true,
    "neverError": true
    }
    }
    }
    },
    "type": "n8n-nodes-base.httpRequest",
    "typeVersion": 4.3,
    "position": [
    400,
    0
    ],
    "id": "aw222222-2222-2222-2222-aw2222222203",
    "name": "लक्ष्य साइट को टोकन सबमिट करें"
    },
    {
    "parameters": {
    "conditions": {
    "options": {
    "caseSensitive": true,
    "leftValue": "",
    "typeValidation": "strict",
    "version": 2
    },
    "conditions": [
    {
    "id": "aws-if-001",
    "leftValue": "={{ $json.statusCode }}",
    "rightValue": 400,
    "operator": {
    "type": "number",
    "operation": "lt"
    }
    }
    ],
    "combinator": "and"
    },
    "options": {}
    },
    "type": "n8n-nodes-base.if",
    "typeVersion": 2.3,
    "position": [
    700,
    0
    ],
    "id": "aw222222-2222-2222-2222-aw2222222204",
    "name": "अनुरोध सफल हुआ?"
    },
    {
    "parameters": {
    "assignments": {
    "assignments": [
    {
    "id": "valid-001",
    "name": "status",
    "value": "valid",
    "type": "string"
    },
    {
    "id": "valid-002",
    "name": "statusCode",
    "value": "={{ $json.statusCode }}",
    "type": "number"
    }
    ]
    },
    "options": {}
    },
    "type": "n8n-nodes-base.set",
    "typeVersion": 3.4,
    "position": [
    1000,
    -100
    ],
    "id": "aw222222-2222-2222-2222-aw2222222205",
    "name": "वैध"
    },
    {
    "parameters": {
    "assignments": {
    "assignments": [
    {
    "id": "invalid-001",
    "name": "status",
    "value": "invalid",
    "type": "string"
    },
    {
    "id": "invalid-002",
    "name": "statusCode",
    "value": "={{ $json.statusCode }}",
    "type": "number"
    }
    ]
    },
    "options": {}
    },
    "type": "n8n-nodes-base.set",
    "typeVersion": 3.4,
    "position": [
    1000,
    100
    ],
    "id": "aw222222-2222-2222-2222-aw2222222206",
    "name": "अमान्य"
    }
    ],
    "connections": {
    "'Execute workflow' क्लिक करने पर": {
    "main": [
    [
    {
    "node": "AWS WAF",
    "type": "main",
    "index": 0
    }
    ]
    ]
    },
    "AWS WAF": {
    "main": [
    [
    {
    "node": "लक्ष्य साइट को टोकन सबमिट करें",
    "type": "main",
    "index": 0
    }
    ]
    ]
    },
    "लक्ष्य साइट को टोकन सबमिट करें": {
    "main": [
    [
    {
    "node": "अनुरोध सफल हुआ?",
    "type": "main",
    "index": 0
    }
    ]
    ]
    },
    "अनुरोध सफल हुआ?": {
    "main": [
    [
    {
    "node": "वैध",
    "type": "main",
    "index": 0
    }
    ],
    [
    {
    "node": "अमान्य",
    "type": "main",
    "index": 0
    }
    ]
    ]
    }
    },
    "active": false,
    "settings": {
    "executionOrder": "v1"
    }
    }
    [
    {
    "node": "AWS WAF",
    "type": "main",
    "index": 0
    }
    ]
    ]
    },
    "AWS WAF": {
    "main": [
    [
    {
    "node": "लक्ष्य साइट को टोकन सबमिट करें",
    "type": "main",
    "index": 0
    }
    ]
    ]
    },
    "लक्ष्य साइट को टोकन सबमिट करें": {
    "main": [
    [
    {
    "node": "अनुरोध सफल हुआ?",
    "type": "main",
    "index": 0
    }
    ]
    ]
    },
    "अनुरोध सफल हुआ?": {
    "main": [
    [
    {
    "node": "वैध",
    "type": "main",
    "index": 0
    }
    ],
    [
    {
    "node": "अमान्य",
    "type": "main",
    "index": 0
    }
    ]
    ]
    }
    },
    "active": false,
    "settings": {
    "executionOrder": "v1"
    }
    }
Copy
</details>

---


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

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

| वर्कफ़्लो | उद्देश्य |
|---|---|
| `AWS WAF Scraping — Price & Product Details — CapSolver + Schedule + Webhook` | हर 6 घंटे में कीमत और उत्पाद नाम स्क्रैप करता है, `staticData` में संग्रहीत पिछले मानों से तुलना करता है, बदलाव पर अलर्ट करता है |
| `AWS WAF Account Login — CapSolver + Schedule + Webhook` | AWS WAF-संरक्षित साइट पर अपने खाते में लॉगिन करता है, पहले चुनौती हल करके, फिर कुकी के साथ क्रेडेंशियल POST करके |

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

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

**शेड्यूल पथ:**

हर 6 घंटे -> AWS WAF हल करें -> उत्पाद पेज प्राप्त करें -> डेटा निकालें
-> डेटा की तुलना करें -> डेटा बदला? -> अलर्ट बनाएं / कोई बदलाव नहीं

Copy
मुख्य व्यवहार:
- कुकी को `Cookie` हेडर के रूप में भेजा जाता है (यह AWS WAF टोकन सबमिट करने का सही तरीका है — फॉर्म फ़ील्ड के रूप में नहीं)
- **HTML नोड** CSS सेलेक्टर्स (`.product-price`, `h1`) के माध्यम से कीमत और उत्पाद नाम निकालता है
- `$workflow.staticData.lastPrice` पिछले मूल्य को निष्पादनों के बीच स्थायी बनाता है
- मूल्य तुलना दोनों **गिरावट** (गंभीरता: `deal`) और **बढ़ोतरी** (गंभीरता: `info`) का पता लगाती है

<details>
<summary>पूर्ण वर्कफ़्लो JSON (17 नोड्स) विस्तार के लिए क्लिक करें</summary>

```json
{
  "nodes": [
    {
      "parameters": {
        "content": "## AWS WAF स्क्रैपिंग — कीमत और उत्पाद विवरण — CapSolver + शेड्यूल + वेबहुक\n\n### यह कैसे काम करता है\n\n1. नियमित अंतराल पर या वेबहुक अनुरोध के माध्यम से ट्रिगर होता है।\n2. AWS WAF चुनौती हल करता है फिर उत्पाद पेज प्राप्त करने के लिए अनुरोध करता है।\n3. प्राप्त HTML पेज से उत्पाद डेटा निकालता है।\n4. वर्तमान और पहले संग्रहीत डेटा की तुलना करता है ताकि कोई बदलाव पता चले।\n5. यदि डेटा बदला है तो अलर्ट भेजता है; अन्यथा कोई बदलाव लॉग करता है।\n6. यदि वेबहुक द्वारा ट्रिगर किया गया हो तो परिणाम लौटाता है।\n\n### सेटअप चरण\n\n- [ ] 'Every 6 Hours' नोड में शेड्यूल सेटिंग्स कॉन्फ़िगर करें।\n- [ ] 'Solve AWS WAF' नोड्स में AWS WAF क्रेडेंशियल सेट करें।\n- [ ] 'Fetch Product Page' नोड्स में लक्ष्य URL इनपुट करें।\n- [ ] 'Receive Monitor Request' नोड में वेबहुक URL कॉन्फ़िगर करें।\n\n### अनुकूलन\n\n'Fetch Product Page' और संबंधित नोड्स में लक्ष्य साइट URL को विभिन्न साइटों या विशिष्ट पेजों के लिए समायोजित करें।",
        "width": 480,
        "height": 896
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1008,
        -368
      ],
      "id": "721002ab-5623-44fd-bcd7-44de185ec24f",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## शेड्यूल्ड डेटा स्क्रैपिंग\n\nहर 6 घंटे स्क्रैपिंग ट्रिगर करता है और AWS WAF हल करता है।",
        "width": 496,
        "height": 272,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -432,
        -192
      ],
      "id": "565d31e9-26a6-412d-92a4-c7da5c7b6985",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## शेड्यूल्ड प्राप्ति और निष्कर्षण\n\nशेड्यूल पर उत्पाद पेज डेटा प्राप्त करता है और संसाधित करता है।",
        "width": 480,
        "height": 272,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        176,
        -208
      ],
      "id": "58d3a139-a733-46d6-9f17-574ba6ad7929",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## शेड्यूल्ड डेटा तुलना\n\nस्क्रैप किए गए डेटा की पिछली प्रविष्टियों से तुलना करता है और बदलाव जांचता है।",
        "width": 432,
        "height": 320,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        736,
        -240
      ],
      "id": "fb4b9115-2b2f-49f1-b9be-4b44de4b37bf",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "## शेड्यूल्ड अलर्ट या लॉग\n\nयदि लागू हो तो अलर्ट जनरेट करता है या कोई बदलाव नहीं लॉग करता है।",
        "width": 240,
        "height": 512,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1232,
        -368
      ],
      "id": "ec59cfa5-fe07-4b4a-a060-c3570e42a8a8",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "content": "## वेबहुक ट्रिगर स्क्रैपिंग\n\nस्क्रैपिंग शुरू करने के लिए वेबहुक से अनुरोधों को संभालता है।",
        "width": 496,
        "height": 272,
        "color": 7
      },
```      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -448,
        320
      ],
      "id": "1324edf4-b4f8-4cab-aa18-401d71fb486b",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "content": "## वेबहुक फ़ेच और एक्सट्रैक्ट\n\nवेबहुक के माध्यम से उत्पाद पृष्ठ डेटा प्राप्त करता है और संसाधित करता है।",
        "width": 496,
        "height": 272,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        160,
        320
      ],
      "id": "e86f4191-e81c-417e-93e8-ab163ac3024d",
      "name": "Sticky Note6"
    },
    {
      "parameters": {
        "content": "## वेबहुक डेटा तुलना\n\nवेबहुक अनुरोधों से डेटा में परिवर्तनों की तुलना और मूल्यांकन करता है।",
        "width": 400,
        "height": 304,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        704,
        304
      ],
      "id": "95c5ab10-e493-475a-9fe6-c39d0374a120",
      "name": "Sticky Note7"
    },
    {
      "parameters": {
        "content": "## वेबहुक अलर्ट/लॉग और रिटर्न\n\nवेबहुक के माध्यम से अलर्ट भेजता है या लॉग करता है और डेटा वापस करता है।",
        "width": 384,
        "height": 464,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1136,
        192
      ],
      "id": "fc36e038-4f18-43c7-84de-c42a32c3177c",
      "name": "Sticky Note8"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 6
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -384,
        -80
      ],
      "id": "aw333333-3333-3333-3333-aw3333333301",
      "name": "हर 6 घंटे"
    },
    {
      "parameters": {
        "operation": "AWS WAF",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -80,
        -80
      ],
      "id": "aw333333-3333-3333-3333-aw3333333302",
      "name": "AWS WAF हल करें",
      "credentials": {
        "capSolverApi": {
          "id": "BeBFMAsySMsMGeE9",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "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"
            },
            {
              "name": "Cookie",
              "value": "={{ $json.data.solution.cookie }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        224,
        -96
      ],
      "id": "aw333333-3333-3333-3333-aw3333333303",
      "name": "उत्पाद पृष्ठ प्राप्त करें"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "price",
              "cssSelector": ".product-price, [data-price], .price",
              "returnValue": "text",
              "returnArray": false
            },
            {
              "key": "productName",
              "cssSelector": "h1, .product-title",
              "returnValue": "text",
              "returnArray": false
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        512,
        -96
      ],
      "id": "aw333333-3333-3333-3333-aw3333333304",
      "name": "डेटा निकालें"
    },
    {
      "parameters": {
        "jsCode": "// वर्कफ़्लो स्थैतिक डेटा से वर्तमान और पिछली कीमत प्राप्त करें\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\n\n// तुलना के लिए संख्यात्मक मान पार्स करें\nconst parsePrice = (str) => {\n  if (!str) return null;\n  const match = str.match(/[\\d]+\\.?\\d*/);\n  return match ? parseFloat(match[0].replace(',', '')) : null;\n};\n\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\n\n// संग्रहीत कीमत अपडेट करें\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\n\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'गिरावट' : 'बढ़ोतरी') : 'अपरिवर्तित';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\n\nreturn [{\n  json: {\n    productName,\n    currentPrice,\n    previousPrice: previousPrice || 'पहली जांच',\n    changed,\n    direction,\n    diff: changed ? `$${diff}` : null,\n    checkedAt: new Date().toISOString()\n  }\n}];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        784,
        -96
      ],
      "id": "aw333333-3333-3333-3333-aw3333333305",
      "name": "डेटा तुलना करें"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "price-if-001",
              "leftValue": "={{ $json.changed }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        1024,
        -112
      ],
      "id": "aw333333-3333-3333-3333-aw3333333306",
      "name": "डेटा बदला?"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-001",
              "name": "alert",
              "value": "=कीमत {{ $json.direction }} के लिए {{ $json.productName }}: {{ $json.previousPrice }} \u2192 {{ $json.currentPrice }} ({{ $json.direction === 'गिरावट' ? '-' : '+' }}{{ $json.diff }})",
              "type": "string"
            },
            {
              "id": "alert-002",
              "name": "severity",
              "value": "={{ $json.direction === 'गिरावट' ? 'deal' : 'info' }}",
              "type": "string"
            },
            {
              "id": "alert-003",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1296,
        -240
      ],
      "id": "aw333333-3333-3333-3333-aw3333333307",
      "name": "अलर्ट बनाएं"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "nc-001",
              "name": "status",
              "value": "कोई_परिवर्तन_नहीं",
              "type": "string"
            },
            {
              "id": "nc-002",
              "name": "currentPrice",
              "value": "={{ $json.currentPrice }}",
              "type": "string"
            },
            {
              "id": "nc-003",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1280,
        -32
      ],
      "id": "aw333333-3333-3333-3333-aw3333333308",
      "name": "कोई परिवर्तन नहीं"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "price-monitor-aws-waf",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -400,
        432
      ],
      "id": "aw333333-3333-3333-3333-aw3333333309",
      "name": "मॉनिटर अनुरोध प्राप्त करें",
      "webhookId": "aw333333-aaaa-bbbb-cccc-aw3333333309",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "operation": "AWS WAF",
        "websiteURL": "https://YOUR-TARGET-SITE.com/product-page",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        432
      ],
      "id": "aw333333-3333-3333-3333-aw3333333310",
      "name": "AWS WAF हल करें [वेबहुक]",
      "credentials": {
        "capSolverApi": {
          "id": "BeBFMAsySMsMGeE9",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "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"
            },
            {
              "name": "Cookie",
              "value": "={{ $json.data.solution.cookie }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        432
      ],
      "id": "aw333333-3333-3333-3333-aw3333333311",
      "name": "उत्पाद पृष्ठ प्राप्त करें [वेबहुक]"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "price",
              "cssSelector": ".product-price, [data-price], .price",
              "returnValue": "text",
              "returnArray": false
            },
            {
              "key": "productName",
              "cssSelector": "h1, .product-title",
              "returnValue": "text",
              "returnArray": false
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        512,
        432
      ],
      "id": "aw333333-3333-3333-3333-aw3333333312",
      "name": "डेटा निकालें [वेबहुक]"
    },
    {
      "parameters": {
        "jsCode": "// वर्कफ़्लो स्थैतिक डेटा से वर्तमान और पिछली कीमत प्राप्त करें\nconst staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\n\n// तुलना के लिए संख्यात्मक मान पार्स करें\nconst parsePrice = (str) => {\n  if (!str) return null;\n  const match = str.match(/[\\d]+\\.?\\d*/);\n  return match ? parseFloat(match[0].replace(',', '')) : null;\n};\n\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\n\n// संग्रहीत कीमत अपडेट करें\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\n\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'गिरावट' : 'बढ़ोतरी') : 'अपरिवर्तित';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\n\nreturn [{\n  json: {\n    productName,\n    currentPrice,\n    previousPrice: previousPrice || 'पहली जांच',\n    changed,\n    direction,\n    diff: changed ? `$${diff}` : null,\n    checkedAt: new Date().toISOString()\n  }\n}];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        752,
        432
      ],
      "id": "aw333333-3333-3333-3333-aw3333333313",
      "name": "डेटा तुलना करें [वेबहुक]"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "price-if-002",
              "leftValue": "={{ $json.changed }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        960,
        432
      ],
      "id": "aw333333-3333-3333-3333-aw3333333314",
      "name": "डेटा बदला? [वेबहुक]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "alert-004",
              "name": "alert",
              "value": "=कीमत {{ $json.direction }} के लिए {{ $json.productName }}: {{ $json.previousPrice }} \u2192 {{ $json.currentPrice }} ({{ $json.direction === 'गिरावट' ? '-' : '+' }}{{ $json.diff }})",
              "type": "string"
            },
            {
              "id": "alert-005",
              "name": "severity",
              "value": "={{ $json.direction === 'गिरावट' ? 'deal' : 'info' }}",
              "type": "string"
            },
            {
              "id": "alert-006",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,      "position": [
        1184,
        320
      ],
      "id": "aw333333-3333-3333-3333-aw3333333315",
      "name": "अलर्ट बनाएं [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "nc-004",
              "name": "status",
              "value": "no_change",
              "type": "string"
            },
            {
              "id": "nc-005",
              "name": "currentPrice",
              "value": "={{ $json.currentPrice }}",
              "type": "string"
            },
            {
              "id": "nc-006",
              "name": "checkedAt",
              "value": "={{ $json.checkedAt }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1184,
        480
      ],
      "id": "aw333333-3333-3333-3333-aw3333333316",
      "name": "कोई बदलाव नहीं [Webhook]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1376,
        400
      ],
      "id": "aw333333-3333-3333-3333-aw3333333317",
      "name": "स्क्रैप किया गया डेटा लौटाएं"
    }
  ],
  "connections": {
    "Every 6 Hours": {
      "main": [
        [
          {
            "node": "Solve AWS WAF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve AWS WAF": {
      "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
          }
        ]
      ]
    },
    "Receive Monitor Request": {
      "main": [
        [
          {
            "node": "Solve AWS WAF [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve AWS WAF [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": "Return Scraped Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No Change [Webhook]": {
      "main": [
        [
          {
            "node": "Return Scraped Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}

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

यह वर्कफ़्लो AWS WAF-संरक्षित साइट में लॉगिन को स्वचालित करता है। एक लॉगिन कॉन्फ़िग सेट करें नोड सभी पैरामीटर केंद्रित करता है — [शेड्यूल] के लिए शेड्यूल पथ। अपने लक्षित साइट को कॉन्फ़िगर करने के लिए कॉन्फ़िग नोड संपादित करें।

शेड्यूल पथ:

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

त्रुटि प्रबंधन: यदि CapSolver विफल होता है, तो निष्पादन रुक जाता है और n8n में विफल के रूप में चिह्नित किया जाता है। त्रुटि देखने के लिए Executions जांचें, या स्वचालित रूप से सूचित होने के लिए n8n के त्रुटि वर्कफ़्लो को कॉन्फ़िगर करें।

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

  • AntiAwsWafTaskProxyLess का उपयोग करता है — अधिकांश साइटों के लिए प्रॉक्सी की आवश्यकता नहीं
  • कोई websiteKey या tokenFieldName नहीं — AWS WAF को केवल websiteURL चाहिए, और टोकन को Cookie हेडर के रूप में सबमिट किया जाता है (फॉर्म फ़ील्ड नहीं)
  • उपयोगकर्ता नाम/पासवर्ड के लिए फॉर्म फ़ील्ड सामान्य रूप से form-urlencoded POST के माध्यम से सबमिट होते हैं — केवल AWS WAF कुकी हेडर के रूप में जोड़ी जाती है
  • लॉगिन सफल? जांच दोनों statusCode < 400 और प्रतिक्रिया बॉडी में कॉन्फ़िगर किए गए successMarker की उपस्थिति का मूल्यांकन करती है
  • Webhook पथ ऑन-डिमांड निष्पादन के लिए अनुरोध बॉडी से पैरामीटर पढ़ता है
  • Webhook पथ JSON के रूप में परिणाम लौटाता है Respond to Webhook के माध्यम से
पूर्ण वर्कफ़्लो JSON (15 नोड्स) देखने के लिए क्लिक करें
json Copy
{
  "nodes": [
    {
      "parameters": {
        "content": "## AWS WAF खाता लॉगिन — CapSolver + शेड्यूल + Webhook\n\n### यह कैसे काम करता है\n\n1. हर 24 घंटे या API अनुरोध के माध्यम से लॉगिन प्रक्रिया शुरू करता है।\n2. शेड्यूल किए गए लॉगिन के लिए लॉगिन क्रेडेंशियल्स कॉन्फ़िगर करता है।\n3. लॉगिन फॉर्म तक पहुँचने के लिए CAPTCHA चुनौतियों को हल करता है।\n4. लॉगिन क्रेडेंशियल्स सबमिट करता है और जांचता है कि लॉगिन सफल है या नहीं।\n5. लॉगिन प्रयास की सफलता या विफलता रिकॉर्ड करता है।\n\n### सेटअप चरण\n\n- [ ] AWS WAF सेटिंग्स कॉन्फ़िगर करें।\n- [ ] CapSolver API कुंजी प्राप्त करें और नोड्स में कॉन्फ़िगर करें।\n- [ ] कॉन्फ़िगरेशन नोड्स में लॉगिन URL और क्रेडेंशियल्स मान सेट करें।\n- [ ] लॉगिन अनुरोध प्राप्त करने के लिए webhook एंडपॉइंट सेटअप करें।\n\n### अनुकूलन\n\nलॉगिन URL और क्रेडेंशियल्स कॉन्फ़िगरेशन नोड्स में अनुकूलित किए जा सकते हैं।",
        "width": 480,
        "height": 896
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1248,
        -336
      ],
      "id": "78cd7411-d26c-407e-801e-2b2615562f95",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "## शेड्यूल्ड लॉगिन ट्रिगर\n\nहर 24 घंटे लॉगिन प्रक्रिया शुरू करता है और लॉगिन कॉन्फ़िगरेशन सेट करता है।",
        "width": 480,
        "height": 304,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -672,
        -208
      ],
      "id": "2e6b7fa9-b0d8-467f-b2b2-b172759f6777",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "content": "## शेड्यूल्ड लॉगिन प्रक्रिया\n\nCAPTCHA हल करता है, लॉगिन सबमिट करता है, और शेड्यूल्ड लॉगिन के लिए सफलता का मूल्यांकन करता है।",
        "width": 1040,
        "height": 464,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -80,
        -336
      ],
      "id": "9bbac73d-4660-47c7-8241-9f8c80a0632b",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## Webhook लॉगिन ट्रिगर\n\nWebhook के माध्यम से लॉगिन अनुरोध प्राप्त करता है और लॉगिन प्रक्रिया शुरू करता है।",
        "width": 240,
        "height": 320,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -688,
        272
      ],
      "id": "f4ad8340-abdb-46b1-81b0-68f5c0111960",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "content": "## Webhook लॉगिन प्रक्रिया\n\nCAPTCHA प्रोसेस करता है, लॉगिन सबमिट करता है, सफलता जांचता है, और Webhook के लिए परिणाम रिकॉर्ड करता है।",
        "width": 1216,
        "height": 496,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -80,
        160
      ],
      "id": "11b031a7-a1d2-4061-ad42-08beefc91795",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 24
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        -624,
        -80
      ],
      "id": "aw666666-6666-6666-6666-aw6666666601",
      "name": "हर 24 घंटे"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "login-001",
              "name": "websiteURL",
              "value": "https://YOUR-LOGIN-PAGE.com",
              "type": "string"
            },
            {
              "id": "login-008",
              "name": "usernameField",
              "value": "email",
              "type": "string"
            },
            {
              "id": "login-009",
              "name": "passwordField",
              "value": "password",
              "type": "string"
            },
            {
              "id": "login-010",
              "name": "usernameValue",
              "value": "your-email@example.com",
              "type": "string"
            },
            {
              "id": "login-011",
              "name": "passwordValue",
              "value": "YOUR_ACCOUNT_PASSWORD",
              "type": "string"
            },
            {
              "id": "login-013",
              "name": "successMarker",
              "value": "account-dashboard",
              "type": "string"
            },
            {
              "id": "login-014",
              "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": [
        -336,
        -80
      ],
      "id": "aw666666-6666-6666-6666-aw6666666602",
      "name": "लॉगिन कॉन्फ़िग सेट करें [शेड्यूल]"
    },
    {
      "parameters": {
        "operation": "AWS WAF",
        "websiteURL": "={{ $json.websiteURL }}"
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -32,
        -80
      ],
      "id": "aw666666-6666-6666-6666-aw6666666603",
      "name": "कैप्चा हल करें [शेड्यूल]",
      "credentials": {
        "capSolverApi": {
          "id": "BeBFMAsySMsMGeE9",
          "name": "CapSolver account"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://YOUR-LOGIN-PAGE.com/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 }}"
            },
            {
              "name": "Cookie",
              "value": "={{ $json.data.solution.cookie }}"
            }
          ]
        },
        "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 }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "neverError": true
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        272,
        -96
      ],
      "id": "aw666666-6666-6666-6666-aw6666666604",
      "name": "लॉगिन सबमिट करें [शेड्यूल]"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": false,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "login-if-001",
              "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.3,
      "position": [
        512,
        -96
      ],
      "id": "aw666666-6666-6666-6666-aw6666666605",
      "name": "लॉगिन सफल? [शेड्यूल]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "login-015",
              "name": "action",              "value": "account_login",
              "type": "string"
            },
            {
              "id": "login-016",
              "name": "status",
              "value": "success",
              "type": "string"
            },
            {
              "id": "login-017",
              "name": "message",
              "value": "कॉन्फ़िगर किया गया खाता लॉगिन फ्लो सफल रहा",
              "type": "string"
            },
            {
              "id": "login-018",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        816,
        -224
      ],
      "id": "aw666666-6666-6666-6666-aw6666666606",
      "name": "लॉगिन सफलता चिह्नित करें [अनुसूची]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "login-019",
              "name": "action",
              "value": "account_login",
              "type": "string"
            },
            {
              "id": "login-020",
              "name": "status",
              "value": "failed",
              "type": "string"
            },
            {
              "id": "login-021",
              "name": "statusCode",
              "value": "={{ $json.statusCode }}",
              "type": "number"
            },
            {
              "id": "login-022",
              "name": "message",
              "value": "लॉगिन प्रतिक्रिया कॉन्फ़िगर किए गए सफलता मार्कर से मेल नहीं खाती",
              "type": "string"
            },
            {
              "id": "login-023",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        816,
        -32
      ],
      "id": "aw666666-6666-6666-6666-aw6666666607",
      "name": "लॉगिन विफल चिह्नित करें [अनुसूची]"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "account-login-aws-waf",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -640,
        432
      ],
      "id": "aw666666-6666-6666-6666-aw6666666608",
      "name": "लॉगिन अनुरोध प्राप्त करें",
      "webhookId": "aw666666-aaaa-bbbb-cccc-aw6666666608",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "operation": "AWS WAF",
        "websiteURL": "={{ $json.body.websiteURL }}"
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -32,
        464
      ],
      "id": "aw666666-6666-6666-6666-aw6666666610",
      "name": "कैप्चा हल करें [Webhook]",
      "credentials": {
        "capSolverApi": {
          "id": "BeBFMAsySMsMGeE9",
          "name": "CapSolver खाता"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Receive Login Request').item.json.body.loginActionURL }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            },
            {
              "name": "user-agent",
              "value": "={{ $('Receive Login Request').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' }}"
            },
            {
              "name": "Cookie",
              "value": "={{ $json.data.solution.cookie }}"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "={{ $('Receive Login Request').item.json.body.usernameField || 'email' }}",
              "value": "={{ $('Receive Login Request').item.json.body.usernameValue }}"
            },
            {
              "name": "={{ $('Receive Login Request').item.json.body.passwordField || 'password' }}",
              "value": "={{ $('Receive Login Request').item.json.body.passwordValue }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "neverError": true
            }
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        272,
        464
      ],
      "id": "aw666666-6666-6666-6666-aw6666666611",
      "name": "लॉगिन सबमिट करें [Webhook]"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": false,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "login-if-002",
              "leftValue": "={{ $json.statusCode < 400 && String($json.body || $json.data || '').includes($('Receive Login Request').item.json.body.successMarker) }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        576,
        464
      ],
      "id": "aw666666-6666-6666-6666-aw6666666612",
      "name": "लॉगिन सफल? [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "login-038",
              "name": "action",
              "value": "account_login",
              "type": "string"
            },
            {
              "id": "login-039",
              "name": "status",
              "value": "success",
              "type": "string"
            },
            {
              "id": "login-040",
              "name": "message",
              "value": "कॉन्फ़िगर किया गया खाता लॉगिन फ्लो सफल रहा",
              "type": "string"
            },
            {
              "id": "login-041",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        768,
        272
      ],
      "id": "aw666666-6666-6666-6666-aw6666666613",
      "name": "लॉगिन सफलता चिह्नित करें [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "login-042",
              "name": "action",
              "value": "account_login",
              "type": "string"
            },
            {
              "id": "login-043",
              "name": "status",
              "value": "failed",
              "type": "string"
            },
            {
              "id": "login-044",
              "name": "statusCode",
              "value": "={{ $json.statusCode }}",
              "type": "number"
            },
            {
              "id": "login-045",
              "name": "message",
              "value": "लॉगिन प्रतिक्रिया कॉन्फ़िगर किए गए सफलता मार्कर से मेल नहीं खाती",
              "type": "string"
            },
            {
              "id": "login-046",
              "name": "checkedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        768,
        496
      ],
      "id": "aw666666-6666-6666-6666-aw6666666614",
      "name": "लॉगिन विफल चिह्नित करें [Webhook]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        992,
        448
      ],
      "id": "aw666666-6666-6666-6666-aw6666666615",
      "name": "लॉगिन परिणाम लौटाएं"
    }
  ],
  "connections": {
    "Every 24 Hours": {
      "main": [
        [
          {
            "node": "Set Login Config [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Login Config [Schedule]": {
      "main": [
        [
          {
            "node": "Solve Captcha [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve Captcha [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
          }
        ]
      ]
    },
    "Receive Login Request": {
      "main": [
        [
          {
            "node": "Solve Captcha [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve Captcha [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": "Return Login Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Login Failed [Webhook]": {
      "main": [
        [
          {
            "node": "Return Login Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}

निष्कर्ष

आपने सीखा कि कैसे n8n और CapSolver का उपयोग करके AWS WAF-समाधान API और उत्पादन-तैयार स्क्रैपिंग वर्कफ़्लो बनाए जाते हैं — बिना पारंपरिक कोडिंग के।

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

  • वेबहुक-आधारित वर्कफ़्लो के लिए AWS WAF के API सॉल्वर एंडपॉइंट्स
  • उपयोग के उदाहरण — स्क्रैपिंग और खाता लॉगिन — दिखाते हुए कि कैसे हल किए गए कुकीज़ सबमिट करें और संरक्षित डेटा को प्रोसेस करें
  • DevTools का उपयोग करके AWS WAF पैरामीटर कैसे पहचानें
  • कुकी-आधारित टोकन हैंडलिंग, त्रुटि प्रबंधन, और उत्पादन उपयोग के लिए सर्वोत्तम प्रथाएँ

मुख्य बात: AWS WAF टोकन reCAPTCHA और Turnstile से अलग काम करते हैं — इन्हें कुकीज़ के रूप में Cookie HTTP हेडर के माध्यम से सबमिट किया जाता है, न कि फॉर्म फ़ील्ड के रूप में। केवल websiteURL आवश्यक है (कोई साइट की कुंजी नहीं चाहिए), और समाधान solution.cookie लौटाता है न कि solution.token।

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


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

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

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

AWS WAF क्या है?

AWS WAF (वेब एप्लिकेशन फ़ायरवॉल) अमेज़न की वेब सुरक्षा सेवा है जो वेबसाइटों को बॉट्स, स्क्रैपर्स और अन्य स्वचालित खतरों से बचाती है। यह अदृश्य CAPTCHA चुनौतियां प्रस्तुत कर सकता है जिन्हें बायपास करने के लिए aws-waf-token कुकी की आवश्यकता होती है। कई एंटरप्राइज़ और ई-कॉमर्स साइटें इसका उपयोग करती हैं।

AWS WAF चुनौती को हल करने की लागत कितनी है?

मूल्य निर्धारण कार्य की जटिलता पर निर्भर करता है। वर्तमान AWS WAF दरों के लिए CapSolver मूल्य पृष्ठ देखें।

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

अधिकांश AWS WAF चुनौतियां साइट की कॉन्फ़िगरेशन और प्रदान किए गए पैरामीटर के आधार पर 5-30 सेकंड में हल हो जाती हैं। वैकल्पिक पैरामीटर जैसे awsKey, awsIv, और awsContext प्रदान करने से हल करने की गति और विश्वसनीयता बेहतर हो सकती है।

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

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

मैं किसी वेबसाइट के लिए AWS WAF पैरामीटर कैसे खोजूं?

सबसे सरल तरीका: लक्षित साइट खोलें, कुकीज़ में aws-waf-token देखें (DevTools के Application टैब में), और captcha.awswaf.com के लिए नेटवर्क अनुरोध देखें। अधिकांश साइटों के लिए केवल websiteURL की आवश्यकता होती है।

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

इसके कई कारण हो सकते हैं। सबसे पहले, कुकीज़ जल्दी समाप्त हो जाती हैं — सुनिश्चित करें कि आप हल करने के तुरंत बाद कुकी का उपयोग कर रहे हैं। दूसरा, सुनिश्चित करें कि आप कुकी सही तरीके से भेज रहे हैं: इसे Cookie HTTP हेडर में भेजना चाहिए (फॉर्म फ़ील्ड या कस्टम हेडर में नहीं)। तीसरा, कुछ साइटों को अतिरिक्त पैरामीटर जैसे awsContext या awsChallengeJS की आवश्यकता हो सकती है — जांच के लिए CapSolver एक्सटेंशन का उपयोग करें। चौथा, कुछ कड़े साइटों को AntiAwsWafTask प्रकार (प्रॉक्सी के साथ) की आवश्यकता हो सकती है बजाय AntiAwsWafTaskProxyLess के। यदि कुकी अभी भी अस्वीकार की जाती है, तो साइट-विशिष्ट सहायता के लिए 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