2010-08-20 5 views
1

파이어 폭스의 urllib2가 비밀번호로 보호되는 디렉토리를 열어 읽을 수있는 능력에 대해 읽었습니다.하지만 문서에서 예제를보고 StackOverflow에서 예제를 본 후에도 스크립트를 얻을 수 없습니다 일하다.Python auth_handler가 저를 위해 작동하지 않습니다

import urllib2 
# Create an OpenerDirector with support for Basic HTTP Authentication... 
auth_handler = urllib2.HTTPBasicAuthHandler() 
auth_handler.add_password(realm=None, 
        uri='https://webfiles.duke.edu/', 
        user='someUserName', 
        passwd='thisIsntMyRealPassword') 
opener = urllib2.build_opener(auth_handler) 
# ...and install it globally so it can be used with urlopen. 
urllib2.install_opener(opener) 
socks = urllib2.urlopen('https://webfiles.duke.edu/?path=/afs/acpub/users/a') 
print socks.read() 
socks.close() 

내용을 인쇄하면 열려는 URL이 사용자에게 리디렉션되는 로그인 화면의 내용이 인쇄됩니다. 누구나 이것이 왜 있는지 압니까?

답변

3

auth_handler은 기본 HTTP 인증에만 사용됩니다. 여기에 HTML 양식이 포함되어 있으므로 사용자 이름/암호를 POST 데이터로 제출해야합니다.

로그인을 간소화하는 mechanize 모듈을 사용하는 것이 좋습니다.

빠른 예 :

import mechanize 

browser = mechanize.Browser() 

browser.open('https://webfiles.duke.edu/?path=/afs/acpub/users/a') 

browser.select_form(nr=0) 

browser.form['user'] = 'username' 
browser.form['pass'] = 'password' 
req = browser.submit() 

print req.read() 
관련 문제