新闻详情

新闻详情

首页 / 资讯中心 / 详情

Expect的Cookie注入魔法揭秘:如何让你的测试模拟真实登录用户

发布时间:2026/11/13 10:53:54来源:尧图网络
Expect的Cookie注入魔法揭秘:如何让你的测试模拟真实登录用户
Expect的Cookie注入魔法揭秘如何让你的测试模拟真实登录用户【免费下载链接】expectExpect tests your agents code in a real browser项目地址: https://gitcode.com/gh_mirrors/expect6/expect如果你用 AI 编程助手写过网页代码一定遇到过这种尴尬自动化测试一打开页面就被踢回登录页。Expect 的Cookie 注入功能正是为解决这个难题而生——它能把你在本地浏览器里真实登录的会话直接「搬运」到浏览器自动化测试的浏览器中让你的测试像真实登录用户一样访问受保护的页面。为什么浏览器测试很难测「登录态」页面无头浏览器headless browser每次启动都是一个「白纸」环境没有登录过、没有会话、没有身份。所以访问需要鉴权的路由 → 被重定向到登录页调用受保护的 API → 收到 401 Unauthorized测试后台管理界面 → 根本进不去手动在测试脚本里写一遍「填账号、输密码、点登录」既脆弱又慢而且很多网站有验证码、二次验证自动登录根本不现实。Expect 的思路很巧妙别再登录了直接复用你本地浏览器里已经登录好的会话。魔法全貌三步完成 Cookie 注入整条链路可以概括为三步源码分布在三个核心模块步骤做什么所在模块1️⃣ 选浏览器在终端勾选要从哪些浏览器同步 Cookiecookie-sync-confirm-screen.tsx2️⃣ 提取 Cookie从本地浏览器的 Cookie 库中读取并解密packages/cookies/3️⃣ 注入测试浏览器在导航前把 Cookie 塞进 Playwright 上下文browser.ts下面逐一拆解。第一步命令行里勾选浏览器10 秒配置当你带着 URL 启动 Expect 测试时终端会弹出一个 Cookie 同步确认界面列出本机安装的所有浏览器Chrome、Edge、Brave、Firefox、Safari 等 18 种默认浏览器自动预选直接回车就能用支持多选空格勾选/取消、a全选、n全不选状态栏会实时显示cookies (2)之类的提示让你知道同步已开启你的选择会保存到项目偏好中下次运行自动沿用如果不想同步加--no-cookies参数即可完全跳过详见 index.tsx 的选项定义。第二步从本地浏览器「搬」出 Cookie 的两种策略这一步由独立的 packages/cookies 包完成它内置了两套互补的提取策略策略 A直接读磁盘上的 SQLite 数据库快速每个浏览器都把 Cookie 存在本地数据库文件里。Expect 的定位很准定位数据库按平台找到各浏览器的 Cookie 存储路径复制到临时目录避免和你正在使用的浏览器产生锁冲突解密仅 Chromium 系需要macOS从钥匙串取密钥 → PBKDF2-SHA1 → AES-128-CBCLinuxsecret-tool取密钥回退为固定口令WindowsLocal State中的密钥 → DPAPI 解包 → AES-256-GCM解析Chromium 查cookies表、Firefox 的 Cookie 是明文存储在cookies.sqlite、Safari 则解析二进制的Cookies.binarycookies文件各浏览器的具体解析逻辑分别在 chromium.ts、firefox.ts、safari.ts 中实现。策略 B用 CDP 让浏览器自己解密更省事对 Chromium 系浏览器还可以启动一个无头实例、通过 Chrome DevTools Protocol 发送Network.getAllCookies命令——解密工作交给浏览器自己完成完全绕开系统钥匙串弹窗。这个流程由 cdp-client.ts 驱动复制配置 → 移除单实例锁 → 无头启动 → WebSocket 取 Cookie → 清理退出全程不会碰你正在使用的真实配置。两种方式最终都归一化为统一的Cookie结构name、value、domain、path、httpOnly、sameSite…再按名称|域名|路径去重。第三步一行 addCookies测试浏览器「原地登录」提取到的 Cookie 会在打开目标页之前注入 Playwright 浏览器上下文核心只有三行逻辑见 browser.tsconst cookies Array.isArray(options.cookies) ? options.cookies : await extractDefaultBrowserCookies(url, preferredProfile); await context.addCookies(cookies.map((c) c.playwrightFormat));注入后测试浏览器访问任何需要登录的页面都会直接以「已登录」身份进入。为了让 Agent 调用浏览器时不必等待提取MCP 会话在启动时就在后台预提取Cookie见 mcp-session.ts——等页面要打开时Cookie 早已就位。真实效果官方测试验证的 4 个细节Expect 用一套完整的模拟应用验证了注入后的行为见 cookie-injection.test.ts这些细节正是「像真实用户」的关键✅HttpOnly 会话 Cookie 自动隐藏document.cookie里看不到sid与真实浏览器安全行为一致✅路径作用域精确生效admin_panel只在/admin路由被发送公开页面不会带上✅页面内 fetch 自动携带 Cookie测试里的前端 JS 调 API 直接返回已认证数据✅会话可跨浏览器迁移从浏览器 A 提取的 Cookie 注入全新浏览器 BB 立刻具备登录态而没注入的浏览器访问同一页面仍被重定向到登录页正因为登录态开箱即用Agent 才能专注于真正的测试像图中所示它会自动生成「填充邮箱 → 填充密码 → 提交表单 → 验证跳转」这样的测试计划直接跑在真实的登录/受保护页面上。新手快速上手# 1. 全局安装 Expect CLI npm install -g expect-cli # 2. 在项目里运行会提示你选择同步 Cookie 的浏览器 expect -m 测试登录后的仪表板功能 -u http://localhost:3000几个实用小贴士CI 环境用--ci模式会自动跳过 Cookie 提取服务器上本来也没有你的本地浏览器无头运行 30 分钟超时隐私Cookie 只在你的机器上读取和注入整个流程本地完成临时关闭--no-cookies一键回到「匿名访客」模式方便专门测试未登录路径总结Expect 的 Cookie 注入把浏览器测试中最头疼的「登录态」问题化成了 10 秒钟的选择勾选浏览器 → 自动提取解密 → 注入测试浏览器。从此你的 AI 编程助手测试代码时就是那个已经登录好、有完整会话的「真实用户」——受保护页面、后台管理、个性化 API全都测得动 【免费下载链接】expectExpect tests your agents code in a real browser项目地址: https://gitcode.com/gh_mirrors/expect6/expect创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉