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
piaochen0
V2EX  ›  Python

如何使用代码获取浏览器点击弹出新窗口的 cookie 信息?

  •  
  •   piaochen0 · 359 天前 · 1132 次点击
    这是一个创建于 359 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要从合作方的另外一个系统上获取数据,由于对方比较傲娇,不提供 api ,我们只能通过代码去爬取。
    对方系统是一个统一的登陆入口,然后有 N 个子系统,点击入口链接,会跳出一个新的窗口,打开子系统页面。
    每个子系统会往 cookie 里面追加一些信息。
    数据都是通过分析接口调用,使用 requests 的方式直接获取的数据。

    问题是我如何通过代码的方式,获取到弹出窗口的 cookie 信息?(也就是每个子系统的 cookie 信息) 之前都是通过手动复制 cookie,然后配置每个子系统 cookie 的方式来用的。 打算这一步自动化。 但是没有什么思路。 目前能想到的就是起一个 selenium 来模拟点击,然后获取每个子系统的 cookie 。 由于公司服务器环境问题,服务器上安装 chrome 不方便。
    有没有不用 selenium ,能更轻量级(最好只用 python 第三方库本身来实现,不要调用第三方浏览器)的方案?

    5 条回复    2023-05-10 16:32:49 +08:00
    ClericPy
        1
    ClericPy  
       359 天前
    chrome 不方便 Chromium 方便吧, 绿色的 zip 解压缩就能用. 说的太抽象只能给你回答地更抽象了

    1. 下载一个比较新的 Chromium zip 包解压缩, 使服务器可以有浏览器
    2. CDP 协议的 python 库随便一个, 拿到 TargetID 就是新弹出窗口的那个 tab id 以后直接连接上它, 然后通过域名去拿 Cookie 就行了, 'Page.getCookies' 这个看起来不是特别稳定(随时弃用), 要么截流量, 要么 Network.getCookies
    jy28520
        2
    jy28520  
       358 天前
    装个 docker 然后跑 kasmweb/chrome
    按照楼上说的用 CDP 去跑
    moonrailgun
        3
    moonrailgun  
       358 天前
    什么合作方是以爬网站作为合作的形式的。。。
    piaochen0
        4
    piaochen0  
    OP
       357 天前
    @moonrailgun 甲方爸爸的系统...
    Belmode
        5
    Belmode  
       353 天前
    都这样了,就没必要继续走他们那套页面登录流程了。直接去找认证流程的接口,自己拼数据发 http 掉用,把响应的 cookie 留下来。
    不然除了 selenium 还能有什么方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2716 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:52 · PVG 18:52 · LAX 03:52 · JFK 06:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.