基于 Cloudflare Workers 的多线路出口 IP 检测页。浏览器并行访问三个独立检测点,用于判断当前网络是否存在域名分流。
部署后的地址示例: https://your-worker.your-subdomain.workers.dev
直接查询完整 IP 信息:
curl https://your-worker.your-subdomain.workers.dev只返回 IP 地址:
curl https://your-worker.your-subdomain.workers.dev/ip显式请求 JSON:
curl https://your-worker.your-subdomain.workers.dev/json根路径会根据客户端自动响应:浏览器获得检测网页,curl、wget、HTTPie、Python Requests、Go HTTP Client 和 PowerShell 获得格式化 JSON。/json 和 /ip 不依赖客户端识别。IPv4 或 IPv6 取决于客户端连接该域名时实际使用的协议。
其他人部署后使用自己的 *.workers.dev 默认地址,也可以自行绑定自定义域名;所有请求消耗部署者自己的 Cloudflare 额度。
- 国内线路:IPIP
- 海外线路:当前 Cloudflare Worker
- 全球线路:IP.SB,连接失败时回退到 IPify
页面会展示各线路的出口 IP、位置、运营商和 ASN,并比较成功结果是否一致。
- 检测请求由访问者的浏览器直接发往对应检测点。
- 项目不使用 Cookie、分析脚本或广告脚本。
- Worker 不写入数据库、KV、日志服务或其他持久化存储。
- IPIP、Cloudflare、IP.SB 或 IPify 会收到访问其服务所必需的网络请求;使用本项目即代表访问者接受这些第三方服务各自的隐私政策。
点击按钮,登录 Cloudflare 和 GitHub 后确认仓库名与 Worker 名即可。Cloudflare 会把项目复制到使用者自己的 GitHub 账户,通过 Workers Builds 部署到使用者自己的 Cloudflare 账户;不消耗本项目维护者的额度,也不需要预先手动 Fork。
如果已经 Fork 并修改了项目,把下面地址中的 <你的 GitHub 用户名> 替换为实际用户名后打开,即可部署自己的 Fork:
https://deploy.workers.cloudflare.com/?url=https://github.com/<你的 GitHub 用户名>/IP-Checker
Cloudflare 官方说明:Deploy to Cloudflare buttons。
需要 Node.js 20 或更高版本。克隆仓库并登录 Cloudflare:
git clone https://github.com/0xAAcodeislaw/IP-Checker.git
cd IP-Checker
npx wrangler login
npx wrangler deployWrangler 会同时部署 src/index.js 和 public/ 中的静态资源。
无需安装任何工具:
- 打开
deploy/worker.js,点击 GitHub 的 Raw,复制全部内容。 - 在 Cloudflare 控制台进入 Workers & Pages,创建一个 Worker。
- 点击 Edit code,删除默认代码,粘贴刚才复制的全部代码。
- 点击 Deploy。
这个文件已内嵌 HTML、CSS 和浏览器脚本,不需要绑定静态资源、环境变量或数据库。不能只粘贴 src/index.js,它依赖 Wrangler 配置的静态资源绑定。
- 下载并解压本仓库。
- 在 Cloudflare 控制台进入 Workers & Pages,选择创建 Pages 应用并使用 Drag and drop your files。
- 上传
deploy/pages整个目录,然后点击 Deploy site。
也可以先生成 ZIP:
cd deploy/pages
zip -r ../ip-checker-pages.zip .再上传 deploy/ip-checker-pages.zip。ZIP 根目录必须直接包含:
_worker.js
index.html
app.js
styles.css
_worker.js 使用 Pages Advanced Mode 提供 /api/ip;仅上传 public/ 会缺少这个接口。Cloudflare 官方说明:Direct Upload 和 Advanced Mode。
修改 src/ 或 public/ 后执行:
node scripts/build-deploy-files.mjs该命令会重新生成 deploy/worker.js 和 deploy/pages/。请勿直接修改生成文件。