Я пытался найти код 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! пользователей, и другой для пароля пользователей.
Однако, когда я испытал этот код (заменяющий mu реальный вход в систему 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">
Он сказал, что я должен сделать следующее:
Я действительно не знаю, как выполнить первые два из этих трех шагов. Я только что загрузил "Wireshark" и попытался получить некоторые пакеты там. Однако я не знаю, как "моделировать нормальный вход в систему и сохранить страницу входа в систему". Кроме того, я не делаю, как сохранить заголовки POST$GET с "Wireshark". Может кто-либо, ведет меня через эти два шага в "Wireshark"? Или, по крайней мере, скажите мне, с чего я должен запустить.Спасибо.
Вам не нужен Wireshark для этого. Firebug совершенно способен к разрыванию запросов и ответов прямо из Firefox.
Когда Вас попросили
моделируйте нормальный вход в систему и сохраните страницу входа в систему
это было, запрос на Вас для входа в систему в Yahoo считает, как Вы будете обычно делать от веб-браузера и сохранять страницу.
Что касается HTTP переменные POST/получать и сохранение их, у меня нет опыта, но необходимо, вероятно, взглянуть на это, ТАК ответьте
Кажется, что Вы - OP для Q в ТАК-.-