我一直试图找到一个python代码,可以从"Google App Engine"登录yahoo.com上的邮箱 。 Here (click here to see that page)我收到了这段代码:
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()
此脚本的作者查看了yahoo log-in form的HTML脚本 并提出了这个脚本。
该登录表单包含两个字段,一个用于用户的Yahoo! ID和另一个用于用户的密码。以下是这两个字段的HTML页面代码如下所示:
用户ID字段:
<input type="text" maxlength="96" class="yreg_ipt" size="17" value="" id="username" name="login">
密码字段:
<input type="password" maxlength="64" class="yreg_ipt" size="17" value="" id="passwd" name="passwd">
然而,当我将此代码上传到Google App Engine时,我发现这个登录表单不断回复给我,我认为这意味着登录过程没有成功。为什么会这样?
答案 0 :(得分:3)
您发送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">
<input type="hidden" name=".pd" value="ym_ver=0&c=&ivt=&sg=">
启动Wireshark并使用它。祝你好运:)
但是,如果您打算使用它,那么我会介意使用Google IP几乎肯定会导致使用Captcha挑战。此外,雅虎可能会阻止Google永久设置的User-Agent
。