• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

Python [DDNS]Pypod —— 使用DNSPod的DDNS动态映射python脚本

SevenC

【Lv:4】

注册
2018/07/04
消息
3
金粒
367金粒
前言
在前些阶段,我买了一个树莓派3b。并打算用其搭一个个人blog。可是这域名解析部分着实难倒我了。根据多方面内容的学习和修改,最终完成了这个脚本。该脚本使用方便,按照注释所说进行修改即可。(但是还是有几个数值的获取需要按照本帖的教程)



Q&A
Q:什么是DDNS/动态解析?A:DDNS即为动态解析。现中国大陆内宽带分为两种,第一种为家用宽带,第二种则为企业宽带。我们在家里一般使用的都是家用宽带,会隔一段时间变换一次外网IP。由于域名解析是固定的,所以这就导致了使用家用电脑开服的人需要隔一段时间解析一次,就算是更换速度再慢,也是一天更换一次。这非常麻烦。DDNS就是当IP为A时,自动为某个域名进行A记录解析到A这个IP,如果IP变换为B,那么也会自动解析到B。
Q:这个脚本的原理是什么?
A:每隔一段时间自动获取当前外网IP,并与上次的记录做对比,如果一样就不做行动,如果不一样就自动更新解析内容。

Q:是不是使用这个脚本还要在DNSPod购买域名啊?
A:不是的,我们可以将我们的域名的DNS服务器地址修改为DNSPod的DNS服务器地址。响应时间为24小时,也就是说24小时左右才可以完成DNS服务器更换
Q:我没有在我的域名管理后台看到修改DNS服务器字样,是不是无法修改了?
A:不是的,我们还可以做NS记录来增加DNSPod的服务。

Q:来自Freenom的免费域名(.tk/.ml/.cf/.gq/...)是否可以使用?
A:当然可以使用!亲测有效!只不过英文看起来麻烦一点而已。

……更多内容待补充……



使用方法
在正式使用之前,我们要先对脚本内容进行修改。对于.py文件的编写,我建议使用notepad++进行修改。(环境:树莓派,UbuntuMATE)

PdO7l9.png

该脚本一共涉及到了七个自设变量,但是有两个已经预先填写好了,基本不用变动。还有两个是用户名及密码。还有一个是记录名,很容易理解。
下面我将为大家解答如何获取domain_id和record_id。
但是在获取这两个值之前,我们要先获取ID和TOKEN。



ID和TOKEN的获取
实际上这两个值并不需要获取,而是需要进行申请,但是过程也是非常简单
你只需要:
登录DNSPod账号 -> 访问https://www.dnspod.cn/console/dashboard -> 点击“用户中心” -> 安全设置 -> API Token -> 创建API Token
(请铭记这两个值,最好截张图。但是千万不要外泄这两个值。)



domain_id的获取
DNSPod官方文档:https://www.dnspod.cn/docs/domains.html#domain-list

  1. curl -X POST https://dnsapi.cn/Domain.List -d ‘login_token=LOGIN_TOKEN&format=json’
复制代码
这行命令我们需要在linux架构下的系统进行操作。(但windows下的cmd应该也是可行的。)
注:此处的“LOGIN_TOKEN”应为ID和TOKEN的组合,组合格式:LOGIN_TOKEN = ID,TOKEN(保留半角逗号)



record_id的获取
  1. curl -X POST https://dnsapi.cn/Record.List -d ‘login_token=LOGIN_TOKEN&format=json&domain_id=xxx’
复制代码
此处的LOGIN_TOKEN和上文一致,domain_id=后面的xxx应该替换为你刚刚获取到的domain_id



注意事项
一、在一切开始之前,应该确保在dnspod处已经可以正常解析你的域名。域名修改DNS服务器后(NS记录)的全球相应时间一般为24小时,稍安勿躁。

二、在进行record_id和domain_id获取前应该确保你绑定的域名已经做了相应的记录。(例如我想把我电脑的IP255.255.255.255解析到www.sevenc.xyz,这个时候我们就要先在dnspod处做一个A记录解析,记录名为www,无论是否解析成功。)

……更多注意事项等待补充……



脚本设置后的使用方法
在设置好几个变量后,我们要将这个内容添加到自启动项目中:
当前环境:树莓派,UbuntuMATE

先在控制台输入:
  1. chmod 777 pypod.py
复制代码
给脚本提权

然后在控制台处输入命令:
  1. sudo nano /etc/rc.local
复制代码
增加自启动项目

然后找到exit 0,在exit 0之前的内容都会在启动时被执行,我们添加:
  1. su pi -c "exec /home/pi/pypod.py"
复制代码
之后Ctrl+O保存文本内容,Ctrl+X退出编辑器

之后在控制台处输入:
  1. sudo reboot
复制代码
重启系统进行测试



适用环境
我测试过Raspbian/UbuntuMATE/Kali/Debian系统,均可稳定运行。今天才拿到Windows10ARM版,还没刷写,就无法测试Windows是否可以使用。
不过我觉得应该所有有Python环境的系统都可以运行吧?_(:з」∠)_



下载地址


提取码:3a33​



golden_apple.gif


Enjoy ;)​






 
最后编辑:

在线会员

  • 8848yyds
  • ender的罗小黑
  • 天尽头
  • xiaobei
  • MrXiaoM
  • pjhuc
  • 毒蘑菇
  • Moz233
  • isuo
  • C ZZ
  • Xhl_laser
  • 小板栗
  • HiTech0926
  • ymz
  • 却冰瑶
  • 椰奶冻冻UwU
后退
顶部 底部