docs: 只描述当前版本的行为,清掉历史版本对比 2.0 之后只维护这一份版本,读者手上不该再看到"某个旧版本有什么问题、 哪一版修的"这类叙述——对现在装 IPClick 的人没有可操作性,只会让人怀疑 自己装的是不是那个坏版本。 11 个页面共清掉 40 余处,包括 0.2.0 / 0.3 / 0.4 / 0.5.0 / 0.6.0 / 0.7.0 / 1.0.0 / 2.0.0 的版本标记、"此前/原先/曾是"的前后对比、以及指向旧文档的 交叉引用。 清理的口径是**删叙述、不删事实**:每一处都保留"当前代码是怎么做的", 只摘掉时间维度。举例,Cluster 里"入口对转发流量也过限流(2.0.0 之后的 修复)。此前只有本地那一支过闸……配 10 QPS 部三台实际挨 30"改成"本地 和转发都过入口这同一个闸,配 10 QPS 部三台、目标站点挨的还是 10 QPS"—— 原文那个 30 是旧行为的数字,跟着历史一起换掉了。只有纯讲历史、没有任何 当前信息的段落(如集群状态页那三个已删配置键的来历)才整段删除。 改写涉及的事实都对着 src/ 下的源码核实过,顺带修了几处既存问题: - Cluster 写"四条性质"而下面列了 6 条 - API-Reference 里 files 参数重复列了两遍,且两条说法不一致 - Configuration 补上 max_concurrent_rpcs 不得小于 max_workers(会直接 报 ConfigError),此前只说了默认值倍数 - Observability 的"自动迁移"改成说清补的是哪一列、怎么回填
docs: 修正与当前代码不一致的 10 处说法 - CLI.md: 非机密环境变量表补全缺失的 IPCLICK_ 前缀 - Configuration.md: compression 默认值改为 gzip;max_concurrent_streams=0 的注释改为「IPClick 自算,非 gRPC 默认」 - Browser-Rendering.md: max_pages 自动估算改为「内存与核数取最小值」; wait_until/networkidle 与浏览器复用+超时预算两节补充 DrissionPage 不适用的说明 - Cluster.md: 摘除条件统一为「只由 UNAVAILABLE 触发」,消除前后矛盾; 写请求不做故障转移的规则补充节点池耗尽时的例外 - SDK-Usage.md / API-Reference.md: method 改为仅接受 HttpMethod 枚举; 批量请求示例补上显式 uuid= 以配合 request_uuid 对应说明 - Web-Console.md: curl 导入的"变更记录"改为准确归因到 2.0.0 前/后修复的 三个具体 bug - Observability.md: 失败索引条件改为 status_code < 200;auto_vacuum 补充 启动时自动迁移的说明;sqlite_path 默认值去掉 {port};port 占位符段落 消除自相矛盾;补充 in_flight/retries/rejected 计数器的文档 - Security.md: block_metadata_endpoints 改为准确描述链路本地段规则; DrissionPage SSRF 校验的警告改为过去式变更记录;生成凭据的留存时间改为 准确描述(内存缓存直到取走,非"完全不保存") - Troubleshooting.md: run -v 无效 与 单 worker SIGTERM 两节更新为当前行为 均已对照当前 master 分支代码逐条核实。
docs: 修订浏览器渲染、安装、快速开始、首页四页
重构 wiki:去掉历史版本沿革,补上 SDK 与示例两页,改按任务组织 结构 - 侧栏从「上手 / 功能 / 运维 / 参考」改成「开始 / 用法 / 能力 / 运维 / 参考」, 并去掉会随发版腐烂的版本号角标。 - 新增 **SDK-Usage**(445 行)。README 一直链到这一页,但它此前**根本不存在**—— 用 Python 发请求这件最常见的事没有落脚处。内容涵盖三种建客户端的方式、 请求头/Cookie、响应与 trace、错误边界、适配器、代理、浏览器渲染、流式、 断点续传、批量、异步、复用与关闭。 - 新增 **Recipes**(342 行):按场景可直接抄的代码——抓 SPA、并发抓一批、带上限、 带登录态、大文件续传、边下边处理、换出口 IP、处理 403、把 4xx 当正常结果、 查失败请求、shell/CI 用法,以及一个完整的爬取骨架。 - Home 改成按任务导航:「我想做的事,在哪一页」四张表 + 按角色的阅读路径, 替掉原来的版本更新说明。 - 13 个页面补「下一步」导航,逐页手写而不是套模板。 去掉历史版本沿革(用户要求:那些版本已不存在) - 清掉全部 0.3 / 0.4 / 0.5.0 / 0.6.0 / 0.7.0 叙述与 CHANGELOG 链接(仓库里根本 没有 CHANGELOG.md,那些链接全是死的)。原先大量段落写成「0.3 是 X,0.4 改成 Y」, 一律改写成直接陈述现在的行为——需要保留的设计理由改成「为什么不那样做」。 修掉与代码对不上的地方 - **端口全错**:全站 36 处仍是旧默认值(gRPC 9527 / Web 9530),现值是 gRPC **9528** / Web **9527**。照抄旧值连不上,且报错和端口无关。 - **`from ipclick import ClusterDownloader` 会 ImportError**(它不在顶层导出)。 API-Reference 的第一个代码块和 Cluster 各有一处,改为从 `ipclick.cluster.client` 导入,并说明多数情况该用 `create_client()`。 - **`Downloader` 签名不对**:文档写成 `host="127.0.0.1", port=9528`,实际五个参数 默认都是 `None`(含义是「去配置里取」)。 - **`ResumeResult.resumed` 字段不存在**,实际是 `restarts`(Quick-Start)。 - **主题写成三态**(跟随系统/亮/暗),实际是两态,且刻意没有「跟随系统」。 - **可编辑配置项写成 7 组**,实际 75 项 12 组,按 `web/editable.py` 重写整表。 - **CLI 命令数写成 20**,实际 11 个顶层 / 19 条叶子命令。 - **`[playwright]` 版本区间的说明过时**:现在靠 `[tool.uv].conflicts` 声明互斥, 两个 extra 各解一份依赖,playwright 已能跟到 >=1.62.0。 - **`[CLUSTER.status_page]` 这个配置节不存在**,状态页只能在代码里起。 - Development 整页重写:uv 分组、不能用 `--all-extras`、没有 pytest-cov、 五个 CI job、Python 3.11/3.14 矩阵、430 个测试、按重构后的真实目录重写结构。 - 两处标题改名以生成干净锚点(emoji 开头和含 —— 的标题会生成畸形 anchor)。 校验:18 个页面的全部内部链接与锚点逐一解析通过;所有代码块里的 `from ipclick...` 导入都在真实环境里 import 过一遍,无死链、无死导入。
docs: 同步到 0.4.0 Web-Console - 五个页面 -> 六个,新增「组件」页(装 / 卸可选组件、两级安装状态、六条实现约束) - 布局与三态主题;请求流改局部刷新(不再是 <meta refresh> 整页重载) - 试一试:从 curl 导入、指定目标节点 - 配置:生成凭据(只显示一次、区分本机独有与全集群共享) - 节点:保存即生效(删掉「改完需要重启」)、测试连接的三种结论 - 安全:CSP 的 script-src 改用脚本哈希;说明为什么 0.4 开始有 JS - API 表补 /api/components/*、/api/nodes/probe、/fragment/* Installation / Adapters / Browser-Rendering - 可以从 Web 端装;extras 版本区间与 camoufox 钉 playwright<1.61 的约束 - 装没装改为现查(find_spec),卸载也能反映;没装的不再从下拉框消失 Configuration / Observability / Cluster - {port} 占位符与 --web-port;[LOG].output 的三种写法(含 0.3 那个目录 bug) - 节点热更新、Ping RPC 与测试连接、点名目标节点 Troubleshooting / Performance / Security / API / Home - 新增四条排查项:装了依赖还显示未装、多实例混写、日志跑错目录、节点热更新 - 批量 O(N²) -> O(N) 与共用线程池 - 放开装依赖后的边界说明 - TaskService 补第四个方法 Ping(含 PingResp 各字段与 UNIMPLEMENTED 的含义) - 版本号 0.3.0 -> 0.4.0 全部 90 条 wiki 内部链接与锚点已按 github-slugger 规则校验通过。
wiki: Configuration / Adapters / Browser-Rendering