Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2016 15:35:44

delvin-fil
Зарегистрирован: 2015-11-27
Сообщения: 95
Репутация: +  4  -
Профиль   Отправить e-mail  

HTTP Error 302

Приветствую всех!
Порылся по форуму и не нашел. (на других не смотрел)
Суть вот в чем:
Вот эта конструкция(как по книге) работает

 r = urllib.request.Request("https://docs.python.org/",headers=headers)
u = urllib.request.urlopen(r)
resp = u.read()
print (resp)
А вот эта уже нет
 r = urllib.request.Request("https://lk.megafon.ru/login/",headers=headers)
u = urllib.request.urlopen(r)
resp = u.read()
print (resp)
Что такого в коде мегафон, что он зацикливает?



 import __hello__

Офлайн

#2 Окт. 25, 2016 02:58:45

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

HTTP Error 302

Видимо число редиректов ограничено. Так как с мегафоном такая картина:

 wget --no-check-certificate https://lk.megafon.ru/login/
--2016-10-25 02:57:02--  https://lk.megafon.ru/login/
Resolving lk.megafon.ru (lk.megafon.ru)... 85.26.148.161
Connecting to lk.megafon.ru (lk.megafon.ru)|85.26.148.161|:443... connected.
WARNING: cannot verify lk.megafon.ru's certificate, issued by 'CN=thawte EV SSL CA - G3,O=thawte\\, Inc.,C=US':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 302 Found
Location: http://lk.megafon.ru:80/?noredirect [following]
--2016-10-25 02:57:03--  http://lk.megafon.ru/?noredirect
Connecting to lk.megafon.ru (lk.megafon.ru)|85.26.148.161|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://lk.megafon.ru:443/?noredirect= [following]
--2016-10-25 02:57:03--  https://lk.megafon.ru/?noredirect=
Connecting to lk.megafon.ru (lk.megafon.ru)|85.26.148.161|:443... connected.
WARNING: cannot verify lk.megafon.ru's certificate, issued by 'CN=thawte EV SSL CA - G3,O=thawte\\, Inc.,C=US':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 302 Found
Location: http://lk.megafon.ru:80/?noredirect= [following]
--2016-10-25 02:57:03--  http://lk.megafon.ru/?noredirect=
Connecting to lk.megafon.ru (lk.megafon.ru)|85.26.148.161|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://lk.megafon.ru:443/?noredirect= [following]
--2016-10-25 02:57:03--  https://lk.megafon.ru/?noredirect=
Connecting to lk.megafon.ru (lk.megafon.ru)|85.26.148.161|:443... connected.
WARNING: cannot verify lk.megafon.ru's certificate, issued by 'CN=thawte EV SSL CA - G3,O=thawte\\, Inc.,C=US':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 302 Found
Location: https://lk.megafon.ru:443/login [following]
--2016-10-25 02:57:04--  https://lk.megafon.ru/login
Reusing existing connection to lk.megafon.ru:443.
HTTP request sent, awaiting response... 302 Found
Location: /login/ [following]
--2016-10-25 02:57:04--  https://lk.megafon.ru/login/
Reusing existing connection to lk.megafon.ru:443.
HTTP request sent, awaiting response... 200 OK
Length: 19439 (19K) [text/html]
Saving to: 'index.html.2'

Офлайн

#3 Окт. 25, 2016 05:11:56

delvin-fil
Зарегистрирован: 2015-11-27
Сообщения: 95
Репутация: +  4  -
Профиль   Отправить e-mail  

HTTP Error 302

VadimK
Видимо число редиректов ограничено.
Два месяца назад вот этот код прекрасно работал
 url = 'https://lk.megafon.ru/login/'
r=requests.get(url, auth=HTTPDigestAuth('login', 'pass'))
txt = r.text
soup = BeautifulSoup(txt)
word = soup.findAll('div','gadget-remainders-td gadget-remainders-td-3 gadget-remainders-summ gadget-remainders-mobile')
word = str(word)
test = re.sub('\<[^>]*\>', '', word)
result = re.sub(r'Остаток / Общий объём', '', test)
result = re.sub(r'/', 'из', result)
print (result)
Теперь не работает. Бьюсь всячески - не помогает.
Вплоть до:
 url = 'https://lk.megafon.ru/remainders/'
cookie = {'csrfId': 'd495a08ad-da48-409b-ac21-5cbffc699e3e'}
r = requests.post(url, cookies=cookie)
r = requests.get(url,timeout=5)
if r.status_code == 200:
    for cookie in r.cookies:
        print(cookie)
И попытке подсунуть печеньку полученную из браузера.
Есть там одна интересная вещица
 <form action="/dologin/" class="form form-login-autofill" method="POST">
<input type="hidden" name="CSRF" value="lz9t6Wk4WPpb3k2IEiAUyоlrE3WPHOGGWkf13u8I3yPF9QCmQPoKZk2x1U0zQW8pSyghPkrOk/2vEN8X4UC5jH8seHlTNKy9lN+yv78FUUE="/>
Вот как это победить?



 import __hello__

Офлайн

#4 Окт. 25, 2016 11:17:25

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

HTTP Error 302

В смысле победить ? Придется спарсить CSRF и так же его подсунуть.

Офлайн

#5 Окт. 27, 2016 01:33:32

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

HTTP Error 302

Скорее пересмотреть надо код и сайт, они явно поменяли сайт, например убрали возможность отправки смс с сайта (гады)…

ЗЫ. забудь фразу “Два месяца назад вот этот код прекрасно работал” На “той стороне” тоже постоянно иммитация бурной деятельности и всегда какието перемены… Если тебе API не предоставили, будь готов менять прогу хоть каждый день…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version