如何使用 Selenium 和 Python 绕过 Google 验证码?

How can I bypass the Google CAPTCHA with Selenium and Python?

如何使用 Selenium 和 Python 绕过 Google 验证码?

当我尝试抓取某些内容时,Google 给我一个验证码。我可以用 Selenium Python 绕过 Google 验证码吗?

例如 Google reCAPTCHA. You can see this CAPTCHA via this link: https://www.google.com/recaptcha/api2/demo

开始使用 's Python clients, you should avoid solving/bypass Google CAPTCHA


Selenium 自动化浏览器。现在,你想用这种能力实现什么完全取决于个人,但主要是为了通过浏览器客户端自动化 Web 应用程序以进行测试,当然它当然不限于此。


验证码

另一方面,CAPTCHA(缩写为 ...完全自动化 Public 区分计算机和人类的图灵测试... ) 是一种用于计算以确定用户是否为人类的挑战-响应测试。

因此,SeleniumCAPTCHA 有两个完全不同的用途,理想情况下不应用于完成任何相互关联的任务。

话虽如此,reCAPTCHA 可以轻松检测网络流量并将您的程序识别为 Selenium 驱动的 bot


通用解决方案

但是,有一些通用方法可以避免在网络抓取时被检测到:

  • 网站可以确定您的 script/program 的第一个也是最重要的属性是通过您的 显示器大小 。所以建议不要使用常规的Viewport.
  • 如果您需要向网站发送多个请求,请继续更改每个请求的 User Agent。在这里你可以找到关于
  • 的详细讨论
  • 为了模拟类人行为,您可能需要减慢脚本执行速度甚至超过WebDriverWait and expected_conditions inducing time.sleep(secs). Here you can find a detailed discussion on

这个用例

但是,在一些用例中,我们能够使用 SeleniumreCAPTCHA 交互,您可以在以下讨论中找到更多详细信息:


参考资料

您可以在以下位置找到一些相关讨论:


tl;博士

  • How does reCAPTCHA 3 know I'm using Selenium/chromedriver?

为了在抓取 Google 时绕过验证码,您必须手动解决验证码并导出 Google 给您的 cookie。现在,每次打开 Selenium WebDriver 时,请确保添加导出的 cookie。 GOOGLE_ABUSE_EXEMPTION cookie 是您要找的那个,但为了安全起见,我会保存所有 cookie。

如果你想在你的抓取中增加一层稳定性,你应该导出几个 cookie 并在每次 ping Google 时随机让你的脚本 select 其中一个 Google。

这些 cookie 的有效期很长,因此您不需要每天都获取新的 cookie。

有关在 Python 和 Selenium 中保存和加载 cookie 的帮助,您应该查看此答案:How to save and load cookies using Python + Selenium WebDriver

清除浏览历史、缓存数据、cookie 和其他网站数据 首先在浏览器中创建一个 Google 帐户 window 由 selenium 打开。 登录您的帐户

wd.get("https://accounts.google.com/signin/v2/identifier?hl=en&passive=true&continue=https%3A%2F%2Fwww.google.com%2F%3Fgws_rd%3Dssl&ec=GAZAmgQ&flowName=GlifWebSignIn&flowEntry=ServiceLogin");
    Thread.sleep(2000);
    wd.findElement(By.name("identifier")).sendKeys("Email"+Keys.ENTER);
    Thread.sleep(3000);
    wd.findElement(By.name("password")).sendKeys("Password"+Keys.ENTER);
    Thread.sleep(5000);

然后使用此代码打开任何使用 recaptcha 勾选复选标记的网站

String framename=wd.findElement(By.tagName("iframe")).getAttribute("name");
            wd.switchTo().frame(framename);
    wd.findElement(By.xpath("//span[@id='recaptcha-anchor']")).click();

您不会找到任何拼图或任何东西。

简单的解决方案是暂停程序 10 秒或更长时间,然后在自动浏览器打开时自行解决 reCAPTCHA,然后程序在 10 秒后启动并执行程序的其余部分,例如单击提交按钮或其他东西

绕过解决它或绕过根本没有得到它?

求解:

  • 注册 2captcha、capmonster cloud、deathbycaptcha 等,并按照他们的说明进行操作。他们会给你一个令牌,你用表单传递。

永远得不到它:

  • 确保您拥有良好的 IP 声誉(对于 Cloudflare 最重要)。
  • 确保你有一个好的浏览器指纹(对 Distil 来说最重要)——我推荐 puppeteer + stealth 插件。

好的,所以有一个简单的 python 脚本可以为您解决验证码问题。

基本上是读音频然后用google助手转成文字粘贴

仅在音频验证码中有效,imahe 验证码 V2 给出的情况最多

https://www.google.com/url?sa=t&source=web&rct=j&url=https://github.com/ohyicong/recaptcha_v2_solver&ved=2ahUKEwjG_Z2g-8f1AhUCdBQKHdIiANwQFnoECAUQAQ&usg=AOvVaw3dkyBTmAmjHqLRZoTzxNG8

免责声明!

我不写脚本,我只是想做这个但是得到了这个兄弟项目,想通过这个来帮助别人。