我知道网络抓取,我从不同的网站获取数据,我使用的是 python 语言和 selenium webdriver chrome。但是我称一个网站是打开的首页,然后我单击或转到任何其他页面,然后网站限制我并且网站知道我正在使用自动 chrome。
问问题
6861 次
2 回答
2
这可能是因为该网站使用了 reCAPTCHA v3,它“允许您在没有任何用户交互的情况下验证交互是否合法”。这意味着他们可以在不要求您检查著名的“我不是机器人”框的情况下识别您是否不是人类。该框用于以前版本的 reCAPTCHA v2。
在此处阅读有关 reCAPTCHA 的更多信息:https ://developers.google.com/recaptcha/docs/versions
我认为用 Selenium 解决这个问题是不可能的。而且,正如已经提到的,网络抓取通常是非法的。
于 2019-03-13T10:00:30.387 回答
0
如今,网站可以很容易地将您的程序检测为BOT 。目前, Google在创建新站点时有4(四个) reCAPTCHA可供选择和实施。
- 验证码 v3
- reCAPTCHA v2(“我不是机器人”复选框)
- reCAPTCHA v2(隐形 reCAPTCHA 徽章)
- 验证码 v2 (Android)
解决方案
但是,有一些通用方法可以避免在网络抓取时被检测到:
- 网站可以确定您的脚本/程序的首要属性是通过您的显示器大小。所以建议不要使用常规的Viewport。
- 如果您需要向网站发送多个请求,请继续在每个请求上更改用户代理。在这里您可以找到关于如何在 Selenium 中更改 Google Chrome 用户代理的详细讨论?
- 要模拟类似人类的行为,您可能需要减慢脚本执行速度,甚至超出WebDriverWait和expected_conditions inducing
time.sleep(secs)
。在这里你可以找到关于如何在 python 中休眠 webdriver 毫秒的详细讨论
奥特罗
看:
于 2019-03-13T15:18:04.910 回答