Loading Yescaptcha Human Assistant Plugin in Selenium to recognize and check the recognition status
人机助手下载地址:
很多用户不知道其他软件(比如selenium)如何配置人机助手进行识别,并且获取识别状态,其实原理很简单,切换到验证码的iframe页anchor
,获取元素recaptcha-anchor
的属性aria-checked
就可以了。
代码:
import time
import requests
from selenium import webdriver
options = webdriver.ChromeOptions()
# 加载验证码插件,这里是以zip格式的文件进行加载
options.add_extension('selenium/yescap_v2.0.beta.zip')
driver = webdriver.Chrome('selenium/chromedriver.exe', options=options)
driver.get("https://www.google.com/recaptcha/api2/demo")
# 切换到勾选框
iframe = driver.find_element_by_css_selector('iframe[src*="anchor"]')
driver.switch_to.frame(iframe)
# 获取勾选框的打勾状态
for i in range(30):
anchor = driver.find_element_by_id('recaptcha-anchor')
is_checked = anchor.get_attribute("aria-checked")
print('当前识别状态:', is_checked)
time.sleep(3)
输出
当前识别状态: false
当前识别状态: false
当前识别状态: false
当前识别状态: false
当前识别状态: true
当前识别状态: true
当前识别状态: true
下载
如果使用普通的selenium会被检测,可以使用 undetected_chromedriver
这个库避免被检测
import time
import requests
import undetected_chromedriver as uc
options = uc.ChromeOptions()
# 加载验证码插件,这里是以目录的形式加载,注意区别
options.add_argument('--load-extension=D:\test\yescap_v2.0.beta')
driver = uc.Chrome(options=options, use_subprocess=True, version_main=103)
driver.get("https://www.google.com/recaptcha/api2/demo")
# ……
进阶玩法
识别完成后,网页上会有识别完成的token,这个token就可以拿去用做协议提交。
具体操作:
切换到主空间,再切换到bframe框架页,获取ID为recaptcha-token
的value就是token了。