# IP Proxy 模块说明(Ultra1 集成版) ## 1. 模块定位 `IP Proxy` 是扩展内的网络出口接管模块,用于把自动化流程的页面访问链路切到指定代理节点,并在侧边栏内可视化展示当前代理与出口状态。 本模块目标是解决三件事: 1. 在扩展内统一配置和切换代理,而不是依赖浏览器外部全局代理。 2. 对“代理已配置但未真正接管/未真正出站”的情况进行显式诊断。 3. 在自动化流程中可控地切换出口,降低单节点波动影响。 ## 2. 代码结构 ### 2.1 Background(核心逻辑) - `background/ip-proxy-core.js` - 代理池解析与运行态管理 - 应用/清除代理配置 - 出口探测与状态诊断 - `SYNC/NEXT/CHANGE/PROBE` 主流程 - `background/ip-proxy-provider-711proxy.js` - Provider 级别参数处理(当前重点是 711 账号串 token 规则) - `background/message-router.js` - 暴露消息接口: - `REFRESH_IP_PROXY_POOL` - `SWITCH_IP_PROXY` - `CHANGE_IP_PROXY_EXIT` - `PROBE_IP_PROXY_EXIT` - `background.js` - 持久化字段定义与默认值 - 启动恢复时的代理状态接管 - 自动运行成功后的代理切换钩子 ### 2.2 Sidepanel(界面与交互) - `sidepanel/ip-proxy-panel.js` - 代理 UI 状态渲染 - 按钮行为(同步/下一条/Change/检测出口) - 运行态文案和诊断详情展示 - 711 账号参数双向同步(`session/sessTime/region`) - `sidepanel/ip-proxy-provider-711proxy.js` - Provider 级输入辅助(地区推断) - `sidepanel/sidepanel.html` - 代理区块 UI - `sidepanel/sidepanel.css` - 代理区块样式 - `sidepanel/sidepanel.js` - 与设置保存流整合、事件绑定 ## 3. 当前功能范围(本 PR) ### 3.1 基础能力 1. 启用/禁用代理接管(PAC + 认证回填)。 2. 固定账号模式(Host/Port/Username/Password/Region)。 3. 出口探测与状态卡(当前代理、当前出口、诊断详情)。 4. 四个动作按钮: - `同步`:应用当前配置并刷新运行态 - `下一条`:切到下一个可用节点 - `Change`:保持 session 的前提下重绑并换出口(711) - `检测出口`:只做出口复测,不改节点 5. `检查IP`:打开 `https://ipinfo.io/what-is-my-ip` ### 3.2 711 账号串参数联动 支持从用户名中识别并回填: - `session-xxxx` - `sessTime-xx`(兼容 `life-xx`) - `region-XX` 支持从表单回写到用户名: - 修改会话值 -> 更新 `session-*` - 修改时长 -> 更新 `sessTime-*` - 修改地区 -> 更新 `region-*` ### 3.3 同步后的自动复测 为避免“同步后还要手动点检测出口”: - `同步/下一条/Change` 执行完成后,自动追加一次静默 `检测出口`。 ## 4. 当前发布策略(为了稳定) 本 PR 是“先可用,再扩展”的第一阶段: 1. 服务商主路径按 `711` 优先。 2. `API 模式`在 UI 中保留但禁用(暂未开放)。 3. `账号列表模式`目前关闭(防止多条目与鉴权缓存复用带来的不稳定)。 对应开关位于: - `sidepanel/sidepanel.js`:`IP_PROXY_API_MODE_ENABLED = false` - `sidepanel/sidepanel.js`:`IP_PROXY_ACCOUNT_LIST_ENABLED = false` - `background.js`:`IP_PROXY_ACCOUNT_LIST_ENABLED = false` ## 5. 使用方式(操作步骤) 1. 打开侧边栏 `IP代理` 开关。 2. 选择账号模式,填写: - Host - Port - Username - Password - Region(可选) 3. 点击 `同步`。 4. 查看状态卡: - 当前代理 - 当前出口 - 是否有校验提示 5. 需要换出口时: - 711 + session 场景优先用 `Change` - 或使用 `下一条` 6. 需要手动复核时点击 `检测出口` 或 `检查IP`。 ## 6. 已知限制 1. 某些代理链路不会返回标准 `407`,扩展无法触发认证回填,这类链路可能不稳定。 2. 地区“期望值”和“实际出口”不一致时,模块会保留接管并提示校验告警(不直接判定全失败)。 3. 不同探测源(页面探测/后台兜底)在网络波动时可能短时出现差异,状态卡会显示来源与诊断。 ## 7. 回归建议 建议至少覆盖以下场景: 1. 固定账号:启用 -> 同步 -> 出口检测成功。 2. 固定账号:`session/sessTime/region` 双向同步正确。 3. 固定账号:`同步/下一条/Change` 后无需手动点检测即可刷新出口状态。 4. 非标准链路失败时,诊断信息可读且不误报“已接管成功”。