我在我的脚本中使用了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标题,但同样的问题仍然存在。
答案 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