前提
家中用的是电信家宽, 通过这个方式获取到非固定的公网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))
})
修改左上角的预设子域名, 比如说改为ip
. 然后Save and Deploy.
假如你的Workers域名为abcd.workers.dev
, 那么现在访问ip.abcd.workers.dev
应该就会返回你当前的IP了. 大功告成~
如果你本身就在Cloudflare上管理自己的域名, 还可以把Worker绑定到自己的子域名上. 具体可以参考这里.
目前稳定使用了两个多月, 很稳.
用来代理上G网,最近发现不能用了
@g.cn jsproxy的作者好像停止维护了
请问可以区分获取ipv4和ipv6吗