4

기계 페이지와 연결하려고하는데 http 401 오류가 발생합니다.파이썬에서 기본 인증을 사용하여 웹 페이지에 액세스

내 코드는 다음과 같습니다.

import base64, mechanize 

url = "http://www.dogus.edu.tr/dusor/FrmMain.aspx" 
user = "user" 
pwd = "pwd" 

br = mechanize.Browser() 
br.set_handle_robots(False) 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

br.add_password(url, user, pwd) 
#br.addheaders.append(('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (user, pwd)))) 
print br.open(url).read() 

모두 add_passwordaddheaders이 작동하지 않습니다. 내가 결코 영역을 지정하지 않았기 때문입니까? 그 웹 페이지가 사용하는 영역을 어떻게 얻을 수 있습니까? 이 자격 증명으로 Chrome을 사용하여 로그인 할 수 있으므로 사용중인 사용자 이름과 비밀번호가 정확합니다.

+0

HTTP 기본 인증이 필요한 페이지에 액세스하기 위해 코드를있는 그대로 실행할 수있었습니다. – Moshe

+0

그래, 그 코드는 그 페이지에서 작동하지 않습니다. 아마도 그것은 영역과 관련된 문제 일 것입니다. 그리고 그것이 뭔가 다른 것이 있다면 나는 무엇을 놓치고 있습니까? –

답변

2

샘플 페이지로 사용중인 사이트에는 NTLM 인증이 필요합니다. 반환 된 HEADER 필드를 보면이 사실을 알 수 있습니다.

HTTP/1.1 401 Unauthorized 
Content-Length: 1293 
Content-Type: text/html 
Server: Microsoft-IIS/7.0 
WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 
X-Powered-By: ASP.NET 
Date: Mon, 07 Apr 2014 21:24:09 GMT 

사용되는 인증 방법 WWW-Authenticate: NTLM 말한다 라인 : curl -I http://www.dogus.edu.tr/dusor/FrmMain.aspx 반환 예를 들어. 이 질문에 대한 대답은 Use python mechanize to log into pages with NTLM authentication가 도움이 될 것입니다.