0

当我将网络蜘蛛编码到特定网站时,我发现了一件奇怪的事情。

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

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

我确定失败不是由无效的用户名或密码或身份验证码引起的,我相信前端没有什么特别的(检查 html,脚本),但它让我很困惑服务器如何告诉我使用浏览器或不在后端..

我不要求任何人解决具体问题。我只是想知道有人遇到过我描述的类似问题吗?

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

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

4

1 回答 1

1

服务器无法神奇地判断他们是否在与 Fiddler 交谈。

如果 Fiddler 和您的客户端发送完全相同的请求,这意味着有问题的服务器在其登录表单中使用“一次性令牌”(有时称为随机数)。如果服务器再次看到相同的令牌,它会拒绝登录。有时随机数不是直接发送的,而是用于计算“挑战-响应”,就像在 NTLM 等身份验证协议中发生的那样。在其他情况下,nonce 是一个验证码,它有助于防止您使用机器人自动登录到这样的网站。

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

于 2013-04-02T17:31:40.160 回答