背景
本需求以稀土掘金社区为例
采用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
标签:playwright,https,登录,api,storage,json,PlayWright,Cookie,context From: https://www.cnblogs.com/xiaofengs/p/18429631