Skip to content
元气码农少女酱 edited this page Aug 20, 2026 · 4 revisions

IPClick

一个 gRPC 分布式 HTTP 请求代理。 把「发 HTTP 请求」变成一个可以跨机器调度的服务: 调用方说要抓哪个网址,服务端用合适的适配器去抓——普通 HTTP、带 TLS 指纹伪装的、 或者真起一个浏览器把 JS 跑完再取 DOM。

from ipclick import Downloader

with Downloader() as d:
    resp = d.get("https://example.com")
    print(resp.status_code, len(resp.content))
    print(resp.trace.node_id, resp.trace.adapter, resp.trace.attempts)

三分钟跑起来

pip install ipclick          # 17 个包,只带默认适配器
ipclick init                 # 生成 ipclick.toml 与 .env(600 权限)
ipclick run -w               # 起服务 + Web 管理端

控制台会打出 Web 管理端地址与登录信息。另开一个终端:

ipclick fetch https://example.com --json

逐步说明见 快速开始

我想做的事,在哪一页

发请求

用 Python 发请求 SDK 用法
用命令行 / 在脚本里发请求 命令行
在网页上点一下就发一次 Web 管理端 → 试一试
照着现成例子改 示例集

抓不到想要的内容

页面内容要 JS 跑完才有 浏览器渲染
目标站点认 TLS 指纹 默认适配器 curl_cffi 自带伪装,见适配器
要 HTTP/2 或 HTTP/3 适配器 → niquests
需要在页面里点按钮、填表单 在页面里执行 JS
要下大文件 / 断点续传 SDK 用法 → 流式与续传

要多台机器 / 换出口 IP

从多台机器的出口 IP 发请求 集群
走代理换 IP SDK 用法 → 代理
指定某个请求打到哪台机器 集群 → 点名目标节点

线上运维

刚才那个请求为什么 403 链路记录
不想把对方站点打挂 按 host 限流
服务端不能被当成内网跳板 SSRF 防护
吞吐上不去 性能与容量
出问题了,从哪查 故障排查
某个配置项是干嘛的 配置体系

其它

想在网页上把可选组件装上 Web 管理端 → 组件
让 AI 代理会用 IPClick 命令行 → 给 AI 用
想改这个项目 开发与发布
类型与签名 API 参考

设计上的几条硬规矩

这些规矩贯穿整个代码库,读代码或排查问题前知道它们会省很多事:

  1. 配置错误必须报错,绝不静默降级。 mode = "cluster" 却没配节点 → 直接失败, 而不是悄悄退回单机。静默降级的问题会在你最需要它工作的时候才暴露。
  2. 只有瞬时传输故障才返回 status_code == -1 参数写错、鉴权失败、依赖没装 一律抛异常。把用法错误伪装成网络故障会让人查错方向。
  3. 不做无谓的重试。 参数错误、脚本语法错、服务端能力缺失,重试多少次都是同样的 结果,只会拖慢失败反馈。见故障排查
  4. 机密不进配置文件。 令牌、密码、集群密钥走 .env 或环境变量;写进 ipclick.toml 仍然生效,但启动时会点名提醒。见安全
  5. 可观测性数据绝不反压业务。 链路记录写盘跟不上就丢弃并计数, 丢了要能看见——静默丢弃比丢弃更糟。

按角色的阅读路径

Clone this wiki locally