2016-08-25 1 views
1

내 스크립트에 api를 사용하고 있습니다. 내 터미널을 통해 스크립트를 실행하면 성공적으로 끝점에 3 번 통화 할 수 있습니다. 내가 Heroku가 강타에 동일한 스크립트를 실행할 때, 첫 번째 호출은 성공은 다른 두 반환 오류 403 다음은 출력이 Heroku가 강타에heroku python에 오류 403을 반환하는 GET 요청

success 
    success 
    success 

내 터미널에서 내 코드

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 

입니다입니다 출력은 나는 또한 사용자 에이전트 헤더없이 그것을 시도했지만 같은 문제가 계속

success 
    Error 403 
    Error 403 

입니다.

답변

0

권한 오류입니다. 내 생각 엔 브라우저에서 이것을 실행할 때 첫 번째 페이지는 두 번째 및 세 번째 요청에 필요한 다양한 쿠키를 설정합니다.

빠른 해결 방법 인 IF은 문제의 Session() 요청을 사용하는 것입니다. 이것은 쿠키를 저장하고 후속 요청에서 다시 전송합니다. 보통 브라우저와 비슷합니다.

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

촬영 가치가있었습니다. 다음 단계는 두 번째 요청의 결과를 디스크에 저장하고 브라우저에서 오류를 확인하는 것입니다. 다행스럽게도 웹 페이지에서 잘못된 점을 알려줍니다. –