如何使用“Wireshark”保存网页的POST&GET头?

如何使用“Wireshark”保存网页的POST&GET头?

我一直在尝试寻找一个 Python 代码,以便从“Google App Engine”登录到我在 yahoo.com 上的邮箱。我得到了以下代码:

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! 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. 使用“Wireshark”保存POST&GET头;
  3. 将登录页面与这些标题进行比较,看看我的请求需要包含哪些字段;

我真的不知道如何执行这三个步骤中的前两个步骤。我刚刚下载了“Wireshark”,并尝试在那里捕获一些数据包。但是,我不知道如何“模拟正常登录并保存登录页面”。另外,我不知道如何使用“Wireshark”保存 POST$GET 标头。有人可以指导我完成“Wireshark”中的这两个步骤吗?或者至少告诉我应该从哪里开始。谢谢。

答案1

您不需要 Wireshark 来实现这一点。萤火虫完全能够直接从 Firefox 分离请求和响应。

答案2

当你被要求

模拟正常登录并保存登录页面

这是一个请求,要求您像平常从 Web 浏览器登录一样登录您的 Yahoo 帐户并保存页面。

至于 HTTP POST/GET 变量并保存它们,我没有经验,但你应该看看这个答案


看来你是 SO -.- 中 Q 的 OP

相关内容