2016-08-25 4 views
1

私のスクリプトにapiを使用しています。自分の端末からスクリプトを実行すると、エンドポイントに3回の呼び出しを行うことに成功しました。しかし、私はHerokuのはbash上で同じスクリプトを実行すると、最初の呼び出しが成功、他の2つのリターンエラー403でここに私のコードは1 + GETリクエストがheroku pythonにエラー403を返す

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ヘッダなしでそれを試してみたが、同じ問題が解決しない

success 
    Error 403 
    Error 403 

です。

答えて

0

権限エラーです。私の推測では、ブラウザからこれを実行すると、最初のページには2番目と3番目の要求に必要なさまざまなCookieが設定されます。

すぐに解決できる問題は、リクエストのSession()オブジェクトを使用することです。IFこれは、クッキーを保存し、その後のリクエストでそれらを返信します。ちょっと普通のブラウザのようです。

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 
+0

ありがとうございましたが、これはどちらもうまくいきませんでした –

+0

これは価値がありました。次のステップは、2番目のリクエストの結果をディスクに保存し、ブラウザでエラーを調べることです。うまくいけば、ウェブページが何が間違っているか教えてくれるでしょう。 –

関連する問題