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

362 天前
 piaochen0

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

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

1140 次点击
所在节点    Python
5 条回复
ClericPy
361 天前
chrome 不方便 Chromium 方便吧, 绿色的 zip 解压缩就能用. 说的太抽象只能给你回答地更抽象了

1. 下载一个比较新的 Chromium zip 包解压缩, 使服务器可以有浏览器
2. CDP 协议的 python 库随便一个, 拿到 TargetID 就是新弹出窗口的那个 tab id 以后直接连接上它, 然后通过域名去拿 Cookie 就行了, 'Page.getCookies' 这个看起来不是特别稳定(随时弃用), 要么截流量, 要么 Network.getCookies
jy28520
361 天前
装个 docker 然后跑 kasmweb/chrome
按照楼上说的用 CDP 去跑
moonrailgun
361 天前
什么合作方是以爬网站作为合作的形式的。。。
piaochen0
360 天前
@moonrailgun 甲方爸爸的系统...
Belmode
356 天前
都这样了,就没必要继续走他们那套页面登录流程了。直接去找认证流程的接口,自己拼数据发 http 掉用,把响应的 cookie 留下来。
不然除了 selenium 还能有什么方法

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

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

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

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

© 2021 V2EX