Форум сайта python.su
Добрый день товарищи.
Решил попробовать автоматизировать подключение/отключение интернета (использую ви-фи роутер с 3г модемом (тплинк 3220))
>>> import urllib2 >>> auth=urllib2.HTTPBasicAuthHandler() >>> auth.add_password('TP-LINK Wireless Lite N 3G Router MR3220','http://192.168.1.1','alexzander77','****') >>> resp = urllib2.build_opener(auth).open('http://192.168.1.1') Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> resp = urllib2.build_opener(auth).open('http://192.168.1.1') File "/usr/lib/python2.7/urllib2.py", line 391, in open response = self._open(req, data) File "/usr/lib/python2.7/urllib2.py", line 409, in _open '_open', req) File "/usr/lib/python2.7/urllib2.py", line 369, in _call_chain result = func(*args) File "/usr/lib/python2.7/urllib2.py", line 1178, in http_open return self.do_open(httplib.HTTPConnection, req) File "/usr/lib/python2.7/urllib2.py", line 1153, in do_open raise URLError(err) URLError: <urlopen error [Errno 104] Connection reset by peer> >>>
Oops! Google Chrome could not connect to 192.168.1.1помогает только перезагрузка роутера. Проблема ,скорей всего, в вебсервере тплинка, но нагуглить что-то не получилось, потому решил спросить. Вдруг кто делал подобное (или встречал на просторах необъятных интернетов).
Firefox can't establish a connection to the server at 192.168.1.1.
Офлайн
А если без HTTPBasicAuthHandler попробовать? Ответ будет со статусом 401 или тоже “Connection reset by peer”?
Офлайн
Я бы взял какой-нибудь firebug/tcpdump/… и посмотрел что туда браузер передает при авторизации. Имея правильный запрос смоделировал бы его из Питона.
Офлайн
Спасибо ответившим. Без АусХандлера тоже было ресет бай пиир.
мало того, веб-морда вешалась даже от телнет соединения )
вобщем вчера я чего-то тупил слегка.
сегодня первым в выдаче гугла оказался рецепт от активстейт HTTP basic authentication (Python recipe), который помог моей мысли сформироваться правильно.
Посмотрел ФайрБагом запрос и перебрал заголовки (сенкс Ед)
проблема была в Accept-Encoding:gzip,deflate,sdch (вернее в его отсутствии).
import urllib2 req = urllib2.Request('http://192.168.1.1/userRpm/StatusRpm.htm') #req.add_header('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8') #req.add_header('Accept-Charset','ISO-8859-1,utf-8;q=0.7,*;q=0.3') req.add_header('Accept-Encoding','gzip,deflate,sdch') #req.add_header('Accept-Language','en-US,en;q=0.8') ##req.add_header('Authorization','Basic YWxleHphbmRlcjc3OmFsZXh6YW5kZXIyMw==') #req.add_header('Connection','keep-alive') #req.add_header('Host','192.168.1.1') #req.add_header('User-Agent','Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.8 (KHTML, like Gecko) Chrome/20.0.1106.0 Safari/536.8 SUSE/20.0.1106.0') passman=urllib2.HTTPPasswordMgr() passman.add_password('TP-LINK Wireless Lite N 3G Router MR3220','http://192.168.1.1','alexzander77','ЗфыыцщкВ') auth=urllib2.HTTPBasicAuthHandler(passman) page = urllib2.build_opener(auth).open(req).read() print page
Офлайн