बिना किसी code step के Make.com में कैप्चा कैसे हल करें

make.com captcha - How to Solve CAPTCHA in Make.com Without a Code Step

Make.com में कैप्चा वाला step तीन HTTP modules और एक Sleep है, और scenario में कहीं कोई code नहीं। challenge भेजें, इंतज़ार करें, तब तक poll करें जब तक token वापस न आ जाए, फिर उसे form के साथ भेज दें। लोगों को असल में जो चीज़ रोकती है वह loop नहीं है। वह पता है: scenario, Make.com के अपने cloud में चलता है, इसलिए वहाँ 127.0.0.1 का मतलब Make.com का container है, आपकी मेज़ नहीं, और HTTP module सिर्फ़ ऐसे HTTPS URL को कॉल करेगा जिसका certificate उसे भरोसेमंद लगे। पता सही कर लीजिए, बाक़ी तो पंद्रह मिनट की क्लिकबाज़ी है।

आपको क्या चाहिए

  • किसी भी plan पर एक Make.com खाता। यहाँ इस्तेमाल हुआ हर module built-in HTTP, Tools और Flow control ऐप्स में मौजूद है।
  • आपकी अपनी किसी Windows मशीन पर Server mode में चल रहा CapSkip, जो इंटरनेट से पहुँच में हो।
  • उस मशीन की ओर इशारा करता एक hostname और उसके लिए एक सार्वजनिक रूप से भरोसेमंद TLS certificate।
  • सुरक्षित form का पेज URL, और उसकी sitekey।

Local mode और Server mode, दोनों के बारे में यहाँ बताया गया है: कनेक्शन सेटिंग्स। Local mode तब सही चुनाव है जब आपका ऑटोमेशन और सॉल्वर एक ही मशीन साझा करते हों, और यही वह चीज़ है जो कोई cloud scenario कर ही नहीं सकता।

यहाँ loopback पता विकल्प क्यों नहीं है

Make.com के scenarios, Make.com के अपने infrastructure पर, चार zones में से किसी एक में चलते हैं। आपका खाता us1, us2, eu1 या eu2 पर रहता है, और हर बाहर जाने वाली request उसी zone के प्रकाशित egress पतों से निकलती है। उस रास्ते में कुछ भी आपके network को नहीं छूता, इसलिए 127.0.0.1 पर भेजी गई request उसी container के अंदर हल होती है जो आपका scenario चला रहा है, और वहाँ कुछ भी सुन नहीं रहा होता।

जवाब है Server mode, और यह कोई अलग उत्पाद नहीं है। सॉल्वर अब भी आपके hardware पर चलता है, अब भी बिना प्रति-हल शुल्क के हल करता है, और अब भी वही 2captcha-compatible endpoints देता है। जो बदलता है वह है वह interface जिससे वह bind होता है: सिर्फ़ लोकल डिवाइस को जवाब देने के बजाय, वह आपके network या public IP पर जवाब देता है, ताकि जिसके पास पता और key हो वह उसे कॉल कर सके। एक static public IP उस पते को आपके नीचे से खिसकने नहीं देता।

वह प्रकाशित egress सूची दूसरी दिशा में भी काम की है। Make.com हर zone के बाहर जाने वाले पते दस्तावेज़ में देता है, इसलिए आप firewall में सॉल्वर के port तक सिर्फ़ अपने zone के पतों को आने दे सकते हैं और बाक़ी सब गिरा सकते हैं। Make.com की तरफ़ के आने वाले पते dynamic हैं और प्रकाशित नहीं होते, इसलिए उन्हें पिन करने की कोशिश न करें।

सॉल्वर को ऐसा पता दें जो Make.com स्वीकार करे

यही वह शर्त है जो सबको फँसाती है, और इसे दो बार पढ़ना ठीक रहेगा। HTTP module अपने URL field को एक HTTPS endpoint बताता है, और वह उन certificates को ठुकरा देता है जिन्हें वह सत्यापित नहीं कर सकता। एक self-signed certificate काफ़ी नहीं है, और न ही सादे HTTP पर port 8080 वाला कोई नंगा IP पता।

इसलिए सॉल्वर के आगे एक TLS terminator लगाएँ। Windows पर Caddy सबसे छोटा रास्ता है, क्योंकि वह ख़ुद ही असली certificate माँगता और नवीनीकृत करता है, और एक ही कमांड पूरा configuration है। पहले किसी hostname को उस मशीन पर इंगित करें, फिर उसे चलाएँ।

# Fronts CapSkip on 8080 with a real certificate for the hostname.
# Ports 80 and 443 must reach this machine for the challenge.
caddy reverse-proxy --from solver.example.com --to 127.0.0.1:8080

Make.com को छूने से पहले इसे अपनी ही मशीन से जाँच लें। अगर curl को certificate से कोई शिकायत नहीं, तो scenario को भी नहीं होगी, और आपने डिबगिंग का दायरा आधा कर दिया।

# Submit a reCAPTCHA v2 job. json=1 makes the reply JSON.
curl -s "https://solver.example.com/in.php" \
  -d "key=YOUR_API_KEY" \
  -d "method=userrecaptcha" \
  -d "googlekey=YOUR_SITEKEY" \
  -d "pageurl=https://example.com/page-with-recaptcha" \
  -d "json=1"

# {"status":1,"request":"2122988149"}

चरण 1: कैप्चा submit करें

एक HTTP module जोड़ें और वह action चुनें जो request भेजता है। method को POST पर और URL को अपने सॉल्वर के in.php endpoint पर सेट करें। URL-encoded body type चुनें और पाँच fields जोड़ें, जो वही पाँच हैं जो ऊपर वाली curl call भेजती है: key, method का नाम, sitekey, पेज URL और JSON flag।

वह विकल्प चालू करें जो response को parse करता है। उसके बिना जवाब एक ही string के रूप में आता है और आप उसमें से कुछ भी map नहीं कर सकते। उसके साथ आपको एक status और एक request मान मिलता है, और सफल submit पर request का मान ही job id होता है।

CAPTCHA का प्रकार method का नाम ही चुनता है। reCAPTCHA v2 के लिए userrecaptcha इस्तेमाल करें और v3 के लिए उसमें version=v3 जोड़ें, Cloudflare Turnstile के लिए turnstile, GeeTest v3 के लिए geetest, और inline भेजे गए image कैप्चा के लिए base64। हर एक की पूरी parameter सूची यहाँ है: CapSkip API डॉक्यूमेंटेशन.

चरण 2: poll करने से पहले रुकें

Tools ऐप से एक Sleep module जोड़ें। reCAPTCHA v2 का एक हल आम तौर पर पंद्रह से पैंतालीस सेकंड लेता है, इसलिए तुरंत poll करना बस एक operation खर्च करके यह सुनना है कि जवाब अभी तैयार नहीं। बीस सेकंड पहला इंतज़ार रखने के लिए समझदारी भरा है।

Sleep, scenario को ज़्यादा से ज़्यादा 300 सेकंड यानी पाँच मिनट तक रोकता है, और यही छत वह वजह है कि अगला कदम एक लंबे इंतज़ार के बजाय एक loop है। यह एक अकेले हल के लिए ज़रूरत से कहीं ज़्यादा है, पर आप इसका इस्तेमाल बैठकर अनगिनत retries का इंतज़ार करने के लिए नहीं कर सकते।

चरण 3: token आने तक poll करें

Make.com में कोई wait-until-condition module नहीं है, इसलिए poll एक Repeater और एक filter से बनाया जाता है। Repeater, Flow control ऐप में रहता है और एक bundle जनरेटर है: उसे एक शुरुआती मान और repeats की संख्या दें, और वह उतने ही bundles छोड़ता है, हर एक के साथ i नाम का एक counter होता है। उसके आगे जो कुछ है वह हर bundle पर एक बार चलता है, और वही आपका loop body है।

repeats को दस पर सेट करें। Repeater के पीछे पाँच सेकंड का एक दूसरा Sleep और एक दूसरा HTTP module रखें जो चरण 1 वाली job id के साथ res.php को कॉल करे।

# The poll. Same key, the id from the submit, action=get.
curl -s "https://solver.example.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149&json=1"

# Still working:
# {"status":0,"request":"CAPCHA_NOT_READY"}
#
# Done:
# {"status":1,"request":"03AGdBq24PBCbwiDR..."}

अब उस module से निकलने वाली link पर एक filter जोड़ें और bundles को सिर्फ़ तब आगे जाने दें जब status 1 के बराबर हो। इसलिए filter के बाद का सब कुछ ठीक एक बार चलता है, उसी poll पर जो सफल हुआ, और कोई दूसरी कोशिश उससे आगे नहीं निकल पाती। यह भी साफ़ रहे कि इससे क्या होता है और क्या नहीं। Repeater अब भी उतने ही bundles छोड़ता है जितने आपने उससे माँगे थे, इसलिए loop जल्दी ख़त्म नहीं होता; जो जल्दी ख़त्म होता है वह है इंतज़ार, क्योंकि जिस पल कोई poll token को पा लेता है उसी पल token आगे बढ़ जाता है। token उसी bundle का request मान होता है।

API की एक ख़ासियत इस डिज़ाइन को आकार देती है और आसानी से नज़र से चूक जाती है। कोई नतीजा सिर्फ़ एक बार पढ़ा जा सकता है, इसलिए पहला सफल poll ही अकेला ऐसा है जो आपको कभी token देगा। उसे दोबारा लाने के लिए res.php को दूसरी बार कॉल करने के बजाय, आगे जो भी आता है उसमें उसे फ़ौरन map कर लें।

वही submit-और-poll वाला ढाँचा हर no-code टूल में दिखता है, और सारा फ़र्क़ इसमें है कि platform उसके इर्द-गिर्द क्या थोपता है। इस flow का self-hosted रूप, जहाँ ऑटोमेशन और सॉल्वर एक ही मशीन साझा कर सकते हैं, यहाँ लिखा गया है: n8n कैप्चा वर्कफ़्लो गाइड। जिस platform में ढाँचा Sleep की छत नहीं बल्कि step के runtime की छत तय करती है, उसे यहाँ कवर किया गया है: Zapier वॉकथ्रू.

loop की operations में क्या क़ीमत पड़ती है

Make.com operations के हिसाब से बिल बनाता है, और एक operation का मतलब है एक module का एक bundle पर एक बार चलना। कोई trigger चाहे जितना लौटाए, गिना एक ही बार जाता है, पर Repeater के पीछे का हर module हर bundle पर एक बार चलता है, इसलिए एक Sleep और एक HTTP कॉल के दस repeats बीस operations हैं, भले ही token दूसरी ही कोशिश में आ जाए। filter, loop को नहीं रोकता; वह सिर्फ़ bundles को आगे बढ़ने से रोकता है।

वह गिनती तय है, कोई आम अंदाज़ा नहीं, और इसी वजह से नीचे दी गई दोनों आदतें अपनाने लायक हैं। पहला Sleep इतना लंबा रखें कि जवाब आम तौर पर पहले या दूसरे poll तक तैयार हो जाए, क्योंकि यही वह चीज़ है जो आपको repeats की संख्या कम रखने देती है। और repeats को आरामदेह के बजाय हक़ीक़त के सबसे बुरे हाल के हिसाब से रखें: पाँच सेकंड पर दस repeats शुरुआती इंतज़ार के ऊपर पचास सेकंड जोड़ते हैं, जो v2 के लिए काफ़ी है।

हल करने पर तो कोई मीटर चलता ही नहीं। CapSkip आपकी अपनी मशीन पर चलता है, इसलिए किसी retry की आपको बस इतनी क़ीमत पड़ती है जितने operations Make.com उन modules के लिए गिनता है जिन्होंने वह retry किया।

चरण 4: token को form के साथ भेजें

token का आप क्या करते हैं, यह लक्ष्य पर निर्भर है। अगर आप कोई form post कर रहे हैं, तो एक तीसरा HTTP module जोड़ें और असली form fields के साथ token को g-recaptcha-response field के रूप में शामिल करें। Turnstile के लिए field का नाम इसके बजाय cf-turnstile-response होता है, और सॉल्वर वह user agent भी लौटाता है जो उसने इस्तेमाल किया, जिसे किसी challenge पेज को request headers में देखना ही होगा।

Tokens समय के साथ ख़त्म हो जाते हैं, और reCAPTCHA v2 के लिए यह खिड़की हल पूरा होने के पल से क़रीब दो मिनट की होती है। submit वाला module filter के तुरंत बाद रखें। जो कुछ भी धीमा है, जैसे कोई record लाना या कोई payload बनाना, वह हल और submit के बीच नहीं, बल्कि हल से पहले आना चाहिए। दोनों submission शैलियाँ और समय की बात यहाँ कवर की गई हैं: reCAPTCHA v2 सॉल्वर पेज.

आम errors और उनका मतलब

आप जो देखते हैंकारणफिक्स
पहले module पर connection errorसॉल्वर किसी loopback या private पते पर हैCapSkip को Server mode पर बदलें और एक सार्वजनिक hostname इस्तेमाल करें
certificate या TLS की errorself-signed certificate, या सादा HTTPसॉल्वर के आगे सार्वजनिक रूप से भरोसेमंद certificate लगाएँ
response एक ही बिना parse हुई string के रूप में आता हैHTTP module पर parse वाला विकल्प बंद हैउसे चालू करें, फिर fields दोबारा map करें
ERROR_WRONG_USER_KEYkey वाला field ख़ाली है या ग़लत बना हैrequest में map किए गए मान की जाँच करें
ERROR_GOOGLEKEYसॉल्वर तक ख़ाली या ग़लत sitekey पहुँचीsitekey को live पेज से दोबारा पढ़ें
हर repeat पर CAPCHA_NOT_READYloop, हल में लगने वाले समय से छोटा हैपहला Sleep बढ़ाएँ, या repeats जोड़ें
दूसरा poll token के बिना वापस आता हैकोई नतीजा सिर्फ़ एक बार पढ़ा जा सकता हैउसे सफल poll पर ही map करें, दोबारा न लाएँ
form ऐसे token को ठुकरा देता है जो ठीक लगता हैsubmit चलने से पहले ही वह ख़त्म हो गयाधीमे modules को हल से पहले ले जाएँ

FAQ

क्या scenario, सॉल्वर तक 127.0.0.1 पर पहुँच सकता है?

Make.com एक hosted उत्पाद है और इसका कोई self-hosted संस्करण नहीं, इसलिए किसी scenario में loopback पता कभी आपका होता ही नहीं। अगर आपका ऑटोमेशन सचमुच सॉल्वर वाली उसी मशीन पर चलता है, तो आप किसी दूसरे ही टूल की बात कर रहे हैं। एक self-hosted n8n instance traffic को लोकल डिवाइस पर ही रखता है, और ऐसा ही वह script भी करती है जो इनमें से किसी एक के लिए लिखी गई हो: CapSkip SDKs.

क्या सॉल्वर को इंटरनेट के सामने खोलना सुरक्षित है?

है, बशर्ते आप तय कर लें कि उस तक कौन पहुँच सकता है। key validation चालू करें ताकि बिना प्रमाणीकरण वाली request ठुकरा दी जाए, scenario को उसकी अपनी key दें ताकि आप अकेले उसी को रद्द कर सकें, और firewall के नियम को अपने Make.com zone के प्रकाशित egress पतों तक सीमित रखें। उसके आगे लगे TLS terminator का मतलब है कि key कभी खुले रूप में network पार नहीं करती।

loop के बजाय एक लंबा Sleep क्यों नहीं?

क्योंकि एक अकेला Sleep 300 सेकंड पर ख़त्म हो जाता है और क्योंकि आप अंदाज़ा ही लगा रहे होंगे। कोई तय इंतज़ार या तो हर run में घड़ी का वक़्त जलाता है या धीमे मामलों में ख़ाली हाथ लौटता है, और दोनों ही हालत में आपको दूसरी कोशिश मिलती ही नहीं। Repeater आपको वे retries देता है, और जिस पल कोई poll token को पा लेता है उसी पल token submit वाले module तक पहुँच जाता है, जो आम तौर पर दूसरा poll होता है। loop ख़ुद तब भी अपनी पूरी गिनती चलाता है, इसलिए इससे आपको छोटा बिल नहीं, बल्कि भरोसा मिलता है।

क्या हल के लिए scenario को किसी proxy की ज़रूरत है?

आम तौर पर नहीं। proxy का सहारा reCAPTCHA, Turnstile और GeeTest के लिए मौजूद है, और वह तब मायने रखता है जब लक्ष्य साइट token को उसी IP से बाँध देती है जो उसे submit करेगा। Image कैप्चा proxy लेते ही नहीं। proxy के parameters पहले HTTP module में जोड़ें, यानी उसी में जो in.php को कॉल करता है, और वह भी तभी जब आप देखें कि समय पर पहुँचने के बावजूद tokens ठुकराए जा रहे हैं।

संक्षेप में

CapSkip को Server mode में रखें, उसके आगे एक hostname और एक भरोसेमंद certificate लगाएँ, फिर scenario में चार चीज़ें जोड़ें: एक HTTP submit, एक Sleep, एक Repeater जिसके पीछे एक Sleep और एक HTTP poll हो, और एक filter जो सिर्फ़ पूरे हो चुके नतीजे को आगे जाने दे। कहीं भी कोई code step शामिल नहीं है। यही flow Python, Node.js, PHP या C# में एक ही call में सिमट जाता है, और इनमें से हर एक यहाँ दिखाया गया है: CapSkip SDK पेज.

किसी scenario को बड़ा करने से पहले यह जानना काम का है। चूँकि CapSkip एक कैप्चा सॉल्वर है जो आपके पास पहले से मौजूद hardware पर चलता है, इसलिए हल की संख्या कभी किसी बिल पर नहीं दिखती। मात्रा के साथ सिर्फ़ वही operation count बढ़ता है जो Make.com उसके आसपास के modules के लिए वसूलता है।