javascript - 使用 selenium 和 python 提交 reCAPTCHA v2 - 没有表单提交按钮
问题描述
所以我最近注册了 anti-captcha 并一直在使用https://github.com/ad-m/python-anticaptcha/blob/master/examples/recaptcha_selenium.py脚本进行测试。
我无法通过没有提交按钮(隐藏或可见)的 reCAPTCHA,也没有明确的提交验证方式。我用过anti-captcha firefox插件,所以知道是可以通过的。但是我被困在自己手动执行此操作的地步。
我认为这将是一个有用的答案,但它并没有深入。我能够获取 job.get_solution_response() 令牌并将其输入到 requiredtextfield
中,但我无法提交“表单”。
有人在这方面取得成功吗?我也希望在浏览器的无头版本中执行此操作。基于无头与非无头的解决方案会有所不同吗?
顺便说一句,realtor(dot)com 是我遇到问题的网站。如果我不大声张贴这个网站,请让我知道,以便我可以删除它。
解决方案
我回到网站的源代码,发现他们正在使用一个函数作为回调进行验证......
我看到他们正在使用一个名为solvedCaptcha
并注入变量名的函数payload
。所以这是我解决它的方法:
注意:确保驱动程序当前位于 reCAPTCHA 页面上。
driver.execute_async_script("var payload = '<enter the job.get_solution_response() here>'; solvedCaptcha(payload);")
然后,此异步脚本调用页面的验证并重新加载被阻止的窗口。
注意:此验证码没有提交按钮,也没有放在表单中。因此.submit()
,在驱动程序中的某个项目上使用是行不通的。
推荐阅读
- azure - 将服务主体帐户与 Connect-MSolservice 一起使用
- angular - ReferenceError: res 没有定义
- webview - 无法在 WebView 上运行 WebGL 内容
- r - R data.table 如果然后 sumif 使用连接查找
- mysql - 如何设计考虑更新操作的一对多关系表?
- c# - 插入记录后网格视图显示不正确的值
- sql - 如何从 textarea 使用 PHP 向多列插入值?
- python - 获取字典的缺失日期
- oracle - Oracle SYS_CONNECT_BY_PATH 无法正常工作(始终为空)
- c# - 将项目添加到通用列表时出现问题