Selenium के साथ CAPTCHA सॉल्वर इस्तेमाल करें

solvethree द्वारापढ़ने में 4 मिनट

reCAPTCHA Enterprise टोकन पाने के लिए solvethree इस्तेमाल करें, फिर Selenium से solution.token को अपने एप्लिकेशन के फ़ॉर्म में डालकर सबमिट करें। SDK टास्क हल करता है; यह आपके लिए ब्राउज़र फ़ॉर्म नहीं भरता।

उदाहरण में टोकन फ़ील्ड और सबमिट बटन वाला HTTPS फ़ॉर्म इस्तेमाल होता है। इन सेलेक्टर को उस एप्लिकेशन के अनुसार बदलें जिसका आप परीक्षण कर रहे हैं।

इस पेज पर

फ़ॉर्म और Python एनवायरनमेंट तैयार करें

  1. 1.

    डिपेंडेंसी इंस्टॉल करें

    Chrome के साथ Python 3.10 या नया संस्करण इस्तेमाल करें। pip से selenium पैकेज इंस्टॉल करें, फिर डाउनलोड की जा सकने वाली wheel से आधिकारिक solvethree Python SDK इंस्टॉल करें। Python इंटीग्रेशन में दिए गए सीधे डाउनलोड से इंस्टॉल करने के निर्देश इस्तेमाल करें; इसकी जगह पैकेज रजिस्ट्री से इंस्टॉल करना उपलब्ध न मान लें।

  2. 2.

    लक्ष्य प्रोफ़ाइल कॉन्फ़िगर करें

    solvethree कंसोल में अपने स्वामित्व वाले फ़ॉर्म का होस्टनेम सेट करें और सुनिश्चित करें कि उसकी प्रोफ़ाइल आपके वर्कस्पेस के लिए सक्रिय है। टास्क में होस्टनेम भेजने से वह प्रोफ़ाइल नहीं बनती। नमूना login ऐक्शन का अनुरोध करता है; अगर आपका एप्लिकेशन कोई दूसरा ऐक्शन इस्तेमाल करता है, तो इसे बदलें।

  3. 3.

    एनवायरनमेंट वेरिएबल सेट करें

    TARGET_URL को अपने HTTPS फ़ॉर्म के पूरे URL पर, SOLVETHREE_PROXY को अपने HTTP या HTTPS प्रॉक्सी URL पर और SOLVETHREE_API_KEY को अपने वर्कस्पेस की API कुंजी पर सेट करें। कुंजी को Python प्रोसेस में रखें, पेज के JavaScript में नहीं।

पहले हल करें, फिर लौटाई गई पहचान के साथ Chrome शुरू करें

इस Chrome नमूने के लिए ऐसी प्रॉक्सी चाहिए जिसमें IP अनुमति-सूची में हो और कोई यूज़रनेम या पासवर्ड न हो। यह क्रेडेंशियल वाले प्रॉक्सी URL अस्वीकार करता है और प्रमाणीकृत प्रॉक्सी सेटअप लागू नहीं करता।

टास्क TARGET_URL से निकाला गया होस्टनेम, login ऐक्शन और एक प्रॉक्सी इस्तेमाल करता है। solve से तैयार परिणाम लौटने के बाद, Chrome उसी प्रॉक्सी और लौटाए गए userAgent के साथ शुरू होता है। नेविगेशन से पहले नमूना लौटाया गया secChUa हेडर भी सेट करता है।

Selenium + Python · IP अनुमति-सूची वाली प्रॉक्सी के साथ Chrome
# Install selenium and the official solvethree Python SDK first.
import os
from urllib.parse import urlsplit
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from solvethree import Solvethree

target = os.environ["TARGET_URL"]  # Your configured HTTPS form page.
proxy_url = os.environ["SOLVETHREE_PROXY"]
proxy = urlsplit(proxy_url)
if proxy.username or proxy.password:
    raise ValueError("This Chrome example requires an IP-allowlisted proxy without URL credentials")
client = Solvethree(os.environ["SOLVETHREE_API_KEY"])
result = client.solve({"site": urlsplit(target).hostname, "action": "login", "proxy": proxy_url})
solution = result["solution"]
options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=" + proxy_url)
options.add_argument("--user-agent=" + solution["userAgent"])
driver = webdriver.Chrome(options=options)
try:
    driver.execute_cdp_cmd("Network.enable", {})
    driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {
        "headers": {"sec-ch-ua": solution["secChUa"]}
    })
    driver.get(target)
    # Adapt the field and button to your application's form contract.
    field = WebDriverWait(driver, 20).until(
        lambda browser: browser.find_element(By.NAME, "g-recaptcha-response")
    )
    driver.execute_script("""
        arguments[0].value = arguments[1];
        arguments[0].dispatchEvent(new Event('input', {bubbles:true}));
    """, field, solution["token"])
    driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]').click()
    # Check your application's success response here.
finally:
    driver.quit()

Solvethree.solve टास्क को एक बार बनाता है और उसके तैयार होने या अपवाद उठाने तक पोल करता है। उसके बाद ही ब्राउज़र फ़ॉर्म पर जाता है। स्क्रिप्ट टोकन फ़ील्ड का इंतज़ार करती है, solution.token सेट करती है, input इवेंट डिस्पैच करती है और सबमिट बटन पर क्लिक करती है। Chrome को finally ब्लॉक में बंद किया जाता है।

डेमो की फ़ॉर्म संबंधी धारणाएँ बदलें

  • TARGET_URL आपके एप्लिकेशन का फ़ॉर्म पेज है। टास्क का site उसका होस्टनेम है, पूरा URL नहीं; reCAPTCHA अनुरोध url या type फ़ील्ड इस्तेमाल नहीं करते।
  • login नमूने का ऐक्शन है। इसे एप्लिकेशन और उसकी कॉन्फ़िगर की गई प्रोफ़ाइल में इस्तेमाल होने वाले ऐक्शन से बदलें।
  • g-recaptcha-response के साथ By.NAME डेमो का textarea ढूँढता है। वह फ़ील्ड या सबमिशन पैरामीटर इस्तेमाल करें जिसे आपका एप्लिकेशन वास्तव में पढ़ता है। मान सेट करना और input इवेंट डिस्पैच करना डेमो का हैंडऑफ़ है, कोई सार्वभौमिक reCAPTCHA कॉलबैक नहीं।
  • button[type="submit"] डेमो के सबमिट बटन की पहचान करता है। इसे अपने फ़ॉर्म के स्पष्ट सेलेक्टर से बदलें और एप्लिकेशन के लिए ज़रूरी सेशन, CSRF और कॉलबैक व्यवहार बनाए रखें।

नमूने का 20-सेकंड का स्पष्ट इंतज़ार सिर्फ़ यह जाँचता है कि textarea मौजूद है। Submit पर क्लिक करने के बाद, अपने एप्लिकेशन के वास्तविक परिणाम, जैसे सफलता की स्थिति या वैलिडेशन त्रुटि, के लिए सशर्त इंतज़ार जोड़ें। पूरे ब्राउज़र फ़्लो के लिए सॉल्वर टाइमआउट से अलग समय-सीमा रखें; स्टेट की जाँच की जगह तय अवधि के स्लीप न लगाएँ और न ही बिना सोचे-समझे अंतर्निहित और स्पष्ट इंतज़ार मिलाएँ।

एक और समाधान खरीदने से पहले विफल हो रहे चरण की जाँच करें

सॉल्वर टास्क Chrome शुरू होने से पहले विफल हो जाता है।

अंतिम स्थिति वाले टास्क के errorCode और error की जाँच करें। विफल टास्क और HTTP अनुरोध त्रुटि के बीच अंतर करें।

यह आज़माएँ: दोबारा कोशिश करने से पहले बताई गई इनपुट, प्रोफ़ाइल या कनेक्टिविटी की समस्या ठीक करें। विफल टास्क को पोल करना बंद करें; बिना बदले अमान्य इनपुट एक और अनुरोध करने से ठीक नहीं होंगे।

textarea ढूँढते समय Selenium का टाइमआउट हो जाता है।

पुष्टि करें कि Chrome इच्छित फ़ॉर्म पर पहुँचा है और पेज में डेमो का नामित फ़ील्ड वास्तव में मौजूद है।

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

टोकन तैयार है, लेकिन एप्लिकेशन सबमिशन अस्वीकार करता है।

पहले एप्लिकेशन के बाहर जाने वाले अनुरोध की जाँच करें। देखें कि उसमें solution.token है—टास्क ID या पुराना मान नहीं—और ऐक्शन, प्रॉक्सी, ब्राउज़र पहचान तथा सेशन इच्छित फ़्लो से मेल खाते हैं।

यह आज़माएँ: दूसरा टोकन माँगने से पहले भेजे गए पैरामीटर या एप्लिकेशन की आवश्यकताओं को ठीक करें। तैयार टास्क एक समाधान देता है; सबमिशन स्वीकार हुआ या नहीं, यह एप्लिकेशन की प्रतिक्रिया तय करती है।

अपना पहला टास्क चलाएँ।

$5 वर्कस्पेस क्रेडिट के साथ शुरुआत करें।

वर्कस्पेस बनाएँ
Selenium के साथ CAPTCHA सॉल्वर इस्तेमाल करें · solvethree