V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lokamir
V2EX  ›  Python

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

  •  
  •   lokamir · 2020-03-01 22:12:25 +08:00 · 2378 次点击
    这是一个创建于 1730 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第一次遇到这样的情况
    需要模拟登陆页面是只需要 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,并没有传参
    4 条回复    2020-03-02 15:22:07 +08:00
    jugelizi
        1
    jugelizi  
       2020-03-01 22:18:25 +08:00
    之前有个帖子不是说了吗 登录 复制 cookie 然后就没有然后了
    lane1
        2
    lane1  
       2020-03-02 12:47:20 +08:00 via Android
    传参是指?我啰嗦点好了。。

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

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

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

    更进一步,如果厌恶了 requests,可以使用 headless 的浏览器。就像控制木偶一样,来控制浏览器,比如 Puppeteer,api 设计得还很美观。
    lokamir
        3
    lokamir  
    OP
       2020-03-02 15:08:27 +08:00
    @jugelizi 其实我是希望通过账户密码获取 cookie,当然实在没办法只能手动复制了
    lokamir
        4
    lokamir  
    OP
       2020-03-02 15:22:07 +08:00
    @lane1 谢谢,解答的这么详细,我以前接触的都是直接通过 post 账号密码,在浏览器的 network 里面就能直接获取,第一次遇到这么隐秘的 cookie,所以重定向页面隐藏 post 过程感兴趣,后来发现用 pychrm 的 debugger 也可以追踪重定向页面,只是用起来太麻烦了,要是 chrome 可以直接查看重定向页面的包就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3702 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:36 · PVG 18:36 · LAX 02:36 · JFK 05:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.