python请求bot检测?

jas*_*son 3 python web-scraping python-requests

我一直在使用该requests库来挖掘这个网站.我没有在10分钟内提出太多要求.说25.突然间,网站给了我404错误.

我的问题是:我在某处读到,使用浏览器获取URL与获取类似于某个URL的URL不同requests.因为requests获取不会获得cookie和浏览器的其他内容.是否可以选择requests模拟浏览器,以便服务器不认为我是机器人?或者这不是问题吗?

Gru*_*hka 11

一般来说有帮助的事情:

  • 标头应与常见浏览器类似,包括:
  • 导航 :
    • 如果您发出多个请求,请在它们之间设置随机超时
    • 如果您打开页面中找到的链接,请相应地设置Referer标头
    • 或者更好的是,模拟鼠标活动来移动、单击并关注链接
  • 应启用图像
  • 应启用 JavaScript
    • 检查客户端 javascript 页面上下文中是否设置了“ navigator.plugins ”和“ navigator.language ”
  • 使用代理


ale*_*cxe 5

基本上,你可以做的至少一件事是发送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)
Run Code Online (Sandbox Code Playgroud)

此外requests,您可以使用selenium模拟真实用户- 它使用真正的浏览器 - 在这种情况下,显然没有简单的方法可以区分您的自动用户与其他用户.Selenium也可以使用"无头"浏览器.

另外,检查您正在抓取的网站是否提供了API.如果没有API或您没有使用它,请确保您知道该网站是否真的允许这样的自动网络爬行,研究Terms of use.你知道,在一段时间内请求过多后,他们可能会阻止你.

另见: