python - 如何使用 Selenium 和 Python 请求以编程方式识别 ReCaptcha V2 的 32 位数据站点 key 以获取有效响应?

标签 python selenium python-requests recaptcha 2captcha

验证码和 Python 请求几乎是新的。 captcha documentation说要复制 data-sitekey 的值范围。

这是我的尝试,使用 Selenium打开 url 并使用 Python requests得到回应。

mainurl = 'https://imagetyperz.xyz/automation/recaptcha-v2.html'
driver.get(mainurl)
data_sitekey_class = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "g-recaptcha"))).get_attribute("data-sitekey")
print(data_sitekey_class)
src_css_selector = driver.find_element_by_css_selector("iframe[role='presentation']").get_attribute("src")
print(src_css_selector)
keygoogle = src_css_selector[52:92]
print('Site Key = ', keygoogle)
data_post = {'key': data_sitekey_class, 'method': 'userrecaptcha', 'googlekey': keygoogle, "pageurl": mainurl}
response = requests.post(url = 'https://2captcha.com/in.php', data = data_post )
print(response)
print(response.text)

我收到 200作为回应:
6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY&co=aHR0cHM6Ly9pbWFnZXR5cGVyei54eXo6NDQz&hl=en&v=vJuUWXolyYJx1oqUVmpPuryQ&size=normal&cb=r14cgu7t25ul
Site Key =  6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY
<Response [200]>
ERROR_WRONG_USER_KEY

这是由于:
ERROR_WRONG_USER_KEY

此外,Error部分提到:
Error code: ERROR_WRONG_USER_KEY
Description: You've provided key parameter value in incorrect format, it should contain 32 symbols.
Action: Stop sending requests. Check your API key.

最后,Solving Captchas部分提到:

从您的帐户设置页面获取您的 API key 。每个用户都有一个唯一的身份验证 token ,我们称之为 API key 。这是一个 32 个字符的字符串,如下所示:
1abc234de56fab7c89012d34e56fa7b8

data-sitekey我看到的是:
6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY

这是 41 少量。

我哪里错了?

最佳答案

data-sitekey通过 41 个字符的字符串表示工作正常。错误 ERROR_WRONG_USER_KEY发生,因为我从来没有一个有效的 API key首先准备好。即使与 您账户中的余额,您可以成功获得<Response [200]>文本为 ERROR_ZERO_BALANCE如下:

  • 代码块:
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    import requests
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    mainurl = 'https://imagetyperz.xyz/automation/recaptcha-v2.html'
    driver.get(mainurl)
    data_sitekey = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "g-recaptcha"))).get_attribute("data-sitekey")
    print(data_sitekey)
    api_key = '--------------------------------'
    data_post = {'key': api_key, 'method': 'userrecaptcha', 'googlekey': data_sitekey, "pageurl": mainurl}
    response = requests.post(url = 'https://2captcha.com/in.php', data = data_post )
    print(response)
    print(response.text)
    
  • 控制台输出:
    6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY
    <Response [200]>
    ERROR_ZERO_BALANCE
    
  • 关于python - 如何使用 Selenium 和 Python 请求以编程方式识别 ReCaptcha V2 的 32 位数据站点 key 以获取有效响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60150761/

    相关文章:

    python - 无法使用 Git 部署生成的 Flask 文件

    ruby-on-rails - 如何使用 Cucumber、capybara 和 selenium 打开多个并发 session ?

    java - 无法使用 java 通过 selenium webdriver 点击 Facebook "setting"链接

    python - 在 python 中处理非常小的数字

    python - 获取实例列表的属性

    java - 如何在 Java Selenium 中禁用 Chrome 实验选项 Same-site-by-default-cookies?

    python - WIPO 搜索缺少表格数据 POST 消息

    Python 请求。错误 403

    python - 从我的 python 代码中进行 graphQL 突变,出现错误

    python - 查找总和大于 50 的最短子列表