我一直在使用 requests
库来挖掘这个网站。我没有在 10 分钟内向它提出太多请求。说 25。突然,网站给我一个 404 错误。
我的问题是:我在某处读到,使用浏览器获取 URL 不同于使用 requests
获取 URL。因为 requests
fetch 不会获取浏览器会获取的 cookie 和其他内容。 requests
中是否有一个选项来模拟浏览器,这样服务器就不会认为我是机器人?或者这不是问题?
原文由 jason 发布,翻译遵循 CC BY-SA 4.0 许可协议
基本上,您至少可以做一件事是发送
User-Agent
标头:除了
requests
,您可以使用 selenium 模拟真实用户 - 它使用真实的浏览器 - 在这种情况下,显然没有简单的方法可以将您的自动用户与其他用户区分开来。 Selenium 还可以使用“无头”浏览器。此外,检查您正在抓取的网站是否提供 API。如果没有 API 或者您没有使用它,请确保您知道该站点是否真的允许像这样的自动网络抓取,研究
Terms of use
。您知道,他们在一段时间内请求太多后阻止您可能是有原因的。另见:
edit1:selenium 使用 webdriver 而不是真正的浏览器;即,它在标头中传递了
webdriver = TRUE
,使其比requests
更容易检测。