已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 源码

标题: [精]PHP 动态域名解析脚本(基于 Dnspod API)

作者: @Ta

时间: 2021-01-25发布,2021-01-25修改

点击: 7255

GitHub 地址:https://github.com/PrintNow/php-dnspod-ddns

使用 PHP + DNSPod API 实现的 DDNS 动态域名解析,可以解析 A 和 AAAA 记录。
没有则添加记录,有则更新记录

目录结构

.
├── README.md
├── bin    # 存放获取公网 IPv6 二进制文件
│   ├── get_public_ipv6-darwin-10.6-386
│   ├── get_public_ipv6-darwin-10.6-amd64
│   ├── get_public_ipv6-linux-386
│   ├── get_public_ipv6-linux-amd64
│   ├── get_public_ipv6-linux-arm-5
│   ├── get_public_ipv6-linux-arm-6
│   ├── get_public_ipv6-linux-arm-7
│   ├── get_public_ipv6-linux-arm64
│   ├── get_public_ipv6-linux-mips
│   ├── get_public_ipv6-linux-mips64
│   ├── get_public_ipv6-linux-mips64le
│   ├── get_public_ipv6-linux-mipsle
│   ├── get_public_ipv6-windows-4.0-386.exe
│   ├── get_public_ipv6-windows-4.0-amd64.exe
│   └── get_public_ipv6.go
└── run.php    # 程序逻辑代码

🍕 使用方法

  1. 🎁 获取代码
    1. 你可以使用 git 命令克隆本项目 git clone https://github.com/PrintNow/php-dnspod-ddns
    2. 或者直接下载最新版
  2. ✒ 配置 run.php 文件,请根据提示配置第 9、10、14、20、24、32、35 行代码

    DNSPod 的 IDTOKEN 获取方法:https://docs.dnspod.cn/account/5f2d466de8320f1a740d9ff3/

  3. 📁 bin 目录说明,此目录下存放的是 获取公网 IPv6 二进制文件,作用是为了获取公网IPv6,是使用 Golang 编写的,然后使用 xgo 交叉编译成各个操作系统,不同 CPU
    架构的二进制文件。如果你不想使用本方法获取公网 IPv6,你可以自行重新编写(需要有 PHP 编程能力) run.phpget_public_ipv6() 函数

    小提示:你可以只保留符合你当前操作系统的 二进制文件,但是请不要更改其名字

    另外,一般情况下,如果在各大云服务厂商购买的服务器,如果选择的是 Linux 或 Windows,它们的架构基本都是 x64 的,但也不排除一些 Linux 是 arm 架构的,请自我鉴别

🚀 运行

  1. 部署在网站上运行
    访问 http://网址/run.php 即可

  2. 直接运行

cd php-dnspod-ddns

php run.php

get_public_ipv6.go 代码

package main

import (
	"fmt"
	"net"
)

func main() {
    //[2400:3200::1] 是阿里DNS IPv6 地址
	conn, err := net.Dial("udp", "[2400:3200::1]:53")
	if err != nil {
		fmt.Println("Error", err)
	}

	localed := conn.LocalAddr()

	addr, _ := net.ResolveUDPAddr("udp", localed.String())

	ip := addr.IP

	fmt.Println(ip)
}


[隐藏样式|查看源码]


『回复列表(11|隐藏机器人聊天)』

1.
(/@Ta/2021-01-25 15:33//)

2. 都php,为啥获取个ip还用golang,自找烦恼啊。找个仅v6的服务器,打印下remote_addr就好了(如果本机支持v6)。
(/@Ta/2021-01-25 16:23//)

3.

@爱特,他get_public_ipv6.go的代码,不就是和你说的意思一样么,不过是用go写的
红米Note7 高配版(黑色)

(/@Ta/2021-01-25 17:05//)

4. 左右不是人的感觉。
(/@Ta/2021-01-25 17:07//)

5. @无道,几行函数的东西还搞个外部二进制调用,完全没必要。
(/@Ta/2021-01-25 17:18//)

6. image.png

就是一个对接第三方DNS解析,我都已经集成完毕市面上大部分的运营商了
(/@Ta/2021-01-25 17:58//)

8.
我树莓派是不是有救了 https://cway.top
(/@Ta/2021-01-25 23:01//)

9. @爱特,获取公网 IPv6 用这种方法是去年写的,当时是想着稳定且快速获取公网 IPv6,使用第三方 API 稳定性速度不太可靠

所以写这个项目沿用了那种获取 IPv6 的公网方法。

至于 IPv4 的获取为什么调用接口,因为我可以确保我自己的博客在,http://ipv4.nowtool.cn/ 就在。

根据你的建议我还是再写个调用接口获取公网 IPv6,保证轻量。



@胡椒舰长,个人使用 DDNS 的话,主要是考虑方便使用,如果需要额外包依赖就很麻烦。
你这个 SDK 的话适合开发做一个面向公众的 DDNS 服务。我准备想做个这样的,用户只需要执行 curl 命令访问一个接口,就可以直接更新解析记录,很方便。
(/@Ta/2021-01-28 13:36//)

10.

@NowTime,好了,我给转成java了
https://gitee.com/cwayteam/java-dnspod-ddns/
不过我主要用在蒲公英+树莓派上,因为树莓派本地ipV4会经常变动,蒲公英又支持旁路由,因此我在家跟远程都是用192.168这类IP,有这个的话可以树莓派运行程序,我SSH、VNC什么的直接用dnspod域名就行了,感谢给我带来方便了
JAR包下载:java-dnspod-ddns-1.0-SNAPSHOT-jar-with-dependencies.jar(1.74 MB)
https://cway.top

(/@Ta/2021-01-28 18:01//)

11. @hik,阔以阔以
(/@Ta/2021-01-29 15:46//)

12.

测试插件

(/@Ta/2021-01-29 15:54//)

回复需要登录

9月7日 00:34 星期天

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1