当我将网络蜘蛛编码到特定网站时,我发现了一件奇怪的事情。
我使用 fiddler 和 chrome(以及其他网络浏览器)登录网站(HTTP,而不是 https)并获取发送和接收的所有包(以及 cookie):(第一个包“获取”请求登录页面和cookie,然后使用接收到的cookie请求验证码和其他一些图片。然后将带有用户名、密码和验证码的登录请求发送到服务器,服务器以正确的信息响应)
然后我注销并清除所有缓存和 Cookie 并使用 Fiddler 中继(模拟)整个过程(因为我知道我应该发送的所有包的格式):请求登录页面获取 cookie,使用 cookie 来请求所有图片(包括验证码图像),然后使用 cookie 和验证码请求登录(用户名和密码正确)...但失败。
我确定失败不是由无效的用户名或密码或身份验证码引起的,我相信前端没有什么特别的(检查 html,脚本),但它让我很困惑服务器如何告诉我使用浏览器或不在后端..
我不要求任何人解决具体问题。我只是想知道有人遇到过我描述的类似问题吗?
具体的网站并不重要,我必须说整个做法是完全无害的!我没有做任何黑客的事情,相反它会帮助一些人。
==================================================== ==== 我终于找到了原因:登录页面有一个隐藏的 input() 并且我不小心忽略了它,因为它的值每次看起来几乎相同。如果我们模拟了所有必要的 HTTP 请求包,Web 服务器无法检测到重放的登录尝试。谢谢各位~