PlayWright检测用户登录保存Cookie

背景

本需求以稀土掘金社区为例

采用PlayWright包

pip install playwright

思路

用户打开软件,提示进入浏览器登录后进行操作

将expect_response()的超时时间设置为无限毫秒

expect_response()函数就是等待指定响应发生的方法

通过手动抓包发现

掘金社区登陆成功后响应返回接口地址如下

https://api.juejin.cn/user_api/v1/user/profile_id

接下来判断返回的json数据是否表示成功

如果含有 "ok" 或者 "success" 的代码或者信息并且此时浏览器页面登陆成功

则表示登录成功

返回的json数据格式如下

{'err_no': 0, 'err_msg': 'success', 'data': {'profile_id': '627171387769035'}}

此时将持久化数据存入storage.json文件中

下次进入新建context时可以根据此文件,直接取出已登陆状态

完整代码

```python

-- coding: utf-8 --

import re from playwright.sync_api import sync_playwright from playwright._impl._errors import TargetClosedError print("请进入浏览器登录后使用") try: with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context( storage_state="storage.json" ) page = context.new_page() page.goto("https://www.juejin.cn/") with page.expect_response(re.compile(r"https://api.juejin.cn/user_api/v1/user/profile_id"),timeout=1000000) as response: data = response.value print(data.json()) context.storage_state(path="storage.json") context.close() browser.close() except TargetClosedError: print("浏览器关闭") pass ```

附录

自动化上传文章软件 https://gitee.com/xiaofengsb/post-sync

云奕科软 https://yunyicloud.cn

posted @ 2024-09-24 17:23  XFS小风  阅读(217)  评论(0)    收藏  举报