Я пытался найти код Python, который будет входить в мой почтовый ящик на yahoo.com из "Google App Engine". Мне дали этот код:

import urllib, urllib2, cookielib

url = "https://login.yahoo.com/config/login?"
form_data = {'login' : 'my-login-here', 'passwd' : 'my-password-here'}

jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
form_data = urllib.urlencode(form_data)
# data returned from this pages contains redirection
resp = opener.open(url, form_data)
# yahoo redirects to http://my.yahoo.com, so lets go there instead
resp = opener.open('http://mail.yahoo.com')
print resp.read()

Автор этого скрипта изучил HTML-скрипт формы входа в Yahoo и придумал этот скрипт.

Эта форма входа в систему содержит два поля, одно для пользователей Yahoo! ID и еще один для пароля пользователя.

Однако, когда я опробовал этот код (заменив мой реальный логин Yahoo на «my-login-here», а мой реальный пароль на «my-password-here»), он просто вернул мне форму входа, что означает что-то не работает правильно

Другой сторонник предложил мне отправить MD5-хэш моего пароля, а не простой пароль.

Он также отметил, что в этой форме входа в систему есть много других скрытых полей, кроме полей логина и пароля (он назвал их "Защита CSRF"), с которыми мне также придется иметь дело:

<input type="hidden" name=".tries" value="1"> 
<input type="hidden" name=".src" value="ym"> 
<input type="hidden" name=".md5" value=""> 
<input type="hidden" name=".hash" value=""> 
<input type="hidden" name=".js" value=""> 
<input type="hidden" name=".last" value=""> 
<input type="hidden" name="promo" value=""> 
<input type="hidden" name=".intl" value="us"> 
<input type="hidden" name=".bypass" value=""> 
<input type="hidden" name=".partner" value=""> 
<input type="hidden" name=".u" value="bd5tdpd5rf2pg"> 
<input type="hidden" name=".v" value="0"> 
<input type="hidden" name=".challenge" value="5qUiIPGVFzRZ2BHhvtdGXoehfiOj"> 
<input type="hidden" name=".yplus" value=""> 
<input type="hidden" name=".emailCode" value=""> 
<input type="hidden" name="pkg" value=""> 
<input type="hidden" name="stepid" value=""> 
<input type="hidden" name=".ev" value=""> 
<input type="hidden" name="hasMsgr" value="0"> 
<input type="hidden" name=".chkP" value="Y"> 
<input type="hidden" name=".done" value="http://mail.yahoo.com"> 

Он сказал, что я должен сделать следующее:

  1. Имитация обычного входа в систему и сохранение страницы входа, которую я получаю;
  2. Сохраняйте заголовки POST & GET с помощью "Wireshark";
  3. Сравните страницу входа с этими заголовками и посмотрите, какие поля мне нужно включить в мой запрос;

Я действительно не знаю, как выполнить первые два из этих трех шагов. Я только что скачал "Wireshark" и попытался захватить некоторые пакеты там. Однако я не знаю, как "симулировать нормальный вход в систему и сохранить страницу входа". Также я не умею сохранять заголовки POST $ GET с помощью "Wireshark". Может ли кто-нибудь, пожалуйста, провести меня через эти два шага в "Wireshark"? Или хотя бы скажите, с чего мне начать. Благодарю вас.

2 ответа2

2

Вам не нужен Wireshark для этого. Firebug прекрасно способен разбивать запросы и ответы прямо из Firefox.

1

Когда вас попросили

смоделировать обычный вход в систему и сохранить страницу входа

это был запрос для вас, чтобы войти в свою учетную запись Yahoo, как вы это обычно делаете из веб-браузера, и сохранить страницу.

Что касается HTTP POST/GET переменных и их сохранения, у меня нет опыта, но вам, вероятно, стоит взглянуть на этот SO-ответ


Кажется, ты ОП для Q в SO -.-

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .