如何使用Selenium和Python绕过Google CAPTCHA?
当我尝试进行网络爬虫时,Google会弹出CAPTCHA。我能否使用Selenium Python绕过Google CAPTCHA?
以Google的reCAPTCHA为例。您可以通过此链接查看此CAPTCHA:https://www.google.com/recaptcha/api2/demo
如何使用Selenium和Python绕过Google CAPTCHA?
当我尝试进行网络爬虫时,Google会弹出CAPTCHA。我能否使用Selenium Python绕过Google CAPTCHA?
以Google的reCAPTCHA为例。您可以通过此链接查看此CAPTCHA:https://www.google.com/recaptcha/api2/demo
要开始使用 Selenium 的 Python 客户端,您应该避免解决/绕过 Google CAPTCHA。
Selenium 自动化浏览器。现在,您想要利用这种能力实现的目标完全取决于个人,但主要是为了通过浏览器客户端自动化测试 Web 应用程序,当然它并不仅限于此。
另一方面,CAPTCHA (缩写为“...Completely Automated Public Turing test to tell Computers and Humans Apart...”) 是一种用于计算机中的挑战 - 响应测试,以确定用户是否为人类。
因此,Selenium 和 CAPTCHA 有两个完全不同的目的,并且理想情况下不应该用于实现任何相互关联的任务。
话虽如此,reCAPTCHA 可以很容易地检测网络流量并将您的程序识别为 Selenium 驱动的机器人。
然而,有一些通用方法可以避免在 Web 抓取时被检测到:
time.sleep(secs)
。您可以在这里找到关于“如何在Python中以毫秒为单位使Selenium WebDriver睡眠”的详细讨论。然而,在一些使用情况下,我们能够使用 Selenium 与 reCAPTCHA 进行交互,您可以在以下讨论中找到更多细节:
您可以在以下讨论中找到几个相关的讨论:
清除浏览历史记录、缓存数据、Cookies 和其他站点数据 首先在使用 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);
String framename=wd.findElement(By.tagName("iframe")).getAttribute("name");
wd.switchTo().frame(framename);
wd.findElement(By.xpath("//span[@id='recaptcha-anchor']")).click();
您不会找到任何谜题或其他内容。
好的,所以有一个简单的Python脚本可以为您解决验证码问题。
它基本上会读取音频,然后使用Google Assistant将其转换为文本并粘贴。
它仅适用于音频验证码,这种验证码通常在图像验证码V2中给出。
https://github.com/ohyicong/recaptcha_v2_solver
免责声明!
我并没有编写这个脚本,只是得到了这个类似的项目的灵感,所以想通过这种方式帮助其他人。
简单的解决方案是暂停程序10秒或更长时间,然后当自动化浏览器打开时,自己解决reCAPTCHA,然后程序在10秒后开始执行其余部分,如点击提交按钮或其他操作。