是否可以手动停止Selenium Python中的代码以绕过验证码,然后恢复它

问题描述 投票:0回答:1

我使用 Selenium 和 Python 来与网络交互。是否可以以某种方式启动浏览器,然后暂停程序一段时间,比如 2 分钟,然后让其余代码运行。主要原因是在抓取数据时解决验证码。

论坛上有一些建议,例如

  • 每次都创建假用户代理
  • 添加等待
  • 更改视口

这些都不起作用。我做的另一件事是首先在谷歌(我的例子是亚马逊)上搜索该网站,获取第一个链接,然后单击它。然而,即使在 Selenium 中执行此操作也需要验证码,但当我手动执行此操作时不会显示任何验证码。

最后,使用 cookie 可能看起来会起作用,但如果我已经获得了验证码怎么办?由于验证码,我无法访问实际网站,也无法获取 cookie。当我手动使用浏览器时,我没有收到任何验证码。另外,我认为谷歌将来会想出更智能的方法来检测机器人。

如果可能的话,暂停代码一段时间以进行人机交互,然后恢复似乎是唯一的最佳选择。

selenium-webdriver web-scraping bots recaptcha captcha
1个回答
0
投票

不幸的是,没有直接的方法来暂停 Selenium 脚本的执行并手动与其交互。 Selenium 旨在自动化浏览器交互,并且不支持用户在脚本中间进行干预。

但是,您可以尝试使用一些解决方法来处理验证码:

  1. 使用 ReCaptcha API: Google 为 ReCaptcha v2 和 v3 提供了 API。您可以使用这些 API 来确定页面上是否存在验证码并决定是否继续。对于 ReCaptcha v3,您可以使用 is_ human 参数来检查用户是否是人类。如果没有,您可以暂停脚本一段时间,然后继续。 复制复制 从 google.recaptcha 导入 ReCaptcha

recaptcha = ReCaptcha() 响应 = recaptcha.submit('你的密钥', '你的 gmail')

  1. 使用代理服务: 有多种代理服务可以帮助您绕过验证码。这些服务通过模拟人类行为并代表您解决验证码来工作。一些流行的服务有 2Captcha、DeathByCaptcha 等。您可以将这些服务集成到您的脚本中,以便在出现验证码时暂停执行,并在验证码解决后恢复执行。

  2. 机器学习方法:您还可以尝试训练机器学习模型来解决验证码。这种方法可能并不完美,但在大多数情况下可以帮助您避免验证码。

请记住,在抓取数据时尊重网站的条款和条件至关重要。如果网站使用验证码来防止自动抓取,最好遵守这些限制。

© www.soinside.com 2019 - 2024. All rights reserved.