2013-08-29 3 views
1

하나의 웹 사이트를 자동화하는 스크립트를 작성하고 있습니다. 하지만이 웹 사이트를 열면 사용자 이름과 암호를 묻는 로그인 서버가있어서 웹 사이트를 열 때 그 인증을 통과해야합니다. 그 권한 세부 사항이 있습니다. authentication that is needed기계어로 HTTP 로그인

PYTHON

import urllib 
import re 
import mechanize 

br = mechanize.Browser() 
response = br.open("http://ab/cabs"); 
print response.geturl() 
print response.read() 

IN 기계화의 도움이의 wesite을 여는 방법을 너무

하지만이 오류를주고있다 httperror_seek_wrapper : HTTP 오류 401 : 필요한 권한

무엇을 내가해야 더하다?

답변

1
from base64 import b64encode 
import mechanize 

url = 'http://192.168.3.5/table.js' 
username = 'admin' 
password = 'password' 

# I have had to add a carriage return ('%s:%s\n'), but 
# you may not have to. 
b64login = b64encode('%s:%s' % (username, password)) 

br = mechanize.Browser() 

# # I needed to change to Mozilla for mine, but most do not 
# br.addheaders= [('User-agent', 'Mozilla/5.0')] 

br.addheaders.append( 
    ('Authorization', 'Basic %s' % b64login) 
) 

br.open(url) 
r = br.response() 
data = r.read() 

print data 

를 제공하지 않은 그리고 아마도 이것은 또한 일할 수있는 시도하지 않았다

import urllib 
import re 
import mechanize 

br = mechanize.Browser() 
response = br.open("http://USERNAME:[email protected]/cabs"); 
print response.geturl() 
print response.read(

가)

+0

안녕하세요 @ kyllopardium, 첫 번째 방법은 내 경우에 근무했습니다. 빠른 답장을 보내 주셔서 고마워요. 두 번째 암호에 대해서도 궁금하지만 암호에도 @가 있습니다. 그래서 그 경우 두 번째 솔루션을 사용하는 방법 ..? – RATHI

+0

이 방법이 효과가 있을지 모르겠지만 시도해 볼 수 있습니다. response = br.open ("http : // USERN \ @ME : PASSWORD @ ab/cabs"); 모든 특수 문자 앞에 백 슬래시 "\"를 넣어야합니다. 하지만 좀 더 일반적인 방법으로 첫 번째 방법을 고수하는 것이 좋습니다. (그리고 base64는 어떤 종류의 암호에도 아무런 문제가 없음을 확인합니다) – Mansueli

0

당신은 사용자 이름과 암호

br.add_password("http://ab/cabs", "username", "pswd") 
+0

는이 같은 오류를 제공 있어요 .. – RATHI

관련 문제