Python mechanize返回HTTP 429错误

Python mechanize返回HTTP 429错误,python,http,mechanize,http-status-code-429,Python,Http,Mechanize,Http Status Code 429,我正试图通过python通过mechanize模块完成一项自动化任务: 在web表单中输入关键字,然后提交表单 在响应中查找特定元素 这是一次性的。现在,我对一组关键字重复这个任务 我收到HTTP错误429(请求太多) 我尝试了以下方法来解决此问题: 添加自定义标题(我使用代理专门为该网站记录了这些标题),使其看起来是合法的浏览器请求 br=mechanize.Browser() br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6

我正试图通过python通过
mechanize
模块完成一项自动化任务:

  • 在web表单中输入关键字,然后提交表单
  • 在响应中查找特定元素
  • 这是一次性的。现在,我对一组关键字重复这个任务

    我收到HTTP错误429(请求太多)

    我尝试了以下方法来解决此问题:

  • 添加自定义标题(我使用代理专门为该网站记录了这些标题),使其看起来是合法的浏览器请求

    br=mechanize.Browser()
    br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')]
    br.addheaders = [('Connection', 'keep-alive')]
    br.addheaders = [('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8')]
    br.addheaders = [('Upgrade-Insecure-Requests','1')]
    br.addheaders = [('Accept-Encoding',' gzip, deflate, sdch')]
    br.addheaders = [('Accept-Language','en-US,en;q=0.8')]`
    
  • 因为每5个请求都会有阻塞响应,所以在5个请求之后我尝试睡眠20秒


  • 这两种方法都不起作用。

    您需要限制请求的速率,以符合服务器的配置允许。(可显示许可费率)

    mechanize
    为网络操作使用了大量补丁版本的
    urlib2
    Lib/site packages/mechanize/\u urlib2.py
    ),其
    浏览器
    类是其
    \u urlib2\u fork.OpenerDirector
    的后代

    因此,修补其逻辑的最简单方法似乎是向
    浏览器
    对象添加
    处理程序

    • 使用
      default\u open
      和适当的
      handler\u order
      将其放在每个人面前(优先级越低,优先级越高)
    • 这将暂停,直到请求符合条件,例如,使用中实现的算法。请注意,bucket可能应该是每个域或每个IP
    • 最后
      返回None
      将请求推送到以下处理程序

    由于这是一种常见的需求,您可能应该将您的实现发布为可安装的软件包。

    您需要限制请求的速率,以符合服务器的配置允许。(可显示许可费率)

    mechanize
    为网络操作使用了大量补丁版本的
    urlib2
    Lib/site packages/mechanize/\u urlib2.py
    ),其
    浏览器
    类是其
    \u urlib2\u fork.OpenerDirector
    的后代

    因此,修补其逻辑的最简单方法似乎是向
    浏览器
    对象添加
    处理程序

    • 使用
      default\u open
      和适当的
      handler\u order
      将其放在每个人面前(优先级越低,优先级越高)
    • 这将暂停,直到请求符合条件,例如,使用中实现的算法。请注意,bucket可能应该是每个域或每个IP
    • 最后
      返回None
      将请求推送到以下处理程序

    由于这是一个常见的需求,您可能应该将您的实现发布为一个可安装的包。

    刚刚意识到它需要tuple br.addheaders=[('user-agent'、'Mozilla/5.0(X11;U;Linux i686;en-US;rv:1.9.2.3)Gecko/20100423 Ubuntu/10.04(lucid)Firefox/3.6.3'),('accept','text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8')]相关:正在获取新错误。mechanize FormNotFoundError。删除标头时,我得到了正确的结果。但再次出现限制问题。刚刚意识到需要元组br.addheaders=[('user-agent','Mozilla/5.0(X11;U;Linux i686;en-US;rv:1.9.2.3)Gecko/20100423 Ubuntu/10.04(lucid)Firefox/3.6.3'),('accept','text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8'))相关:现在获取一个新错误。机械化FormNotFoundError。在删除标题时,我得到了正确的结果。但再次出现限制问题。