Найти - Пользователи
Полная версия: http basic авторизация на роутере
Начало » Network » http basic авторизация на роутере
1
alexzander77
Добрый день товарищи.
Решил попробовать автоматизировать подключение/отключение интернета (использую ви-фи роутер с 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.
помогает только перезагрузка роутера. Проблема ,скорей всего, в вебсервере тплинка, но нагуглить что-то не получилось, потому решил спросить. Вдруг кто делал подобное (или встречал на просторах необъятных интернетов).

сам то поиграюсь еще, но уж больно длителен метод проб и ошибок - роутер передергивать каждый раз.
reclosedev
А если без HTTPBasicAuthHandler попробовать? Ответ будет со статусом 401 или тоже “Connection reset by peer”?
Ed
Я бы взял какой-нибудь firebug/tcpdump/… и посмотрел что туда браузер передает при авторизации. Имея правильный запрос смоделировал бы его из Питона.
alexzander77
Спасибо ответившим. Без АусХандлера тоже было ресет бай пиир.
мало того, веб-морда вешалась даже от телнет соединения )

вобщем вчера я чего-то тупил слегка.
сегодня первым в выдаче гугла оказался рецепт от активстейт 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

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB