Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Selenium和Python绕过Google验证码?_Python_Selenium_Selenium Chromedriver_Recaptcha_Captcha - Fatal编程技术网

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

如何使用Selenium和Python绕过Google验证码?,python,selenium,selenium-chromedriver,recaptcha,captcha,Python,Selenium,Selenium Chromedriver,Recaptcha,Captcha,如何使用Selenium和Python绕过Google验证码 当我试图刮东西时,谷歌会给我一个验证码。我可以用Selenium Python绕过Google验证码吗 例如,谷歌。您可以通过以下链接查看此验证码:要开始使用的Python客户端,您应该避免解决/绕过Google 硒 自动化浏览器。现在,您想用这种能力实现什么完全取决于个人,但主要是为了通过浏览器客户端实现web应用程序的自动化,以便进行测试,当然,这并不限于此 验证码 另一方面,(缩写为…完全自动化的公共图灵测试,用于区分计算机

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

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

例如,谷歌。您可以通过以下链接查看此验证码:

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


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


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

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

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


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

  • 网站可以通过监视器大小来确定脚本/程序的首要属性。因此,建议不要使用常规方法
  • 如果您需要向一个网站发送多个请求,请继续更改每个请求的用户代理。在这里,您可以找到有关的详细讨论
  • 要模拟类人行为,您可能需要将脚本执行速度减慢,甚至超过并导致
    time.sleep(秒)
    。在这里,您可以找到有关的详细讨论

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


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


tl;博士

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

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

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


      有关在Python和Selenium中保存和加载cookie的帮助,请查看以下答案:

      清除浏览历史记录、缓存数据、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();
      

      你找不到任何谜题或任何东西。

      嗯。。那么验证码有什么意义呢?我认为如果你想绕过验证码,唯一的办法就是使用其他人的服务。你给他们你的验证码,他们会给你回短信。听起来更容易。我不打算尝试。可能要找到checkbox元素的坐标,发送一个单击。但是,您首先是如何获得CAPTCHA的?你的一些行为一定让谷歌觉得你是机器人。@HjSin谢谢你的关注,你能给我一个答案让我更好地理解吗Hello,我对使用cookies还不熟悉;找到谷歌滥用豁免cookie后,您如何使用该特定cookie?阅读您提供的链接,但这似乎保存了上一个会话中的cookie,而不是我们已经拥有的特定cookie值Hi,Yu Na!该链接显示如何保存所有cookie,然后加载它们。我在我的代码中尝试了它,它就像一个符咒。如果您遇到了特定的障碍,请使用您的代码示例打开一个新的SO问题,并将链接发送给我,以便我查看是否可以提供帮助:)