我正在练习2captcha文档
import requests
import time
from selenium import webdriver
API_KEY = 'mykey'
SITE_KEY = "6LdC3UgUAAAAAJIcyA3Ym4j_nCP-ainSgf1NoFku"
url="https://www.gumtree.com"
driver= webdriver.Chrome('chromedriver')
driver.get('https://www.gumtree.com/login')
s = requests.Session()
captcha_id = s.post(f"http://2captcha.com/in.php?key={API_KEY}&method=userrecaptcha&googlekey={SITE_KEY}&pageurl={url}").text.split('|')[1]
recaptcha_answer = s.get(
f"http://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}").text
while 'CAPCHA_NOT_READY' in recaptcha_answer:
time.sleep(5)
recaptcha_answer = s.get(
"http://2captcha.com/res.php?key={}&action=get&id={}".format(API_KEY, captcha_id)).text
recaptcha_answer = recaptcha_answer.split('|')[1]
elem = driver.find_element_by_name("g-recaptcha-response")
elem = driver.execute_script("arguments[0].style.display = 'block'; return arguments[0];", elem)
elem.send_keys(recaptcha_answer)
根据我发现的docs和页面来源
<script type="text/javascript">
var distilRecaptchaOnloadCallback = function() {
grecaptcha.render("dCF_input", {
sitekey: "6LdC3UgUAAAAAJIcyA3Ym4j_nCP-ainSgf1NoFku",
callback: distilCallbackGuard('distilCaptchaDoneCallback')
})
}
</script>
我尝试了以下操作来提交验证码答案,但没有任何反应(甚至没有错误)
driver.execute_script("distilCallbackGuard('distilCaptchaDoneCallback')")
#driver.execute_script("distilCallbackGuard(\'" + recaptcha_answer + "\')")
#driver.execute_script(f"distilCallbackGuard('{recaptcha_answer}')")
#driver.execute_script("""distilCallbackGuard(arguments[0])""", recaptcha_answer)
如何提交验证码解决方案?