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