跨域代理助手隐私政策 / Cross-Origin Proxy Privacy Policy

隐私政策(中文)

生效日期 / Last updated: 2026-09-24

1. 我们收集什么

不收集任何用户数据。跨域代理助手是一款本地优先的开发者工具:它没有账号体系,没有服务器端接口,不接入任何统计、埋点、广告或数据分析服务,也不会向开发者控制的任何远程地址发送信息。

2. 数据存放在哪里

代理规则、凭据变量、环境配置快照、配置恢复点、请求日志、界面偏好(语言、主题、自动关闭时长)全部保存在你浏览器的 chrome.storage.local 中,仅存在于你的设备。卸载扩展即随之清除。导出功能(JSON 配置、HAR 抓包文件、cURL 命令)只会在你主动点击时把文件写到你本地的下载目录。

3. 为什么需要这些权限

权限 用途
storage 在本地保存规则、日志、环境配置与偏好。
declarativeNetRequest 安装网络层重定向规则,实现零 JS 开销的简单 URL 重写。
declarativeNetRequestFeedback 读取规则命中情况,用于日志面板的命中统计展示。
alarms 维持后台脚本存活,并实现代理自动关闭倒计时。
<all_urls> 代理需要能在你的任意前端来源(内网域名、localhost、预发环境)上工作,目标环境由你配置、无法事先枚举。该权限只用于按你自己写下的规则转发请求。

4. 请求与响应内容的处理

扩展会在浏览器内部读取被代理请求的 URL、请求头、请求体与响应内容,用于完成你自己配置的转发、改写、Mock 与日志记录。这些内容只在你的设备内处理,不会上传、不会出售、不会用于任何形式的用户画像或广告。日志默认只保留最近 500 条,可在界面中随时清空。

转发默认不带目标环境的 Cookie。每条规则有一个「携带 Cookie」开关,只有你显式打开,扩展才会以 credentials: 'include' 代发这条请求,让目标环境认得你在它那里的会话;开关状态只存在本地,也不会被上传。

两处为「凭据不跟着文件走」而设计的行为:规则里的 token 等凭据可以写成 {{名称}} 引用,真值单独存在本机的凭据变量表里,于是规则本身、导出的配置、环境快照与配置恢复点从头到尾不含它;日志详情里 Authorization、Cookie 这类头的值默认以打码形态显示(长值保留尾 4 位),需要对着原值排障时再手动展开,那个开关不写入任何存储、关掉抽屉即收回——日志落盘的仍是真实内容,打码只发生在显示这一步。

需要如实告知的一点:日志本身会原样保存这些内容,其中可能包含 Authorization、Cookie 等鉴权头以及请求体里的私密字段,从日志面板复制的 cURL 命令同样是原样的。配置导出与由日志生成的 HAR 导出默认处于「分享模式」,两者都会剔除鉴权头;查询参数里的凭据只有配置导出会剔(它剔除规则里的 token 类查询参数覆盖),HAR 为了保住复现能力,正文与 URL 原样保留。你仍然可以在导出对话框里取消勾选拿到全量内容。数据始终只在你手里,但在分享任何文件或截图之前,请先确认里面没有凭据。

弹窗里的「为当前页创建规则」会先看一眼这一页正在调用哪些接口。它读的是这一页自己的资源计时记录,只取其中 fetch / XHR 请求的来源与次数。每条记录的地址确实被读了一遍——只为把它折成来源(协议 + 主机 + 端口),路径与查询参数在本页就地丢弃,跨 world 传回弹窗的只有「来源」和「次数」这两个值;请求头与正文压根不在这一类记录里,也就无从读取。这份清单只在弹窗里当场渲染, 不写入任何存储,更不会发往任何远端。这一页没有作答时(站点禁用了扩展、扩展刚重载、纯静态页没发过请求),那个按钮退回原本的按页面地址预填。

5. 儿童隐私

本扩展是面向开发者的技术工具,不针对儿童,也不会刻意收集 13 岁以下儿童的任何信息。

6. 政策变更与联系方式

若本政策发生变化,会更新页面顶部的生效日期。如有疑问或建议,请在 GitHub Issues 提出,或邮件联系开发者(Better <924902324@qq.com>)。

Privacy Policy (English)

Effective date / Last updated: 2026-09-24

1. What we collect

Nothing. Cross-Origin Proxy is a local-first developer tool. It has no accounts, no server-side endpoints, and no analytics, telemetry or advertising SDKs. It never sends information to the developer or to any remote service we control.

2. Where your data lives

Proxy rules, credential variables, environment profiles, config restore points, request logs and interface preferences (language, theme, auto-off duration) are stored in chrome.storage.local on your own device, and are removed when you uninstall the extension. Export actions (JSON configuration, HAR 1.2 capture, cURL command) write files to your local downloads folder only when you trigger them.

3. Why each permission is requested

Permission Purpose
storage Save rules, logs, profiles and preferences locally.
declarativeNetRequest Install network-layer redirect rules so simple URL rewrites cost no JavaScript per request.
declarativeNetRequestFeedback Read which rules actually matched, for the hit statistics shown in the log panel.
alarms Keep the background worker alive while proxying, and drive the auto-off countdown.
<all_urls> Proxying must work on whatever origin your frontend runs on (internal domains, localhost, staging); target environments are configured by you and cannot be enumerated in advance. The permission is used only to forward requests according to rules you wrote.

4. Handling of request and response content

To perform the forwarding, rewriting, mocking and logging you configure, the extension reads the URL, headers, body and response content of proxied requests inside the browser. This processing stays on your device: the data is not uploaded, not sold, and not used for profiling or advertising. Logs keep the most recent 500 entries by default and can be cleared at any time from the interface.

Forwarded requests carry no cookies from the target environment by default. Each rule has a Send cookies switch: only when you turn it on does the extension send that request with credentials: 'include', so the target environment sees the session you already have there. The switch itself lives locally and is never uploaded.

Two behaviours exist so credentials stop travelling with files: a token or similar secret can be written in a rule as a {{NAME}} reference whose value lives only in the local credential variable table, so the rule, the exported config, an environment profile and a config restore point never contain it; and the log detail view shows the values of Authorization, Cookie and similar headers masked (a long value keeps its last 4 characters) until you turn on a reveal switch that is written to no storage and resets when the drawer closes. What the log stores remains verbatim — the masking happens only when it is displayed.

One thing stated plainly rather than glossed over: the log stores this content verbatim, which can include Authorization and Cookie headers as well as private fields inside request bodies, and the cURL command copied from the log panel is verbatim too. Config export and the HAR export generated from logs run in share mode by default, and both strip credential headers. Secrets in query parameters are dropped by config export alone — it removes token-like query-parameter overrides from your rules — while the HAR keeps bodies and URLs exactly as captured so the recording still reproduces the problem. You can untick it to export everything. The data stays in your hands, but check that nothing sensitive remains before you share a file or a screenshot.

"Create Rule for This Page" in the popup starts by looking at which APIs the page is actually calling. It reads that page's own resource-timing entries and keeps only the origin and request count of its fetch / XHR calls. Each entry's address is read — but only to collapse it into its origin (scheme, host and port): paths and query strings are dropped inside the page, and just two values, an origin and a count, cross the world boundary into the popup. Headers and bodies are not part of resource-timing entries at all, so there is nothing to read. The resulting list is rendered on the spot: stored nowhere and sent to no remote. When the page cannot answer (the extension is disabled for the site, it was reloaded, or the page simply made no such request), the action falls back to prefilling from the page address as before.

5. Children

This extension is a technical tool for developers, is not directed at children, and does not knowingly collect information from children under 13.

6. Changes and contact

Changes to this policy are reflected in the effective date above. Questions can be raised on GitHub Issues or by emailing the developer (Better <924902324@qq.com>).