我正在使用一个网站 (mysite1.com) ,距离登录屏幕深 3 个屏幕是我想使用bash 和 curl访问的屏幕,并模拟通过浏览器的完全相同的请求。我通过模拟的意思是发送完全相同的标头(包括引用者和来源)。
这是正在发生的事情:
- 通过模拟浏览器行为,我能够越过登录屏幕和屏幕 2
- 现在,我卡在屏幕 3 上。发送到 mysite1 服务器的 POST 调用与浏览器发送的所有内容相同。
- 为了进行 3rd Screen 的 POST 调用,我在 localhost 上创建了一个表单,其中action="URLOf3rdScreenOnMysite1"和 method=post。在提交之前,我使用浏览器扩展更改了引用来源和其他标头。
- 这正在生成我在第 2 点中提到的请求。但是,对 screen1 和 2 的前两个调用是在 bash 中。
mysite1没有使用 cookie。Session_id 作为 GET 查询字符串参数存在。我假设服务器可能正在跟踪请求的 URL 流,但即使我使用 bash 跟踪流,我也得到了错误响应。
当我尝试模拟并返回 时,第三个屏幕中的 POST 调用返回不同的响应(错误响应),即使在两种情况下请求的 URL 流相同。这怎么可能?服务器如何知道这些请求是不同的,一个来自浏览器,另一个来自 bash + last-screen-from-browser?除了Headers + POST Data + URLs requested之外,是否还涉及任何其他参数?从浏览器调用第三个屏幕时可能建立了不同的连接?