Как определить 32-битный ключ сайта для данных ReCaptcha V2, чтобы получить корректный ответ программно с использованием запросов Selenium и Python?
Довольно много нового с запросами капчи и 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 бит.
Где я ошибаюсь?
2 ответа
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 <Response [200]> ERROR_ZERO_BALANCE
Была такая же ошибка. я использовалheaders=header
вместоdata=header
.