背景
本需求以稀土掘金社区为例
采用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
暂无评论内容