📅  最后修改于: 2023-12-03 14:59:55.772000             🧑  作者: Mango
chromedriver
无法进行音频 reCAPTCHA在使用 chromedriver
进行访问需要进行音频 reCAPTCHA 验证的网站时,会遇到无法进行音频验证的问题,导致程序无法正常运行。
例如,在使用 selenium
库访问 Google 搜索时,可能会遇到类似以下错误信息:
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find iframe with recaptcha challenge audio
reCAPTCHA 是 Google 开发的用于防止恶意机器人攻击的一种验证方式。其中,音频 reCAPTCHA 是一种人类可听的音频回答的验证方式,用于验证访问者是否为人类。
在使用 chromedriver
进行自动化访问时,很难模拟用户进行音频回答的操作。因此,无法用程序自动完成音频 reCAPTCHA 验证。
在遇到音频 reCAPTCHA 时,需要手动进行验证。可以通过以下步骤手动验证:
由于需要手动操作,因此该方案无法实现完全自动化。
还可以使用第三方验证码识别服务,如 2Captcha
、DeathByCaptcha
等,来实现自动化验证码识别。这些服务可以通过 API 接口实现与程序的集成。使用该方案需要费用支持。
以下是使用 2Captcha
识别音频 reCAPTCHA 的示例代码:
import requests
# 替换为你自己的 API KEY
API_KEY = 'YOUR_API_KEY'
# 获取 reCAPTCHA 网页的 URL
url = driver.current_url
# 将 URL 传递给 2Captcha API,并等待识别结果
response = requests.post('http://2captcha.com/in.php', data={
'key': API_KEY,
'method': 'userrecaptcha',
'googlekey': 'reCAPTCHA_site_key',
'pageurl': url,
'json': 1,
})
result_id = response.json()['request']
while True:
# 间隔 5 秒进行循环,直到识别结果获取为止
response = requests.get(f'http://2captcha.com/res.php?key={API_KEY}&action=get&id={result_id}&json=1')
if response.json()['status'] == 1:
captcha_text = response.json()['request']
break
time.sleep(5)
# 输入验证码并点击提交按钮
driver.find_element_by_css_selector('#audio-response').send_keys(captcha_text)
driver.find_element_by_css_selector('#recaptcha-verify-button').click()
此处,reCAPTCHA_site_key
是要访问的网站的 reCAPTCHA site key,可以在源代码中找到。
音频 reCAPTCHA 验证无法用 chromedriver
自动化完成,但可以通过手动验证和第三方验证码识别服务实现自动化。选择合适的方案根据实际需求和条件权衡。