平台登录会话获取
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_ee9b2ae1/pacp-system-login 技能。
技能介绍
要解决什么问题
pacp 系列技能(如 pacp-build-form、pacp-build-list)在调用 PowerData 平台 API 之前,手里必须攥着一个有效的 JSESSIONID。问题不在于怎么填表单,而在于这个会话凭证是 HttpOnly cookie:document.cookie 读不到,cookieStore 也读不到。
于是本技能要解决三件事:怎么登进去、怎么把凭证从浏览器里抠出来、怎么让凭证在多个 skill 之间复用。
核心能力与工作方式
唯一的固定依赖是 chrome-devtools MCP,导航、探测、填写、取值全靠它;视觉识别能力(验证码识别、选择器兜底)按运行时环境分层降级,不硬编码任何具体 MCP。
整体流程分三条路径自动选择:
- 查缓存:先读
cwd/.pacp/session.json,优先用自带 CLIscripts/check_session.js调getcurrentuser校验有效性,不开浏览器、3 秒内完成;只有怀疑假阴性时才退回浏览器evaluate_script。 - 自动登录模式:用户提供地址加账号加密码时,直接导航到项目根网址(去掉
/app/index.html等前端路由,省一次 SPA 跳转),按已知选择器#XTZH/#YHPD/#login优先、启发式匹配兜底、视觉识别再兜底的顺序定位元素,用fill模拟键盘输入——禁止用evaluate_script设 value,平台前端对密码有加密逻辑,绕过事件处理会直接 401。 - 用户自登模式:兜底王牌。仅凭地址时打开登录页,提示用户自己登,不轮询,等用户说一声再继续。浏览器对用户可见可操作,理论上不可能完全卡死。
取凭证是技术核心:主动发一次 credentials: 'include' 的 fetch,再从网络请求列表的 getcurrentuser 请求头里读 cookie: 行。注意列表只保留自上次导航以来的请求,hash 路由变化不会清记录,整页跳转才会。
适用边界与注意点
JSESSIONID是会话级 cookie(expires: -1),浏览器关闭或服务重启即失效,缓存校验失败属正常,重走登录流程即可。- 同账号重复登录会互踢旧 session,缓存优先复用恰好缓解这一点。
- 全角半角是高频坑:密码里的
@ ! #若被填成全角@ ! #(从聊天工具复制时极易发生),登录会报用户名或密码错误。排查方法:evaluate查密码框 value 的 charCode,半角!=33、@=64,全角则分别为 65281、65312。 - 滑块验证码没有可靠自动手段,直接降级人工;图片验证码看视觉能力,短信验证码由用户提供。
session.json以系统地址为 key,天然支持同时操作多个环境。
使用场景
- 使用 pacp-build-form 搭建动态表单前,需要先登录 PowerData 平台拿到 JSESSIONID。
- 调用 PowerData 平台 API 时收到 401,需要重新获取有效会话凭证并重试原请求。
- 构建动态列表(pacp-build-list)时发现缓存里的会话已过期,需要重新登录并刷新缓存。
- 不愿在对话里填写账号密码,希望在可见浏览器手动登录后由技能取回会话凭证。
适合人员
- 用 pacp 系列技能搭建动态表单与列表的前端工程师,需要有效的平台会话凭证才能继续调 API。
- 维护 PowerData 平台集成的后端工程师,常遇到 401 会话过期,需要排查并刷新凭证。
- 编写自动化脚本但不便在对话里提交账号密码的开发者,倾向手动登录后取凭证。
- 同时操作多个 PowerData 环境、需要按系统地址分别缓存和复用会话的测试人员。