如何使用Selenium和Python绕过Google CAPTCHA



如何使用Selenium和Python绕过Google CAPTCHA?

当我尝试刮东西时,谷歌会给我一个验证码。我可以用Selenium Python绕过Google CAPTCHA吗?

举个例子,它是谷歌reCAPTCHA。您可以通过以下链接查看此CAPTCHA:https://www.google.com/recaptcha/api2/demo

要开始使用Selenium的Python客户端,您应该避免解决/绕过Google CAPTCHA。


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


CAPTCHA

另一方面,CAPTCHA(缩写为……告诉计算机和人类分离的全自动公共图灵测试…)是一种在计算中用于确定用户是否为人类的挑战-响应测试。

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

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


通用解决方案

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

  • 网站决定脚本/程序的首要属性是通过监视器大小。因此,建议而不是使用常规Viewport
  • 如果您需要向一个网站发送多个请求,请继续更改每个请求的用户代理。在这里,您可以找到关于如何在Selenium中更改Google Chrome用户代理的详细讨论
  • 为了模拟类人行为,您可能需要放慢脚本执行速度,甚至超过WebDriverWait和预期的time.sleep(secs)条件。在这里,您可以找到关于如何在Python中休眠Selenium WebDriver毫秒的详细讨论

此用例

然而,在几个用例中,我们能够使用Selenium与reCAPTCHA交互,您可以在以下讨论中找到更多细节:

  • 如何使用Selenium和Java点击reCAPTCHA
  • 使用Selenium和VBA Excel的reCAPTCHA复选框的CSS选择器
  • 找到reCAPTCHA元素并点击它——Python+Selenium

参考

你可以在中找到一些相关的讨论

  • 如何通过Python使用GeckoDriver和Firefox使Selenium脚本无法检测
  • 是否存在无法检测的Selenium WebDriver版本

tl;dr

  • reCAPTCHA 3是如何知道我正在使用硒/铬接收器的

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

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

这些cookie的有效期很长,所以你不需要每天都收到新的cookie。

有关在Python和Selenium中保存和加载cookie的帮助,您应该查看以下答案:如何使用Python+Selenium WebDriver保存和加载Cookie

清除浏览历史记录、缓存数据、cookie和其他网站数据首先在硒打开的浏览器窗口中创建一个谷歌帐户。登录您的账户

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);

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

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

你不会发现任何谜题或任何东西。

在solve中绕过as,还是在never get中绕过as?

解决方法:

  • 注册2captcha、capmonster cloud、deathbycaptcha等,并按照他们的指示进行操作。他们会给你一个代币,让你和表格一起通过

永远不会得到它:

  • 确保您拥有良好的IP声誉(对Cloudflare来说最重要)
  • 确保你有一个好的浏览器指纹(对Distil来说最重要)-我推荐木偶师+隐形插件

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

它基本上读取音频,然后使用谷歌助手将其转换为文本并粘贴。

它只在音频captcha中可用,这是imahe captcha V2 的大多数情况

https://github.com/ohyicong/recaptcha_v2_solver

免责声明!

我不写剧本,我只是有了做这个的想法,但得到了这个兄弟项目,所以,我想帮助别人度过难关。

如果您有权访问config,请添加站点密钥:6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhISecretKey:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

请参阅:https://developers.google.com/recaptcha/docs/faq#id-喜欢用repatcha运行自动化测试-应该做什么

相关内容

  • 没有找到相关文章

最新更新