ip = socket.gethostbyname(socket.gethostname()) 获取当前公网 IP
url = https://alidns.aliyuncs.com/?Action=UpdateDomainRecord&...
requests.get(url, params={RR: www, Type: A, Value: ip})
✅ 优点:
成本低(很多免费服务可用)
配置简单
适合个人、测试、小型项目
❌ 缺点:
存在短暂延迟(DNS 生效可能需几分钟)
免费服务可能限制频率或稳定性
✅ 方案 2:使用反向代理 + 内网穿透(如 frp / ngrok / ZeroTier)
将服务器部署在内网,通过反向代理工具将请求转发到公网。
这些工具通常提供固定域名或端口,即使本地 IP 变化也不影响访问。
📌 示例:frp 配置
ini
服务端(公网机器)
[common]
bind_port = 7000
客户端(动态 IP 机器)
[web]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = myserver.65.hk
✅ 优点:
不依赖公网 IP
支持 HTTPS、TCP、UDP 等多种协议
适合家庭服务器、开发调试
❌ 缺点:
依赖第三方服务器(如 ngrok),可能收费或限速
增加一层转发,性能略有损耗
✅ 方案 3:购买“动态 IP + 固定域名”套餐(部分 ISP 提供)
一些宽带运营商(如中国电信、中国移动部分地区)提供“动态 IP + 固定域名”服务。
本质还是 DDNS,但集成在路由器或光猫中,更易用。