我发现一个奇怪的事情,当我编码一个网蜘蛛到一个特定的网站。网络服务器如何检测重播登录尝试?
我使用提琴手和铬(以及其他网络浏览器)登录一个网站(HTTP,不是https),并获取发送和接收的所有包(以及cookie):( first package '获取'请求登录页面和cookie,然后使用收到的cookie请求验证码和一些其他图片,然后用用户名,密码和验证码向服务器和服务器发送具有正确信息的登录请求)
然后我注销并清除所有缓存和Cookie,并使用Fiddler中继(模拟)整个过程(因为我知道我应该发送所有包的格式):请求登录页面获取cookie,使用该cookie请求所有图片(包括验证码图片),然后使用cookie和授权码r equest登录(用户名和密码正确)...但失败。
我敢肯定,失败不是由无效的userid或密码或auth代码引起的,我相信在前端没有什么特别的(html,脚本被选中),但它让我困惑很多可以服务器告诉我使用浏览器或不在后端 ..
我不是要求任何人解决具体问题。我只是想知道是否有人有我描述的类似问题?
具体的网站并不重要,我必须说整个练习是完全无害的!我没有做任何黑客攻击,相反它会帮助一些人。
============================================== ======== 我终于明白了原因:登录页面有一个隐藏的input(),我不小心忽略了它,因为它的值每次看起来都差不多。如果我们模拟了所有必要的HTTP请求包,Web服务器无法检测到重播的登录尝试。 谢谢各位〜
您是否比较了通过浏览器登录时以及重新运行Fiddler中的步骤时得到的回复?什么导致你认为问题是网站检测到你没有使用浏览器? –
判断客户端是否是浏览器的最常用(也相当愚蠢)的方法是评估User-Agent头 - 您是否发送了一个与您的Fiddler请求匹配的实际浏览器? – CBroe
@Bartdude,谢谢你的回答。是的,我比较了浏览器的反应和重播提琴手的反应。除登录步骤以外的所有响应都是相同的。由于请求仅由html页面组成,所以jquery-1.3和query-base64编码(我已经检查过脚本没有改变)。和5个图片(一个是授权码,另外一个是页面元素)。我发现没有什么特别的前端(HTML,脚本),我重新运行所有的请求基于以前的格式与cookie我得到(cookie不会改变在以前的轨迹与浏览器的整个过程中)..所以我不知道该网站如何分辨 – Caunion