
Rajinder Singh
Deep Learning Researcher

अगर आपने कभी किसी वेबसाइट से मूल्य, उत्पाद डेटा या सुरक्षित पृष्ठ की सामग्री निकालने की कोशिश की है, तो आप जानते हैं कि यह काम बस URL लोड करने से भी कठिन होता है। वर्कफ़्लो को साइट के कैप्चा को हल करना भी आवश्यक होता है, साइट की अपेक्षा टोकन को उस तरह से जमा करना होता है और फिर सुरक्षित उत्तर से सही डेटा निकालना होता है।
इसलिए "कैप्चा हल कर दिया गया" जैसे सरल उदाहरण वास्तविक स्वचालन के लिए पर्याप्त नहीं होते हैं। एक साइट टोकन को हेडर, फॉर्म बॉडी, जेसन पेलोड, क्वेरी स्ट्रिंग, कुकी या अन्य एप्लिकेशन-विशिष्ट फ़ील्ड में अपेक्षित कर सकती है। यह reCAPTCHA, Turnstile या अन्य कैप्चा चुनौती का उपयोग कर सकती है। और जब सुरक्षित उत्तर वापस आता है, तो चयनकर्ता और आउटपुट तार्क अभी भी आपके लक्ष्य के अनुरूप होना चाहिए।
इस गाइड में आप n8n के साथ कैपसॉल्वर का उपयोग करके कैप्चा-सुरक्षित साइट के लिए स्क्रैपर बनाना सीखेंगे। मुख्य विवरण रिपॉजिटरी वर्कफ़्लो Scraping — Price & Product Details — CapSolver + Schedule + Webhook पर आधारित है, लेकिन इसी पैटर्न को निम्न के लिए अनुकूलित किया जा सकता है:
यह लेख आपके द्वारा स्वामित्व, प्रबंधन या परीक्षण के अनुमति द्वारा किए गए लक्ष्यों पर व्यावहारिक, अनुमति प्राप्त स्वचालन के बारे में है।
महत्वपूर्ण: ये वर्कफ़्लो उदाहरण और शुरुआती पैमाने के रूप में हैं, न कि सामान्य रूप से ड्रॉप-इन रेसिपी। आपको प्रत्येक विशिष्ट साइट के अनुरूप कैप्चा सेटिंग्स, टोकन सबमिशन विधि, अनुरोध पैलेट, हेडर, कुकी, निकालने के चयनकर्ता और आउटपुट तार्क के अनुरूप बदलाव की अपेक्षा करनी होगी।
इस लेख के मुख्य उदाहरण एक निश्चित-लक्ष्य स्क्रैपर टेम्पलेट है जो अब दो संचालन मोड समर्थित करता है:
डिफ़ॉल्ट रिपॉजिटरी टेम्पलेट में, वर्कफ़्लो:
x-recaptcha-token हेडर में जमा करता हैprice और productName निकालता है$workflow.staticData के साथ तुलना करता हैइसी पैटर्न को निम्न के रूप में बनाया जा सकता है:
इन रिपॉजिटरी टेम्पलेट में एक ही पुन: उपयोगी संरचना अपनाई गई है:
ट्रिगर → कैप्चा हल करें → सुरक्षित अनुरोध जमा करें → परिणाम निकालें → तुलना/संग्रह/आउटपुट करें
इस संरचना कई वैध उपयोग मामलों के लिए फिट बैठती है:
| उपयोग मामला | क्या बदलता है |
|---|---|
| स्क्रैपिंग | मूल्य के क्षेत्रों को निकालें और समय के साथ तुलना करें |
| उत्पाद डेटा स्क्रैपिंग | शीर्षक, SKU, विक्रेता, स्टॉक या विवरण जैसे क्षेत्रों को निकालें |
| स्टॉक जांच | उपलब्धता पाठ, मात्रा या खरीद-बटन स्थिति की तुलना करें |
| अपने खाते में लॉगिन करें | अपने लॉगिन अनुरोध के साथ हल किए गए टोकन को जमा करें और लॉगिन सफलता की पुष्टि करें |
| सुरक्षित सामग्री निकालें | बंद सामग्री लोड करें और निकाले गए क्षेत्र वापस करें |
| वेबहुक-ट्रिगर्ड स्क्रैपिंग | अन्य सेवा के माध्यम से निश्चित कॉन्फ़िगर किए गए लक्ष्य को मांग पर सक्रिय करें |
संरचना पुन: उपयोगी रहती है, लेकिन वास्तविक कार्यान्वयन विवरण प्रत्येक साइट पर अलग-अलग हो सकते हैं। व्यवहार में, उपयोगकर्ता को इन वर्कफ़्लो को एक उदाहरण के रूप में लेना चाहिए और समाधान सेटिंग्स, अनुरोध के आकार, टोकन स्थान और निकालने के तार्क को लक्ष्य के अनुरूप अनुकूलित करना चाहिए जिसके लिए वे स्वचालन कर रहे हैं।
ऊपर दिए गए मुख्य स्क्रैपर वर्कफ़्लो ब्राउज़र में वास्तविक पृष्ठ सामग्री लोड करता है और मूल्यों की तुलना करता है। निम्न वर्कफ़्लो एक ही कैप्चा-हल पैटर्न का विस्तार करते हैं - ट्रिगर → कैप्चा हल करें → सुरक्षित अनुरोध जमा करें → परिणाम मूल्यांकन करें - विशिष्ट उपयोग मामलों के लिए। प्रत्येक के लिए आवश्यकता होती है: n8n इंस्टेंस, CapSolver क्रेडेंशियल और लक्ष्य के कैप्चा पैरामीटर।
| वर्कफ़्लो | उद्देश्य |
|---|---|
Scraping — Price & Product Details — CapSolver + Schedule + Webhook |
निश्चित-लक्ष्य समय सारणी + वेबहुक टेम्पलेट जो reCAPTCHA v3 हल करता है, x-recaptcha-token में टोकन जमा करता है, price और productName निकालता है, मान की $workflow.staticData के साथ तुलना करता है, और एक स्क्रैपिंग, उत्पाद विवरण निकालना या समान सुरक्षित उत्पाद-पृष्ठ जांच के लिए उपयोग किया जा सकता है |
सक्रियण नोट: इस टेम्पलेट को
active: falseके रूप में आयात किया जाता है। वेबहुक पथ तब तक लाइव नहीं होता जब तक आप प्लेसहोल्डर्स को कॉन्फ़िगर नहीं करते, अपना CapSolver क्रेडेंशियल चुनते हैं और n8n में वर्कफ़्लो को सक्रिय नहीं करते।
शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्न हैं:
इस लेख के मुख्य उदाहरण के लिए, लक्ष्य के लिए reCAPTCHA का उपयोग माना जाता है, इसलिए की-मान हैं:
websiteURLwebsiteKeypageAction for reCAPTCHA v3महत्वपूर्ण: नीचे दिए गए पैरामीटर-समझाने के विवरण इरादतन reCAPTCHA उदाहरणों के लिए सीमित हैं। वास्तविक लक्ष्य एक अलग चुनौती प्रकार का उपयोग कर सकते हैं - जैसे Cloudflare Turnstile, Cloudflare Challenge, GeeTest, DataDome, AWS WAF, या MTCaptcha - और इस मामले में, समाधान नोड सेटिंग्स, आवश्यक क्षेत्र और सुरक्षित अनुरोध पैटर्न अलग होंगे।
reCAPTCHA-सुरक्षित पृष्ठ के लिए, मुख्य मान आमतौर पर:
| पैरामीटर | इसका क्या अर्थ है |
|---|---|
websiteURL |
कैप्चा दिखाई देता है या आवश्यक है वाला URL |
websiteKey |
पृष्ठ द्वारा उपयोग किया जाने वाला सार्वजनिक साइट कुंजी |
pageAction |
reCAPTCHA v3 द्वारा अपेक्षित क्रिया स्ट्रिंग |
रिपॉजिटरी के मूल्य-मॉनिटर टेम्पलेट में, CapSolver नोड को इस तरह से कॉन्फ़िगर किया गया है:
operation: reCAPTCHA v3websiteURL: https://YOUR-TARGET-SITE.com/product-pagewebsiteKey: YOUR_SITE_KEY_HEREpageAction: view_productजब आप reCAPTCHA लक्ष्य की जांच करते हैं, तो सुनिश्चित करें:
pageAction आवश्यक हैमहत्वपूर्ण: यह एक सामान्य कैप्चा डिटेक्टर खंड नहीं है। यदि लक्ष्य एक अलग चुनौती प्रकार का उपयोग करता है - जैसे क्लाउडफ़ेयर टर्नस्टाइल, क्लाउडफ़ेयर चुनौती, जीटी, डेटाडॉम, एम्स डब्ल्यूएफ, या एमटीकैप्चा - तो आपको दोनों CapSolver सेटिंग्स और हल किए गए टोकन को भेजने वाले HTTP अनुरोध को बदलना होगा।
रिपॉजिटरी वर्कफ़्लो Scraping — Price & Product Details — CapSolver + Schedule + Webhook अब दो निश्चित-लक्ष्य सक्रियण मार्ग समर्थित करता है:
हर 6 घंटे के लिए नियमित जांचवेबहुक ट्रिगर के लिए मांग पर चलाएंदोनों मार्ग एक ही लक्ष्य प्लेसहोल्डर्स और एक ही स्क्रैपर तार्क का उपयोग करते हैं। वेबहुक संस्करण केवल वेबहुक के लिए उत्तर दें में समाप्त होता है ताकि कॉलर को अंतिम एलर्ट या बिना बदलाव वाला पैकेट जेसन के रूप में वापस मिल सके।
समय सारणी मार्ग में निम्न नोड्स का उपयोग किया जाता है:
हर 6 घंटेreCAPTCHA v3 हल करेंउत्पाद पृष्ठ लोड करेंडेटा निकालेंडेटा की तुलना करेंडेटा बदल गया?एलर्ट बनाएंबदलाव नहींवेबहुक मार्ग समान तार्क का उपयोग करता है लेकिन एक ही निश्चित लक्ष्य के लिए:
वेबहुक ट्रिगरreCAPTCHA v3 हल करें [वेबहुक]उत्पाद पृष्ठ लोड करें [वेबहुक]डेटा निकालें [वेबहुक]डेटा की तुलना करें [वेबहुक]डेटा बदल गया? [वेबहुक]एलर्ट बनाएं [वेबहुक]बदलाव नहीं [वेबहुक]वेबहुक के लिए उत्तर देंजब आप नियमित जांच करना चाहते हैं, जैसे स्क्रैपिंग या स्टॉक जांच, तो समय सारणी का उपयोग करें।
जब कोई अन्य वर्कफ़्लो, सेवा या एप्लिकेशन आपके द्वारा कॉन्फ़िगर किए गए लक्ष्य को मांग पर सक्रिय करना चाहता है, तो वेबहुक का उपयोग करें।
टेम्पलेट में निम्न उपयोग किया जाता है:
| सेटिंग | मान |
|---|---|
| ऑपरेशन | reCAPTCHA v3 |
websiteURL |
https://YOUR-TARGET-SITE.com/product-page |
websiteKey |
YOUR_SITE_KEY_HERE |
pageAction |
view_product |
हल किए गए टोकन को एक अनुरोध हेडर में भेजा जाता है:
| हेडर | मान |
|---|---|
user-agent |
ब्राउज़र-शैली उपयोगकर्ता एजेंट |
x-recaptcha-token |
{{ $json.data.solution.gRecaptchaResponse }} |
यह वर्कफ़्लो में सबसे महत्वपूर्ण विवरण में से एक है। रिपॉजिटरी टेम्पलेट g-recaptcha-response में टोकन हमेशा जाता है इसकी अपेक्षा नहीं करता है। इस उदाहरण में, यह एक कस्टम हेडर में जाता है।
price और productName निकालेंHTML नोड निकालता है:
| कुंजी | CSS सेलेक्टर |
|---|---|
price |
.product-price, [data-price], .price |
productName |
h1, .product-title |
कोड नोड मानों को संग्रहीत और तुलना करता है उपयोग करता है:
$workflow.staticData.lastPrice$workflow.staticData.lastCheckedइससे वर्कफ़्लो को पहचानने में मदद मिलती है:
IF नोड {{ $json.changed }} की जांच करता है।
अगर मूल्य बदल गया, तो वर्कफ़्लो एलर्ट बनाएं में जाता है।
अन्यथा, यह बिना बदलाव में जाता है।
वेबहुक मार्ग पर, कोई भी शाखा फिर वेबहुक के लिए उत्तर दें में जाती है।
हालांकि मुख्य उदाहरण में मूल्य-तुलना तार्क शामिल है, इसे एक सुरक्षित उत्पाद-पृष्ठ स्क्रैपर टेम्पलेट के साथ तुलना तार्क के रूप में अधिक उपयोगी समझा जाना चाहिए।
पुन: उपयोगी हिस्से हैं:
इसलिए इसी संरचना के माध्यम से निम्न काम किया जा सकता है:
यह वास्तविक लक्ष्य पर सबसे महत्वपूर्ण हिस्सा है।
अधिकांश वास्तविक साइटों के लिए, आपको मान लेना चाहिए कि यहां लगभग सब कुछ समायोजित किया जा सकता है: चुनौती प्रकार, हल सेटिंग्स, टोकन कहां भेजा जाता है, अनुरोध बॉडी, कुकी, हेडर, चयनकर्ता और यहां तक कि अंतिम सफलता मानदंड। इन रिपॉजिटरी वर्कफ़्लो निर्माण के कार्यात्मक पैटर्न के उदाहरण हैं, न कि प्रत्येक साइट के बिना बदले जाने वाले निश्चित रेसिपी।
रिपॉजिटरी के उपयोग मामला वर्कफ़्लो अब समय सारणी + वेबहुक समर्थित हैं।
उपयोग करें:
इन टेम्पलेट में वेबहुक मार्ग निश्चित-लक्ष्य एक्टिवेटर हैं, न कि अर्थात उपयोगकर्ता-प्रदान किए गए लक्ष्य के लिए सार्वजनिक API।
मुख्य मूल्य-मॉनिटर उदाहरण reCAPTCHA v3 का उपयोग करता है, लेकिन आपके लक्ष्य में:
अगर यह बदल जाता है, तो आपको हल चरण को अनुकूलित करना होगा।
दो साइटों द्वारा reCAPTCHA का उपयोग करने पर भी, सेटिंग्स अलग हो सकती हैं।
आपको बदलना पड़ सकता है:
operation या टास्क प्रकारwebsiteURLwebsiteKeypageActionस्क्रैपर टेम्पलेट इन्हें प्लेसहोल्डर कॉन्फ़िगर फ़ील्ड के रूप में प्रस्तुत करता है क्योंकि उन्हें बदला जाना अपेक्षित है।
मान लें कि टोकन हमेशा एक ही जगह भेजा जाता है।
इस रिपॉजिटरी में कई पैटर्न दिखाए गए हैं:
| पैटर्न | रिपॉजिटरी उदाहरण |
|---|---|
| अनुरोध हेडर | Scraping — CapSolver + Schedule x-recaptcha-token का उपयोग करता है |
| फॉर्म बॉडी | लॉगिन वर्कफ़्लो आमतौर पर g-recaptcha-response का उपयोग एक फॉर्म-एनकोडेड बॉडी में करते हैं |
वास्तविक साइटों पर, हल किए गए टोकन कहां हो सकता है:
इस रिपॉजिटरी उदाहरण एक एक उपस्थिति पैटर्न है, न कि एक सार्वभौमिक एक।
सुरक्षित अनुरोध केवल कैप्चा या चुनौती टोकन के अलावा अधिक आवश्यकता हो सकती है।
आपको अनुकूलित करना हो सकता है:
यह विशेष रूप से आम है:
मुख्य स्क्रैपर टेम्पलेट निकालता है:
priceproductNameलेकिन आप इसे बदल सकते हैं:
वर्तमान मूल्य-मॉनिटर कोड संख्यात्मक मानों की तुलना करता है, लेकिन इसी पैटर्न को निम्न के लिए अनुकूलित किया जा सकता है:
नीचे दिए गए JSON Scraping — Price & Product Details — CapSolver + Schedule + Webhook के वर्तमान आयात करने योग्य संस्करण है, जो इस रिपॉजिटरी से आता है, जिसमें समय सारणी + वेबहुक सक्रियण मार्ग शामिल हैं।
{
"nodes": [
{
"parameters": {
"content": "## Scraping \u2014 Price & Product Monitor\n\n### How it works\n\n1. Triggers either by schedule or webhook input to start price monitoring.\n2. Solves reCAPTCHA to access the targeted product page.\n3. Retrieves and extracts data from the product page for further analysis.\n4. Compares newly fetched data with previously stored data to detect changes.\n5. Determines if changes occurred and prepares alerts if needed.\n6. Sends responses based on data analysis through designated channels.\n\n### Setup steps\n\n- [ ] Configure scheduled trigger interval in 'Every 6 Hours' node.\n- [ ] Set target website details in 'Set Target Config [Schedule]'.\n- [ ] Configure reCAPTCHA solver with API key in 'Solve reCAPTCHA v3' nodes.\n- [ ] Set up Webhook URL and path in 'Webhook Trigger'.\n- [ ] Define alert criteria and destination in 'Build Alert' nodes.\n\n### Customization\n\nAdjust the extraction pattern in 'Extract Data' nodes to fit specific product details.",
"height": 896,
"width": 480
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1328,
-304
],
"id": "52c7808e-d2bc-4779-85e6-909a51066338",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## Scheduled trigger setup\n\nInitializes the data monitoring process every 6 hours using a schedule trigger and sets the target configuration for scraping.",
"height": 320,
"width": 496,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-752,
-160
],
"id": "3c5cee67-552d-48ea-8717-7c5126269e2e",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## योजना बनाए गए डेटा एकत्रीकरण प्रक्रिया\n\nreCAPTCHA हल करता है, उत्पाद पृष्ठ लोड करता है, डेटा निकालता है, और पिछले रिकॉर्ड के साथ तुलना करके बदलाव की पहचान करता है, एक योजना आधारित ट्रिगर का अनुसरण करता है।",
"height": 496,
"width": 1680,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-144,
-304
],
"id": "d0315be2-111c-4893-bf42-2f2cc2eb186f",
"name": "स्टिकी नोट2"
},
{
"parameters": {
"content": "## वेबहूक ट्रिगर सेटअप\n\nआइनकमिंग वेबहूक के माध्यम से हाथ से ट्रिगर किए गए डेटा मॉनिटरिंग का प्रबंधन करता है और आगे बढ़ने के लिए reCAPTCHA हल करता है।",
"height": 304,
"width": 816,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-768,
336
],
"id": "a78f1606-07fb-40fd-af82-e1dc9b766206",
"name": "स्टिकी नोट3"
},
{
"parameters": {
"content": "## वेबहूक एकत्रीकरण प्रक्रिया\n\nउत्पाद पृष्ठ लोड करके, डेटा निकालकर और बदलाव निर्धारित करके वेबहूक-ट्रिगर्ड अनुरोध प्रक्रिया करता है।",
"height": 272,
"width": 1088,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
160,
320
],
"id": "1a677fd9-a3a8-404f-ba9a-2b087d7bfe11",
"name": "स्टिकी नोट4"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
-704,
0
],
"id": "sc-901",
"name": "हर 6 घंटे"
},
{
"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,
0
],
"id": "sc-900",
"name": "सेट टारगेट कॉन्फिग [योजना]"
},
{
"parameters": {
"operation": "reCAPTCHA v3",
"websiteURL": "={{ $json.websiteURL }}",
"websiteKey": "={{ $json.websiteKey }}",
"optional": {
"pageAction": "view_product"
}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-96,
0
],
"id": "sc-902",
"name": "reCAPTCHA v3 हल करें",
"credentials": {
"capSolverApi": {
"id": "BeBFMAsySMsMGeE9",
"name": "CapSolver खाता"
}
}
},
{
"parameters": {
"method": "POST",
"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": "x-recaptcha-token",
"value": "={{ $json.data.solution.gRecaptchaResponse }}"
}
]
},
"options": {
"response": {
"response": {}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
208,
0
],
"id": "sc-903",
"name": "उत्पाद पृष्ठ लोड करें"
},
{
"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": "sc-904",
"name": "डेटा निकालें"
},
{
"parameters": {
"jsCode": "const staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\nconst parsePrice = (str) => { if (!str) return null; const match = str.match(/[\\d,]+\\.?\\d*/); return match ? parseFloat(match[0].replace(',', '')) : null; };\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\nreturn [{ json: { productName, currentPrice, previousPrice: previousPrice || 'first check', changed, direction, diff: changed ? `$${diff}` : null, checkedAt: new Date().toISOString() } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
0
],
"id": "sc-905",
"name": "डेटा तुलना करें"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "if-1",
"leftValue": "={{ $json.changed }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1104,
0
],
"id": "sc-906",
"name": "डेटा बदल गया?"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a1",
"name": "alert",
"value": "=मूल्य {{ $json.direction }} हो गया {{ $json.productName }} के लिए: {{ $json.previousPrice }} \u2192 {{ $json.currentPrice }}",
"type": "string"
},
{
"id": "a2",
"name": "severity",
"value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
"type": "string"
},
{
"id": "a3",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1392,
-192
],
"id": "sc-907",
"name": "एलर्ट बनाएं"
},
{
"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": [
1392,
32
],
"id": "sc-908",
"name": "कोई बदलाव नहीं"
},
{
"parameters": {
"httpMethod": "POST",
"path": "price-monitor",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
-720,
464
],
"id": "sc-909",
"name": "वेबहूक ट्रिगर",
"webhookId": "sc-909-webhook",
"onError": "continueRegularOutput"
},
{
"parameters": {
"operation": "reCAPTCHA v3",
"websiteURL": "={{ $json.body.websiteURL }}",
"websiteKey": "={{ $json.body.websiteKey }}",
"optional": {
"pageAction": "={{ $json.body.pageAction || 'view_product' }}"
}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [
-96,
464
],
"id": "sc-910",
"name": "reCAPTCHA v3 [वेबहूक] हल करें",
"credentials": {
"capSolverApi": {
"id": "BeBFMAsySMsMGeE9",
"name": "CapSolver खाता"
}
}
},
{
"parameters": {
"method": "POST",
"url": "={{ $('Webhook Trigger').item.json.body.websiteURL }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
},
{
"name": "x-recaptcha-token",
"value": "={{ $json.data.solution.gRecaptchaResponse }}"
}
]
},
"options": {
"response": {
"response": {}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
208,
432
],
"id": "sc-911",
"name": "उत्पाद पृष्ठ लोड करें [वेबहूक]"
},
{
"parameters": {
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "price",
"cssSelector": ".product-price, [data-price], .price"
},
{
"key": "productName",
"cssSelector": "h1, .product-title"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"position": [
512,
432
],
"id": "sc-912",
"name": "डेटा निकालें [वेबहूक]"
},
{
"parameters": {
"jsCode": "const staticData = $workflow.staticData;\nconst currentPrice = $input.first().json.price;\nconst previousPrice = staticData.lastPrice;\nconst productName = $input.first().json.productName || 'Product';\nconst parsePrice = (str) => { if (!str) return null; const match = str.match(/[\\d,]+\\.?\\d*/); return match ? parseFloat(match[0].replace(',', '')) : null; };\nconst currentNum = parsePrice(currentPrice);\nconst previousNum = parsePrice(previousPrice);\nstaticData.lastPrice = currentPrice;\nstaticData.lastChecked = new Date().toISOString();\nconst changed = previousNum !== null && currentNum !== null && currentNum !== previousNum;\nconst direction = changed ? (currentNum < previousNum ? 'dropped' : 'increased') : 'unchanged';\nconst diff = changed ? Math.abs(currentNum - previousNum).toFixed(2) : '0';\nreturn [{ json: { productName, currentPrice, previousPrice: previousPrice || 'first check', changed, direction, diff: changed ? `$${diff}` : null, checkedAt: new Date().toISOString() } }];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
432
],
"id": "sc-913",
"name": "डेटा तुलना करें [वेबहूक]"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "if-2",
"leftValue": "={{ $json.changed }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1104,
432
],
"id": "sc-914",
"name": "डेटा बदल गया? [वेबहूक]"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a4",
"name": "alert",
"value": "=मूल्य {{ $json.direction }} हो गया {{ $json.productName }} के लिए: {{ $json.previousPrice }} \u2192 {{ $json.currentPrice }}",
"type": "string"
},
{
"id": "a5",
"name": "severity",
"value": "={{ $json.direction === 'dropped' ? 'deal' : 'info' }}",
"type": "string"
},
{
"id": "a6",
"name": "checkedAt",
"value": "={{ $json.checkedAt }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1424,
384
],
"id": "sc-915",
"name": "एलर्ट बनाएं [वेबहूक]"
},
{
"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": [
1440,
592
],
"id": "sc-916",
"name": "कोई बदलाव नहीं [वेबहूक]"
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.5,
"position": [
1712,
512
],
"id": "sc-917",
"name": "वेबहूक के लिए जवाब दें"
}
],
"connections": {
"Every 6 Hours": {
"main": [
[
{
```json
{
"nodes": {
"node": "लक्ष्य कॉन्फ़िगरेशन सेट करें [योजना]",
"type": "main",
"index": 0
}
]
]
},
"लक्ष्य कॉन्फ़िगरेशन सेट करें [योजना]": {
"main": [
[
{
"node": "reCAPTCHA v3 हल करें",
"type": "main",
"index": 0
}
]
]
},
"reCAPTCHA v3 हल करें": {
"main": [
[
{
"node": "उत्पाद पृष्ठ बुलाएं",
"type": "main",
"index": 0
}
]
]
},
"उत्पाद पृष्ठ बुलाएं": {
"main": [
[
{
"node": "डेटा निकालें",
"type": "main",
"index": 0
}
]
]
},
"डेटा निकालें": {
"main": [
[
{
"node": "डेटा की तुलना करें",
"type": "main",
"index": 0
}
]
]
},
"डेटा की तुलना करें": {
"main": [
[
{
"node": "डेटा में बदलाव हुआ?",
"type": "main",
"index": 0
}
]
]
},
"डेटा में बदलाव हुआ?": {
"main": [
[
{
"node": "एलर्ट बनाएं",
"type": "main",
"index": 0
}
],
[
{
"node": "कोई बदलाव नहीं",
"type": "main",
"index": 0
}
]
]
},
"वेबहुक ट्रिगर": {
"main": [
[
{
"node": "reCAPTCHA v3 [वेबहुक]",
"type": "main",
"index": 0
}
]
]
},
"reCAPTCHA v3 [वेबहुक]": {
"main": [
[
{
"node": "उत्पाद पृष्ठ बुलाएं [वेबहुक]",
"type": "main",
"index": 0
}
]
]
},
"उत्पाद पृष्ठ बुलाएं [वेबहुक]": {
"main": [
[
{
"node": "डेटा निकालें [वेबहुक]",
"type": "main",
"index": 0
}
]
]
},
"डेटा निकालें [वेबहुक]": {
"main": [
[
{
"node": "डेटा की तुलना करें [वेबहुक]",
"type": "main",
"index": 0
}
]
]
},
"डेटा की तुलना करें [वेबहुक]": {
"main": [
[
{
"node": "डेटा में बदलाव हुआ? [वेबहुक]",
"type": "main",
"index": 0
}
]
]
},
"डेटा में बदलाव हुआ? [वेबहुक]": {
"main": [
[
{
"node": "एलर्ट बनाएं [वेबहुक]",
"type": "main",
"index": 0
}
],
[
{
"node": "कोई बदलाव नहीं [वेबहुक]",
"type": "main",
"index": 0
}
]
]
},
"एलर्ट बनाएं [वेबहुक]": {
"main": [
[
{
"node": "वेबहुक के लिए प्रतिक्रिया दें",
"type": "main",
"index": 0
}
]
]
},
"कोई बदलाव नहीं [वेबहुक]": {
"main": [
[
{
"node": "वेबहुक के लिए प्रतिक्रिया दें",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"meta": {
"instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
}
}
जब आप प्लेसहोल्डर्स को सेट कर लें और वर्कफ़्लो को सक्रिय कर दें, तो वेबहुक मार्ग को ट्रिगर करें:
curl -X POST https://your-n8n-instance.com/webhook/price-monitor \
-H "Content-Type: application/json" \
-d '{}'
अपेक्षित प्रतिक्रिया (पहली जांच):
{
"स्थिति": "कोई बदलाव नहीं",
"वर्तमान मूल्य": "$29.99",
"जांचे गए समय": "2026-03-11T08:00:00.000Z"
}
अपेक्षित प्रतिक्रिया (मूल्य बदल गया):
{
"एलर्ट": "Widget Pro के लिए मूल्य में गिरावट: $39.99 → $29.99 (-$10.00)",
"गंभीरता": "डील",
"जांचे गए समय": "2026-03-11T14:00:00.000Z"
}
वास्तविक मूल्य डेटा के साथ एक प्रतिक्रिया पूर्ण पाइपलाइन काम कर रही है, कैपचा हल कर दी गई है, सुरक्षित पृष्ठ बुलाया गया है, डेटा निकाला गया है और तुलना तकनीक चल रही है, इसकी पुष्टि करती है।
अगर CapSolver टोकन हल करता है लेकिन साइट अभी भी मांग को ब्लॉक कर देती है, तो समस्या आमतौर पर हल करने के आसपास नहीं होती है। सामान्य कारण हैं:
pageActionअगर लक्ष्य अन्य कैपचा चुनौती का उपयोग करता है - जैसे कि Cloudflare Turnstile, Cloudflare चुनौती, GeeTest, DataDome, AWS WAF, या MTCaptcha - तो मुख्य उदाहरण काम नहीं करेगा। आपको अपडेट करना होगा:
अगर HTML नोड आपकी अपेक्षा के अनुसार फ़ील्ड निकालता है:
रिपॉजिटरी टेम्पलेट अक्षम के रूप में आयात किए जाते हैं। जब तक आप:
वेबहुक मार्ग लाइव नहीं होगा।
Build Alert या प्रमाणीकरण सफलता/असफलता नोड्स के बाद डाउनस्ट्रीम अधिसूचना या संग्रहण नोड्स जोड़ें।शुरू करने के लिए तैयार हैं? CapSolver के लिए पंजीकरण करें और अपने पहले रीचार्ज के लिए OPENCLAW बोनस कोड का उपयोग करें!
मुख्य बात सरल है: कैपचा हल करना कार्यप्रवाह का केवल एक चरण है। वास्तविक स्क्रैपर को टोकन को सही तरीके से सबमिट करना, सही मांग आकृति भेजना, और आपके उपयोग मामले के लिए महत्वपूर्ण फ़ील्ड निकालना आवश्यक है।
इसी कारण इन टेम्पलेट को उदाहरण के रूप में लिया जाना चाहिए। अलग साइट अलग कैपचा प्रकार का उपयोग कर सकती है, टोकन कहीं अलग जगह अपेक्षित हो सकती है, अतिरिक्त कुकीज या फ़ील्ड की आवश्यकता हो सकती है, अलग उत्तर आकृति लौट सकती है, और अलग निकाल या परीक्षण लॉजिक की आवश्यकता हो सकती है।
इस टेम्पलेट आपको शुरू करने के लिए एक शुरुआती बिंदु प्रदान करता है:
इसका उपयोग व्यापक पैटर्न के साथ करता है:
ट्रिगर → कैपचा हल करें → सुरक्षित मांग सबमिट करें → परिणाम निकालें या पुष्टि करें → आउटपुट
प्लेसहोल्डर्स को सेट करें, अपने लक्ष्य के साथ वर्कफ़्लो के अक्षम होने से पहले, फिर आपके उपयोग मामले के लिए योजना या वेबहुक मार्ग को सक्रिय करें।
लॉगिन प्रवाह के लिए स्क्रैपर टेम्पलेट को बदलकर उपयोग कर सकते हैं। HTTP मांग नोड को पासवर्ड के साथ सबमिट करें। विशिष्ट कैपचा प्रकार गाइड (reCAPTCHA, Turnstile आदि) के लिए तैयार लॉगिन वर्कफ़्लो टेम्पलेट देखें।
फिर आपको वर्कफ़्लो को बदलना होगा। मुख्य उदाहरण के reCAPTCHA सेटिंग्स और मांग पैटर्न सार्वभौमिक नहीं हैं। CapSolver Cloudflare Turnstile, Cloudflare चुनौती, GeeTest V3/V4, DataDome, AWS WAF, MTCaptcha आदि के समर्थन में करता है। CapSolver हल चरण और सुरक्षित मांग को लक्ष्य द्वारा उपयोग किए गए वास्तविक चुनौती प्रकार और टोकन-सबमिट पैटर्न के साथ अपडेट करें।
जहाँ साइट अपेक्षित है। वह अक्सर हो सकता है:
मूल्य-निगरानी टेम्पलेट हेडर का उपयोग करता है। अन्य साइट अलग हो सकती हैं।
आमतौर पर हाँ। भले ही साइटें समान कैपचा परिवार का उपयोग करती हों, उन्हें अलग websiteURL, websiteKey, pageAction, अदृश्य सेटिंग्स या अन्य कार्य विकल्प की आवश्यकता हो सकती है।
हाँ। आप आवश्यकतानुसार सेलेक्टर्स और आउटपुट लॉजिक को बदल सकते हैं, जैसे कि स्टॉक, शीर्षक, SKU, विवरण, सुरक्षित सामग्री, लॉगिन स्थिति, या साइट-स्वास्थ्य संकेत।
पहले सुरक्षित उत्तर की जांच करें जो HTTP मांग नोड द्वारा लौटाया जाता है।
वर्कफ़्लो को उस क्रम में डिबग करें: हल करें → सबमिट करें → उत्तर जांचें → निकालें।
CapSolver और n8n का उपयोग करके eCAPTCHA v2/v3 सॉल्वर API बनाएं। बिना कोडिंग के टोकन को ऑटोमेट करने, वेबसाइट पर सबमिट करने और सुरक्षित डेटा निकालने का तरीका सीखें।

खोजें कि चित्र पहेलियां हल करने के लिए सबसे अच्छा AI क्या है। जानें कैसे कैपसॉल्वर के विजन इंजन और इमेज टू टेक्स्ट एपीआईज़ उच्च शुद्धता के साथ जटिल दृश्य चुनौतियों को स्वचालित करते हैं।
