重定向的页面该如何使用 Python 模拟登录?

2020-03-01 22:12:25 +08:00
 lokamir
第一次遇到这样的情况
需要模拟登陆页面是只需要 post 两个参数:username,password
页面接收到参数后会重定向到一个 security_check_页面校验
校验通过会直接重定向到初始页面

遇到的问题(勾选了 Preserve log )
使用 chrome 调试,登陆页面并不需要传参数,登录时的参数似乎是直接 post 到 security_check_
尝试用 python 直接 post 参数:username,password,无法登录,返回的包是登陆页面

截图在下面
https://imgchr.com/i/328cRK
第一行是为了让大家看到实际账号密码是传给 security_check_的,我使用了 offline 模式
直接调试就是第二、三行的 jsp 登陆页面,登陆后跳转主页

登陆页面: https://imgchr.com/i/32JwNR
跳转的主页: https://imgchr.com/i/32JdE9
可以看到调试页面是直接获得了 cookie,并没有传参
2384 次点击
所在节点    Python
4 条回复
jugelizi
2020-03-01 22:18:25 +08:00
之前有个帖子不是说了吗 登录 复制 cookie 然后就没有然后了
lane1
2020-03-02 12:47:20 +08:00
传参是指?我啰嗦点好了。。

模拟登录的目的就是拿到 cookie。

因为 http 是 stateless 的协议,server 和 client 之间维护状态就靠 cookie。所以之后发 http 请求都带上这个 cookie,server 就认为你是登录的。这也是浏览器的行为。你甚至可以复制这个 cookie 放你代码里 hard code.

自动化一点是程序员的浪漫对不对?那就想象自己是浏览器,重定向那就读 location 字段里的网站,接着往那发,一直追到底。

更进一步,如果厌恶了 requests,可以使用 headless 的浏览器。就像控制木偶一样,来控制浏览器,比如 Puppeteer,api 设计得还很美观。
lokamir
2020-03-02 15:08:27 +08:00
@jugelizi 其实我是希望通过账户密码获取 cookie,当然实在没办法只能手动复制了
lokamir
2020-03-02 15:22:07 +08:00
@lane1 谢谢,解答的这么详细,我以前接触的都是直接通过 post 账号密码,在浏览器的 network 里面就能直接获取,第一次遇到这么隐秘的 cookie,所以重定向页面隐藏 post 过程感兴趣,后来发现用 pychrm 的 debugger 也可以追踪重定向页面,只是用起来太麻烦了,要是 chrome 可以直接查看重定向页面的包就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/648948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX