用cloudflare workers搭建ip获取服务 - Tinsley's blog

/ 3评 / 7

前提

家中用的是电信家宽, 通过这个方式获取到非固定的公网IP, 大约2-3天变化一次. 由于有相当迫切的外网访问需求, 自用的软路由中相应配置了DDNS以及Server酱提供的公网IP变化推送.

这两个服务都依赖一个获取当前IP地址的接口. 试用过网上搜索得到的几个IP获取服务, 均出现过服务不稳定, 导致DDNS更新A记录失败, 或是错误推送IP地址变化的消息. 网络上公开的免费接口, 总归是容易遇到此类问题, 所以决定自己搭建.

返回当前IP的接口, 如果有VPS, 几行go/python代码实现的简单web服务器, 或者直接配置NGINX都可以实现. 但是购买VPS需要成本, 且便宜VPS的SLA也没有保障.

通过Cloudflare Workers可以更简单地, 零成本地, 甚至更稳定地实现这个功能.


搭建

创建Cloudflare账号, 配置Workers域名之类的简单操作, 这里就不赘述了.

直接Create a Worker :

async function handleRequest(request) {
  const ip = request.headers.get("cf-connecting-ip")
  return new Response(ip,{status: 200})
}
addEventListener('fetch', event => {
  return event.respondWith(handleRequest(event.request))
})

Github地址

修改左上角的预设子域名, 比如说改为ip. 然后Save and Deploy.

假如你的Workers域名为abcd.workers.dev, 那么现在访问ip.abcd.workers.dev应该就会返回你当前的IP了. 大功告成~

如果你本身就在Cloudflare上管理自己的域名, 还可以把Worker绑定到自己的子域名上. 具体可以参考这里.

目前稳定使用了两个多月, 很稳.

https://ip.jimmytinsley.workers.dev

https://ip.jimmytinsley.com

  1. g.cn说道:

    用来代理上G网,最近发现不能用了

  2. 小小白说道:

    请问可以区分获取ipv4和ipv6吗

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注