1+ GET请求将错误403返回给heroku python

时间:2016-08-25 19:06:59

标签: python heroku

我在我的脚本中使用了api。当我通过自己的终端运行脚本时,我成功地能够对端点进行3次调用。但是当我在heroku bash上运行相同的脚本时,只有第一个调用成功,其他两个返回Error 403.这是我的代码

values

在我的终端中,输出是

results = []

    for level in levels:
            headers={'User-Agent': 'Mozilla/5.0'}
            res = requests.get(url+level,headers=headers)
            if res.status_code==200:
                res = json.loads(str(res.content))
                print "success"
                #do something
            else:
                print "Error",str(res.status_code)
        return results

在heroku bash中输出

  success
  success
  success

我还尝试过没有User-Agent标题,但同样的问题仍然存在。

1 个答案:

答案 0 :(得分:0)

这是权限错误。我的猜测是,当你从浏览器运行时,第一页设置各种cookie,第二和第三个请求需要。

快速解决问题 IF 的问题是使用请求' Session()对象。这会存储cookie并将其发送回后续请求,有点像普通的浏览器。

results = []
mySession = requests.Session()

for level in levels:
    headers={'User-Agent': 'Mozilla/5.0'}
    res = mySession.get(url+level,headers=headers)
    if res.status_code==200:
        res = json.loads(str(res.content))
        print "success"
        #do something
    else:
        print "Error",str(res.status_code)

return results