基于 Cloudflare Workers 的动态 IP 签名档服务,展示访问者的 IP 地址、地理位置、日期、天气、操作系统和浏览器信息。带有看板娘和温暖背景的精美 SVG 签名档,无需服务器,全球边缘网络加速,零运维。
- IP 地址 — 通过 Cloudflare 边缘网络获取真实访客 IP(完整展示)
- 地理位置 — 使用 Cloudflare 内置
request.cf数据,无需第三方 IP 库 - 日期星期 — 自动显示当前日期和星期
- 天气信息 — 基于 Open-Meteo 免费 API,无需密钥
- 操作系统识别 — 支持 Windows / macOS / iOS / Android / Linux / HarmonyOS
- 浏览器识别 — 支持 Chrome / Firefox / Safari / Edge / Opera / 微信 / QQ 等
- SVG 签名档 — 矢量格式,534×256 分辨率,带看板娘插画和动态下划线
- JSON API — 提供结构化数据接口,方便二次开发
签名档包含以下元素:
- 📍 访问者地区信息
- 📅 日期和星期
- 🌐 完整 IP 地址 + 天气
- 💻 操作系统信息
- 🖥️ 浏览器信息
- 👧 右侧看板娘插画
- 🎨 温暖面包店背景 + 动态长度下划线
ip-info/
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions 自动部署
├── public/
│ ├── msyh.ttf # 微软雅黑字体(静态资源)
│ ├── kbn.png # 看板娘图片
│ └── bg.jpg # 背景图片
├── src/
│ ├── index.js # Worker 入口,路由与请求处理
│ ├── generator.js # 信息采集与 SVG / HTML 生成
│ ├── ua-parser.js # User-Agent 解析(操作系统 + 浏览器)
│ └── weather.js # 天气获取(Open-Meteo API)
├── wrangler.jsonc # Wrangler 配置
├── package.json # 项目依赖与脚本
└── .gitignore
- Node.js 22+
- npm 10+
npm install
npm run dev本地服务启动后访问 http://localhost:8787 即可查看效果。
# 首次使用需登录
npx wrangler login
# 部署到全球边缘网络
npm run deploy部署成功后会得到一个 https://ip-info.<你的子域>.workers.dev 的地址。
项目已配置 GitHub Actions 自动部署工作流。推送到 main 或 master 分支时自动触发部署。
配置步骤:
- 在 GitHub 仓库中进入 Settings → Secrets and variables → Actions
- 添加 Repository secret:
- Name:
CLOUDFLARE_API_TOKEN - Value: 你的 Cloudflare API Token
- Name:
获取 API Token:
- 登录 Cloudflare Dashboard
- 点击 Create Token
- 使用 Edit Cloudflare Workers 模板
- 复制生成的 Token(仅显示一次)
配置完成后,每次推送代码将自动部署到 Cloudflare Workers。
| 端点 | 说明 |
|---|---|
GET / |
完整 HTML 页面,展示所有信息 + 签名档预览 |
GET /svg |
SVG 签名档图片,可直接用 <img> 引用 |
GET /svg?s=自定义文字 |
带自定义文字的签名档 |
GET /api/info |
JSON 接口,返回所有结构化数据 |
GET /health |
健康检查 |
<!-- 基础签名档 -->
<img src="https://ip-info.<你的子域>.workers.dev/svg" alt="IP签名档" />
<!-- 带自定义文字 -->
<img src="https://ip-info.<你的子域>.workers.dev/svg?s=欢迎光临" alt="IP签名档" />curl https://ip-info.<你的子域>.workers.dev/api/info{
"ip": "203.0.113.42",
"location": "CN-Sichuan-Dazhou",
"country": "CN",
"region": "Sichuan",
"city": "Dazhou",
"os": "Windows 10/11",
"browser": "Chrome(120.0.0.0)",
"dateStr": "2026年8月6日",
"weekStr": "星期四",
"weather": {
"temperature": 32,
"description": "晴",
"text": "晴 32℃"
},
"timestamp": "2026-08-06T08:41:54.970Z"
}| 组件 | 技术 |
|---|---|
| 运行时 | Cloudflare Workers |
| 图片格式 | SVG(矢量,支持中文字体) |
| IP / 地理定位 | Cloudflare request.cf 内置数据 |
| 天气数据 | Open-Meteo 免费 API |
| UA 解析 | 自研轻量正则解析器 |
| 配置 | Wrangler + wrangler.jsonc |
| 静态资源 | Workers Static Assets(字体 / 图片) |
| 自动部署 | GitHub Actions |
MIT