从JavaScript提交请求以解决Python中的ReCaptcha



我正在尝试通过Selenium和2Captcha登录一个站点。

一切工作正常,现在除了验证码。当我尝试提交请求时,我得到一个错误。

#!/usr/bin/python3
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
import requests, time
user_name = ""
password = ""
api_key = ''
site_key = '6LcZlE0UAAAAAFQKM6e6WA2XynMyr6WFd5z1l1Nr'
page_url = 'https://www.ebay-kleinanzeigen.de/m-einloggen.html?targetUrl=/'
def Solver():
chrome_options = Options() 
chrome_options.add_argument("start-maximized")
chrome_options.add_argument("disable-blink-features=AutomationControlled")
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=chrome_options,service=Service(ChromeDriverManager().install()))
driver.get(page_url)
element = driver.find_element_by_id("login-email")
element.send_keys(user_name)
element = driver.find_element_by_id("login-password")
element.send_keys(password)
driver.find_element_by_id("gdpr-banner-accept").click()
u1 = f"https://2captcha.com/in.php?key={api_key}&method=userrecaptcha&googlekey={site_key}&pageurl={page_url}&json=1&invisible=1"
r1 = requests.get(u1)
print(r1.json())
rid = r1.json().get("request")
u2 = f"https://2captcha.com/res.php?key={api_key}&action=get&id={int(rid)}&json=1"
time.sleep(5)
while True:
r2 = requests.get(u2)
print(r2.json())
if r2.json().get("status") == 1:
form_tokon = r2.json().get("request")
break
time.sleep(5)
wirte_tokon_js = f'document.getElementById("g-recaptcha-response").innerHTML="{form_tokon}";'
submit_js = 'document.getElementById("recaptcha-demo-form").submit();'
print(wirte_tokon_js)
print('')
print(submit_js)
driver.execute_script(wirte_tokon_js)
time.sleep(3)
driver.execute_script(submit_js)
time.sleep(10)
if __name__ == '__main__':
Solver()

这是我得到的错误。

selenium.common.exceptions.JavascriptException: Message: javascript error: Cannot read properties of null (reading 'submit')

这将是我解决验证码的最后一种方法。我试着点击它,甚至使用验证码帧的确切位置来点击

这是不对的

submit_js = 'document.getElementById("recaptcha-demo-form").submit();'

在这段代码中使用this,这是正确的方法。

submit_js = 'document.getElementById("recaptcha-verify-button");'

最新更新