我在我发布的HTTP帖子请求上捕获Selenium对象上的网络流量。虽然返回的JSON字符串具有请求标头,但从不捕获邮件消息的正文(params)。
继承我的代码,
host = "localhost"
port = "4444"
browser = r"*pifirefox"
sel = selenium(host, port, browser, url)
.
.
.....Submit action
postRequest = sel.captureNetworkTraffic('json')
postRequest有,
[{
"statusCode":200,
"method":"POST",
"url":"http://.................",
"bytes":97567,
"start":"2011-12-02T17:42:04.719-0500",
"end":"2011-12-02T17:42:05.044-0500",
"timeInMillis":325,
"requestHeaders":[{
"name":"Host",
"value":"......................."
},{
"name":"User-Agent",
"value":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
},{
"name":"Accept",
"value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
},{
"name":"Accept-Language",
"value":"en-us,en;q=0.5"
},{
"name":"Accept-Encoding",
"value":"gzip, deflate"
},{
"name":"Accept-Charset",
"value":"ISO-8859-1,utf-8;q=0.7,*;q=0.7"
},{
"name":"Proxy-Connection",
"value":"keep-alive"
},{
"name":"Referer",
"value":"...................."
},{
"name":"Cookie",
"value":"...................."
},{
"name":"X-Requested-With",
"value":"XMLHttpRequest"
},{
"name":"X-MicrosoftAjax",
"value":"Delta=true"
},{
"name":"Cache-Control",
"value":"no-cache, no-cache"
},{
"name":"Content-Type",
"value":"application/x-www-form-urlencoded; charset=utf-8"
},{
"name":"Content-Length",
"value":"10734"
},{
"name":"Pragma",
"value":"no-cache"
}],
"responseHeaders":[{
"name":"Date",
"value":"Fri, 02 Dec 2011 22:42:05 GMT"
},{
"name":"Server",
"value":"Microsoft-IIS/6.0"
},{
"name":"Cache-Control",
"value":"private"
},{
"name":"Content-Type",
"value":"text/plain; charset=utf-8"
},{
"name":"Content-Length",
"value":"97567"
},{
"name":"X-Powered-By",
"value":"ASP.NET"
},{
"name":"Via",
"value":"1.1 (jetty)"
},{
"name":"X-AspNet-Version",
"value":"4.0.30319"
}]
}]
我试图模仿Post请求,但没有身体(params),它不完整。任何建议都将不胜感激。
干杯, 甲
答案 0 :(得分:1)
您无法通过Selenium获取请求或响应正文 - 它只捕获标题。如果您在Windows上运行,请尝试Fiddler2。
答案 1 :(得分:1)
当selenium为您提供请求标头时,他们有信息来创建一个获取响应主体的PyCurl或urllib请求。
对我来说,这就像运行以下正则表达式一样简单地删除网址,然后使用 卷曲以获取它们。
urls = re.finditer('\n "url":"(.*)",', sel.captureNetworkTraffic('json'))
使用正则表达式,因为一些响应嵌入了json导致json.loads爆炸:(。如果参数都在响应头而不是url中,还有一些额外的工作。
答案 2 :(得分:0)
注意:我可能需要有关您要完成的内容以及选择硒的原因的更多信息。
我唯一能想到的就是将tshark或类似的东西输出到你的python程序中。我想也有pcap阅读器,但我对这些没有经验。我简要地搜索了一个python网络监控api,但没有运气。