Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http Web服务器如何检测重播的登录尝试?_Http_Fiddler - Fatal编程技术网

Http Web服务器如何检测重播的登录尝试?

Http Web服务器如何检测重播的登录尝试?,http,fiddler,Http,Fiddler,当我把一只蜘蛛编码到一个特定的网站时,我发现了一件奇怪的事情 我使用fiddler和chrome(以及其他web浏览器)登录一个网站(HTTP,而不是https),并获取发送和接收的所有包(以及cookie):( 首先包“Get”请求登录页面和cookie,然后使用收到的cookie请求验证码和其他一些图片。然后将带有用户ID、密码和验证码的登录请求发送到服务器,并向服务器发送带有正确信息的响应) 然后我注销并清除所有缓存和Cookie,并使用Fiddler中继(模拟)整个过程(因为我知道我应该

当我把一只蜘蛛编码到一个特定的网站时,我发现了一件奇怪的事情

我使用fiddler和chrome(以及其他web浏览器)登录一个网站(HTTP,而不是https),并获取发送和接收的所有包(以及cookie):( 首先包“Get”请求登录页面和cookie,然后使用收到的cookie请求验证码和其他一些图片。然后将带有用户ID、密码和验证码的登录请求发送到服务器,并向服务器发送带有正确信息的响应)

然后我注销并清除所有缓存和Cookie,并使用Fiddler中继(模拟)整个过程(因为我知道我应该发送的所有包的格式):请求登录页面获取Cookie,使用Cookie请求所有图片(包括身份验证码图像),然后使用Cookie和身份验证码请求登录(用户ID和密码正确)……但失败了

我确信失败不是由无效的用户ID、密码或身份验证代码造成的,我相信前端没有什么特别之处(html、脚本已检查),但这让我非常困惑服务器如何判断我是否在后端使用了浏览器

我不会要求任何人解决这个具体问题。我只是想知道有没有人有过和我描述的类似的问题

具体的网站并不重要,我必须说整个实践是完全无害的!我没有做任何黑客的事情,相反,它会帮助一些人

====================================================== 我终于找到了原因:登录页面有一个隐藏的input(),我不小心忽略了这一点,因为它的值每次看起来几乎相同。如果我们模拟了所有必要的HTTP请求包,Web服务器就无法检测到重播的登录尝试。
谢谢大家~

服务器无法神奇地判断他们是否在和Fiddler通话

如果Fiddler和您的客户端发送完全相同的请求,这意味着所讨论的服务器在其登录表单中使用了“一次性令牌”(有时称为nonce)。如果服务器再次看到相同的令牌,它将拒绝登录。有时,nonce不是直接发送的,而是用于计算“质询响应”,如NTLM等身份验证协议中所述。在其他情况下,nonce是一个验证码,它有助于防止您使用bot自动登录到这样的站点


除非您可以共享目标站点的更多详细信息(或登录过程的SAZ文件),否则人们不太可能帮助您。

您是否比较了通过浏览器登录和在Fiddler中重新运行步骤时得到的响应?是什么让你认为问题在于网站检测到你没有使用浏览器?判断客户机是否是浏览器最常用(也是最愚蠢的)方法是评估用户代理头–你是否发送了一个与真实浏览器匹配的Fiddler请求?@Bartdude,谢谢你的回答。是的,我比较了浏览器和fiddler重播的响应。除登录步骤外,所有响应都相同。因为请求仅仅由一个html页面、一个jquery-1.3和一个query-base64编码的页面组成(我已经检查过脚本没有被更改)。和5张图片(一张是身份验证代码,另一张是页面元素)。我在前端(html、脚本)上没有发现什么特别的东西,我用我得到的cookie重新运行了基于以前格式的所有请求(cookie在整个过程中不会在以前的浏览器跟踪中更改)…所以我无法理解该站点是如何告诉用户的difference@CBroe,谢谢你的回答。是,用户代理与上一个请求相同。因为我只在fiddler中更改cookie部分并进行“重播”。感谢您的详细回答和详细说明!因为saz文件包含我朋友的私人信息(密码)。我可以把网站贴在这里。这是一个学校的网站,学生可以在这里看到他们的成绩和课程。再一次,我的做法是无害的。我正在为stu开发一个应用程序,以更快地检查他们的成绩、课程和其他东西;服务器可能会将CAPTCHA的“应答”绑定到后端会话变量,这意味着将原始应答重放到后续请求肯定会失败。(验证码通常用于与此完全相同的目的——防止机器人使用web表单)。很抱歉,我重播得太晚,感谢您的回答~说真的,我知道后端的会话绑定到验证码(我在原始描述中称为“auth code”),所以我在之前(获取新cookie后)获取验证码并替换数据(uid,psw,CAPTCHA)的登录请求,并发送到服务器,但我失败了。这就是让我感到困惑的原因。我想我仍然有我做实验的.saz文件。如果您愿意帮助,我可以通过电子邮件发送给您(如果不会给您带来太多麻烦的话)。