心梦后花园

Back

最近使用 AI 写了一个 IP 查询的工具,类似于 cip.cc,部署在 Cloudflare Workers 上,支持多数据源对比展示。这个工具不仅可以通过网页访问,还支持命令行通过 curl 方式查询当前 IP。现在的访问网址是 https://ip.liyp.cc

下面介绍下项目完整的实现代码,方便自己部署到 Cloudflare 账号中。

功能特性#

  • 多数据源聚合查验:集成了 IP-API.comMir6.comIP.SB 多个接口,因为发现IP-API.com 的结果不准确,所以加入了多个数据源进行对比。
  • 全平台支持
    • 网页端浏览器访问:现代化的 UI 界面,卡片化展示各接口返回的地理坐标、ISP、组织等信息。
    • 终端/CLI 访问:精准识别 curlWget 请求,返回简洁的纯文本格式,还支持返回JSON格式。
  • 国际化(i18n):根据请求的 Accept-Language 自动切换中英双语展示。
  • 零成本高可用:依托于 Cloudflare Workers 边缘计算网络,无需服务器,高并发且完全免费。

查询本机IP 查询指定IP

部署教程#

  1. 登录 Cloudflare Dashboard,进入 Workers & Pages
  2. 点击 Create application -> Create Worker,随便取一个名字并部署初始代码。
  3. 点击进入创建好的 Worker,选择 Edit code
  4. 将下面的完整代码复制并替换掉原有代码,点击 Deploy 保存部署。
  5. (可选)在 Worker 的 Settings -> Triggers 中绑定自定义域名(如 ip.yourdomain.com)。

完整代码#

这是一个单文件项目,包含所有逻辑、HTML/CSS UI渲染以及国际化字典:

使用方法#

部署完成后,你可以通过不同的方式来调用这个服务:

1. 浏览器访问: 直接在浏览器中打开你的域名,在搜索框输入任意 IP 即可查询,不输入则默认查询本机 IP。

2. 终端命令请求: 工具会自动识别 User-Agent,如果在终端使用 curl 请求,会输出格式友好的纯文本内容:

可能遇到的问题:#

因为大部分使用Cloudflare的可能打开了SSL的严格模式,会导致curl请求自动301重定向,这时候需要关闭SSL的严格模式,或者使用-k参数来忽略SSL证书验证,为了维持其他网站正常SSL,需要使用规则让其他网站自动跳转HTTPS网站,下面写一下具体流程:

1. 关闭全局的“始终使用HTTPS”:

进入 Cloudflare 控制台:

SSL/TLS → 边缘证书 (Edge Certificates) → 关闭 “始终使用 HTTPS (Always Use HTTPS)”

2. 为其他子域名重新启用 HTTPS 跳转:

因为关掉全局开关后,你的其他子域名也会失去 HTTPS 强制跳转。你需要用 Redirect Rules(重定向规则) 来给除 ip.liyp.cc 之外的域名重新加上 HTTPS 跳转:

进入:规则 (Rules) → 创建规则 → 重定向规则 (Redirect Rules) → 创建规则

选择 自定义筛选表达式 (Custom filter expression)

点切换到 表达式编辑器 (Expression Editor),粘贴:

(not ssl and http.host ne "ip.liyp.cc")
plaintext

下方”Then”部分配置:

字段
类型动态 (Dynamic)
目标 URLconcat(“https://”, http.host, http.request.uri.path)
状态码301
保留查询字符串✅ 开启

这样的效果:

✅ curl ip.liyp.cc → HTTP 请求直达 Worker,正常返回

✅ curl https://ip.liyp.cc → HTTPS 也正常

http://liyp.cc → 301 跳转到 https://liyp.cc

✅ 其他所有子域名的 HTTP 请求仍会强制跳转 HTTPS

如下图:

cf-workers-redirect-rules

使用 Cloudflare Workers 编写这样的小工具不仅省去了服务器维护成本,响应速度也极快。配合 AI 辅助编程,我们可以快速把日常浮现的小需求落地为实用工具。

基于 Cloudflare Workers 搭建多源 IP 查询工具
https://www.liyp.cc/blog/build-ip-query-tool-with-cloudflare-workers
Author 万古一梦
Published at 2026年2月23日
Comment seems to stuck. Try to refresh?✨