使用Python+Selenium解决top.gg无回调自动弹出HCaptcha问题
解决top.gg HCaptcha无提交按钮、回调函数找不到的问题
核心解决思路
1. 直接定位原生HCaptcha回调函数
- 打开浏览器控制台,先找到HCaptcha的容器元素(通常是带
h-captcha类的div),执行以下脚本获取回调函数名:document.querySelector('.h-captcha').getAttribute('data-callback') - 拿到函数名后,直接调用该函数并传入2captcha获取的token,比如:
window['回调函数名称']('你的2captcha_token') - 注意:如果HCaptcha在iframe内,需先用Selenium切换到对应iframe:
# 定位HCaptcha的iframe captcha_iframe = driver.find_element(By.CSS_SELECTOR, "iframe[src*='hcaptcha.com']") driver.switch_to.frame(captcha_iframe) # 执行上述回调函数脚本 driver.execute_script("window['回调函数名称']('你的2captcha_token')") # 切回主文档 driver.switch_to.default_content()
2. 修复anycaptcha脚本的错误
- 报错
onclick is not a function是因为onclick是事件属性,不是可调用方法,正确触发点击的方式:document.getElementById('anycaptchaSolveButton').click(); - 若需要传入token,先将token填入插件对应的输入框再触发点击:
// 先找到插件的token输入框(需自行定位实际id) document.getElementById('anycaptchaTokenInput').value = 'TOKEN_FROM_STEP_4'; document.getElementById('anycaptchaSolveButton').click();
3. 模拟HCaptcha原生验证流程
- 控制台测试
window.hcaptcha是否存在,若存在,尝试以下操作:// 设置验证token window.hcaptcha.setResponse('你的2captcha_token'); // 提交验证 window.hcaptcha.submit();
4. Selenium操作关键注意点
- 必须在HCaptcha弹窗未关闭的状态下执行验证脚本,避免触发页面重置
- 切换iframe后务必切回主文档,防止后续元素定位失败
- 直接用
driver.execute_script()注入脚本,无需依赖浏览器插件
内容的提问来源于stack exchange,提问作者PlopJukt jukt
相关产品推荐
相关产品推荐

