2013-08-06 3 views
0

requests 라이브러리를 사용하여 사이트에 로그인하려고하는데 일반적으로 그렇게 작동하지 않습니다. 브라우저를 통해 액세스 할 때사이트가 파이썬 요청으로 액세스 할 때 csrftoken 쿠키를 설정하지 않습니다.

내가 그와 마찬가지로 사이트가 쿠키를 보내 기대 :

__cfduid: d2f8e300a0b867e8a6147462f3977f8b11375815648197 for .example2.net/ 

이 하나가 I로 일하고 그러나

csrftoken: Bl5DOVcUge5VeRv771nAIUNbxmm9Z9l2 

, 내가받는 모든는 다음입니다 기대 :

agent1 = requests.session() 
agent1.get('https://example1.com/') 
print agent1.cookies 

결과 :

<<class 'requests.cookies.RequestsCookieJar'>[<Cookie example1session=6ce1fa7fc23669078c9cf86001b34c4f for .example1.com/>, <Cookie countrycode=FR for example1.com/>, <Cookie csrftoken=ETcsKwBgUkPxPjgN6hJaOXv5byIL15mE for example1.com/>, <Cookie lat=46.0 for example1.com/>, <Cookie lon=2.0 for example1.com/>]> 

이 사람은하지 않습니다 :

agent2 = requests.session() 
agent2.get('https://www.example2.net') 
print agent2.cookies 

그것은 반환

<<class 'requests.cookies.RequestsCookieJar'>[<Cookie __cfduid=d14644e3e542bf4165a0714c0e77d04eb1375816707171 for .example2 

__cfduid 쿠키는 사이트가 뒤에 실행 CloudFlare DDOS 보호 서비스를 제공하는 것입니다. 이 문제와 관련이있을 수 있습니까?

답변

1

비슷한 문제가 발견되었습니다. 내 경우에는 URL에 POST를하고 서버가 나를 리디렉션하도록 로그인하려고했습니다. 이 리디렉션 중 쿠키가 설정되었지만 (브라우저에서 보았 듯이) 파이썬 프로그램에 쿠키가 설정되지 않았습니다.

일부 헤더를 브라우저와 비슷한 것으로 정의하고 리디렉션을 비활성화하면 문제가 해결된다는 것을 알았습니다.

headers = { 
     'Host': 'www.example.net', 
     'Origin': 'http://www.example.net', 
     'Referer': 'http://www.example.net/', 
     'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'} 

session = requests.Session() 
session.headers = headers 

session.post('http://www.example.net/login/', data=values, allow_redirects=False) 
+0

나는이 답변을 테스트하고 받아 들일 수 있기를 바랍니다.하지만이 사이트는 오래전부터 로그인 방법을 변경했습니다. 나는이 대답이 누군가를 도울 수 있기 때문에 질문을 떠날 것이다. –

관련 문제