当前位置: 首页 > 面试题库 >

如何使用Selenium和Python请求以编程方式识别ReCaptcha V2的32位data-sitekey以获取有效的响应?

酆乐湛
2023-03-14
问题内容

验证码和Python请求几乎是新的。验证码文档说要复制data-sitekey参数的值。

这是我的尝试,使用Selenium打开url并使用Pythonrequests获得响应。

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 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.

最后,解决验证码部分提到:

从帐户设置页面获取API密钥。每个用户都有一个唯一的身份验证令牌,我们称其为API密钥。这是一个32个字符的字符串,如下所示:

1abc234de56fab7c89012d34e56fa7b8

凡为data-sitekey我看到的是:

6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY

这是 41 位。

我要去哪里错了?


问题答案:

data- sitekey通过41个字符的字符串表示的效果很好。ERROR_WRONG_USER_KEY发生错误是因为我一开始从未准备好有效的API密钥。即使您的帐户中的余额
为零 ,您也可以按以下方式成功获得<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
    


    ERROR_ZERO_BALANCE



 类似资料:
  • 问题内容: 基本上,我想获取python解释器的句柄,以便可以传递脚本文件来执行(从外部应用程序执行)。 问题答案: 这适用于Linux和Windows: Python 3.x Python 2.x

  • 我需要在get请求中以JSON格式获取数据,数据应为以下格式: 但数据以以下形式返回,响应为字符串: 代码: 如何使用Rest Assured在get请求中获取JSON格式?

  • 问题内容: 给我一个Bearer令牌,以后可以使用;但是,这是一个shell命令。如何通过Google Cloud Python API以编程方式获取一个? 我看到了使用oauth2client的先前示例,但现在已弃用。如何使用google.auth和oauthlib做到这一点? 问题答案: 答案取决于您的环境以及您如何创建/获取凭据。 什么是Google Cloud凭据? Google Clou

  • 问题内容: 我正在用python,selenium和firefox运行此代码,但仍获得firefox的“ head”版本: 我还尝试了一些二进制的变体: 问题答案: 要不费吹灰之力地调用Firefox浏览器,可以通过以下类设置属性: 还有另一种方法可以完成无头模式。如果你需要禁用或启用Firefox中的无头模式,而无需修改代码,您可以设置环境变量,以 什么 ,如果你想Firefox的运行无头,或根

  • 我想以编程方式查看广告包的所有ProximityUID。一些文章说这在iOS上是不可能的,但Android是可能的。但我不敢相信,因为我发现神奇的应用程序“BLExplr”有这个功能。我需要在我的应用程序中实现该功能。有人知道怎么做吗?或者有好的例子吗?任何帮助都将不胜感激。 (更新日期2014/1/17) 我相信@davidgyoung的答案是正确的。估计信标的近似UID为“B9407F30-F