我一直在使用requests库来挖掘这个网站。我在10分钟内没有向它发出太多请求。比方说25。突然,网站给了我一个404错误。
我的问题是:我在某处读到,使用浏览器获取URL与使用requests之类的东西获取URL是不同的。因为requests fetch不会获得cookie和浏览器会得到的其他东西。requests中有没有一个选项可以模拟浏览器,这样服务器就不会认为我是机器人了?或者这不是一个问题?
发布于 2014-04-09 23:17:29
基本上,你至少可以做一件事就是发送User-Agent头:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0'}
response = requests.get(url, headers=headers)除了requests之外,您还可以使用selenium模拟真实用户-它使用真实的浏览器-在这种情况下,显然没有简单的方法来区分自动用户和其他用户。Selenium还可以使用“无头”浏览器。
另外,检查你正在抓取的网站是否提供了API。如果没有应用程序接口或者你没有使用它,确保你知道这个站点是否允许像这样的自动网络爬行,研究一下Terms of use。你知道,在一段时间内有太多的请求后,他们可能会阻止你。
另请参阅:
edit1: selenium使用webdriver而不是真正的浏览器;也就是说,它在头中传递一个webdriver = TRUE,这使得它比requests更容易检测。
发布于 2019-01-25 16:28:28
通常可以有所帮助的事情:
应用程序报头应该类似于常见的浏览器,包括:
中设置了"navigator.plugins“和"navigator.language”
发布于 2019-08-07 14:27:55
第一个答案是,使用selenium模块是可以检测到的,但是selenium是一个webdriver,而不是一个普通的浏览器,它可以被检测到,但是总有一种方法可以欺骗任何东西
https://stackoverflow.com/questions/22966787
复制相似问题