2010-07-07 2 views
0

웹 사이트를 인증 한 다음 해당 사이트의 일부 비공개 페이지에 액세스 할 수 있기를 원합니다. 몇 가지 예제와 튜토리얼을 살펴 보았지만 제대로 작동하지는 않습니다.Python 인증

예를 들어 인증 후 사용 가능한 https://www.billmonk.com/home에 액세스하고 싶습니다. 사용중인 코드는 다음과 같습니다.

url = 'https://www.billmonk.com/home' 
values = {'usercontact' : '[email protected]', 
      'password' : 'somepass'} 

data = urllib.urlencode(values) 
req = urllib2.Request(url, data) 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
urllib2.install_opener(opener) 

response = opener.open(req) 
the_page = response.read() 

이 코드는 작동하지 않는 것 같습니다. 나는 항상 "이 페이지에 액세스하려면 로그인해야합니다"페이지가 표시됩니다.

나는 분명한 뭔가를 놓치고 있습니까?

감사합니다.

+2

쿠키는 제외하고 (파이썬에서 혼란스럽지는 않습니다), 일부 사이트는'User-agent' 필드가 마음에 들지 않아서 Python HTTP 요청을 거부하는 것으로 알려져 있습니다. – msw

+2

@msw : Python 문서에서 "일부 HTTP 서버는 일반 브라우저에서 오는 요청 만 스크립트와 대조적으로 허용합니다". 흥미 롭 군. 그래도 해결 방법이있는 것처럼 보입니다. "헤더는 사전이어야하며 각 키와 값을 인수로 사용하여 add_header()가 호출 된 것처럼 처리됩니다. 이는 브라우저에서 자체를 식별하기 위해 사용하는 User-Agent 헤더를"스푸핑 (spoof) . http://docs.python.org/library/urllib2.html#urllib2.Request 또는 http://docs.python.org/py3k/library/urllib.request.html#urllib.request.Request – JAB

답변

1

BillMonk 페이지의 소스를 보면 로그인 액션이 POST에서 /sign_in (코드 에서처럼 /home이 아님) 인 것 같습니다.

+0

안녕하세요. 일했다! 제 경우에는/sign_in에 먼저 가고 나서/home으로 가서 제가 관심있는 페이지를 얻을 필요가있었습니다. 감사합니다. – Rodrigo