用Selenium和Python请求以编程方式识别ReCaptc

用Selenium和Python请求以编程方式识别ReCaptc

本文介绍了如何使用Selenium和Python请求以编程方式识别ReCaptcha V2的32位data-sitekey以获取有效的响应?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于验证码和Python请求的新内容. 验证码文档表示要复制data-sitekey参数的值.

Pretty much new with captcha and Python requests. The captcha documentation says to copy the value of data-sitekey parameter.

这是我的尝试,使用 Selenium 打开URL并使用Python requests获得响应.

Here was my attempt, using Selenium to open the url and using Python requests to get a response.

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

这是由于以下原因造成的:

which is due to:

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个字符的字符串,如下所示:

Get your API key from your account settings page. Each user is given a unique authentication token, we call it API key. It's a 32-characters string that looks like:

1abc234de56fab7c89012d34e56fa7b8

我所看到的data-sitekey是:

6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY

这是 41 位.

我要去哪里错了?

推荐答案

data-sitekey可以正常工作.发生错误ERROR_WRONG_USER_KEY的原因是,我一开始从来没有准备好有效的 API密钥.即使您的帐户中有 0 余额,您也可以成功获得<Response [200]>文本为ERROR_ZERO_BALANCE,如下所示:

data-sitekey represented through 41-characters string works just fine. The error ERROR_WRONG_USER_KEY occurred as I never had a valid API key ready in the first place. Even with Zero balance in your account, you can successfully obtain a <Response [200]> with text as ERROR_ZERO_BALANCE as follows:

  • 代码块:

  • Code Block:

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)

  • 控制台输出:

  • Console Output:

    6LdXeIYUAAAAAFmFKJ6Cl3zo4epRZ0LDdOrYsvRY
    <Response [200]>
    ERROR_ZERO_BALANCE
    

  • 这篇关于如何使用Selenium和Python请求以编程方式识别ReCaptcha V2的32位data-sitekey以获取有效的响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

    08-02 01:50