2014-09-17 2 views
0

비밀번호로 보호 된 웹 사이트에 액세스하는 것과 관련된 프로그램을 만들려고합니다. 비밀번호와 다른 매개 변수를 사용하여 요청 및 urllib2를 사용하려고 시도했습니다. POST에서 매개 변수의 순서를 변경하십시오. 필자는 서버가 매개 변수가 항상 동일한 순서로되어 있으므로 필자에게 401 인증을 요구한다는 사실에 의존하고 있다고 생각할 수 있습니다.Python Requests/urllib2 포스트 로그인 주문

이 내 현재 스크립트입니다

Submit=Submit&post_password=PASSWORD 

모든 정보는 크게 감사를 감상 할 수있다 : 파이썬 스크립트에서 보낸

post_password=PASSWORD&Submit=Submit 

POST : 브라우저에서 전송

import requests 

s = requests.session() 
login_data = dict(post_password='PASSWORD', Submit='Submit') 
s.post('http://www.my_website.com/my_sub/wp-login.php?action=postpass', data=login_data) 

POST

+0

내가 매개 변수 문제의 * 순서 매우 의심 * OrderedDict을 사용할 수 있지만 당신은 순서를 유지하기 위해'requests'을 알 수 있습니다; [Ordered http request parameters] (http://stackoverflow.com/q/13352185)를 참조하십시오 ('data'와'params' 인수에 똑같이 적용됩니다). –

+0

더 많은 후보자는 쿠키 (로그인 양식 * 첫 번째 *로 페이지 요청) 및/또는 헤더 (최상위 경쟁자 인 'Referer'및 'User-Agent')입니다. –

답변

0

당신은

import requests 
from collections import OrderedDict 
s = requests.session() 
login_data = OrderedDict([('post_password','PASSWORD'),('Submit','Submit')]) 
s.post('http://www.my_website.com/my_sub/wp-login.php?action=postpass', data=login_data) 
+0

답변 해 주셔서 감사합니다. 그러나 Martijn이 지적했듯이 테스트를 진행 했으므로 순서는 중요하지 않았습니다. 문제가 된 헤더와 쿠키가 부족했습니다. – natodemon