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

2024-06-01 00:01:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

举个例子,它是GooglereCAPTCHA。您可以通过以下链接查看此验证码:https://www.google.com/recaptcha/api2/demo


Tags: httpscom链接demowwwseleniumgooglerecaptcha
3条回答

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

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

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

要开始使用SeleniumPython客户端,应该避免解决/绕过GoogleCAPTCHA


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


验证码

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

因此,验证码有两个完全不同的用途,理想情况下不应用于完成任何相关任务

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


通解

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


这个用例

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


参考资料

您可以在以下内容中找到一些相关讨论:


tl;博士

为了在抓取Google时绕过验证码,您必须手动解决验证码并导出Google提供给您的cookies。现在,每次打开Selenium WebDriver时,请确保添加导出的cookie。GOOGLE_滥用_豁免cookie是您正在寻找的,但为了安全起见,我会保存所有cookie

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

这些饼干的有效期很长,所以你不需要每天都买新的饼干

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

相关问题 更多 >