本文介绍调用 API 获取 DNSPod 域名解析需要的 domain_id
和 record_id
参数的方法,所有的 DNSPod API 请求都必须提供 login_token
作为公共参数以验证用户身份是否合法。
获取 login_token
DNSPOD > 用户中心 > 安全设置 > API Token
使用英文 ,
将 ID 和 Token 连接起来即公共请求参数 login_token
获取 domain_id
curl 'https://dnsapi.cn/Domain.List' -d 'login_token=<your_login_token>&format=json'
根据响应中的 domains
得到域名对应的 domain_id
获取 record_id
curl 'https://dnsapi.cn/Record.List' -d 'login_token=<your_login_token>&format=json&domain_id=<your_domain_id>'
根据响应中的 records
得到子域名记录对应的 record_id
今天刚入手树莓派 3,有种相见恨晚的感觉,接下来又有得折腾了。
ZHETENG #1: 动态 DNS
我相信虽然树莓派足够轻便,但你也不会愿意总把它带在身边,应该还是需要固定在某个地方提供服务的,比如藏在家里的电视柜里——你要拿它做一个机器人或者无人机之类,当我没说,而且这篇文也没必要往下看了,这里仅针对拿树莓派当 Linux 远程主机使用的场景 ;-)
如果家里的宽带没有固定公网 IP,不在家的时候怎么访问就很成问题。过去我在西数 MyBookLive 上的做法是,每天中午 12 点,crontab 执行脚本获取外网 IP,email 给我。low 是 low 了点,但基本上能满足需求,主要考虑 MyBookLive 频繁唤醒几 T 的大硬盘会缩短寿命,所以把脚本执行的周期设得比较长。
现在有了树莓派,没有挂硬盘,只插了个 32G 的 TF 卡,可以随便搞了,最优的方案当然是动态域名解析。于是在 DNSPod 注册了账号,把域名的 nameserver 设置到 DNSPod,再用 python 写了个脚本专门干这个事,代码放在 github 上了,把文档贴一下:
dnspod.py
@author migege
@version 0.0.2
dnspod.py 是基于 DNSPod 服务的动态 DNS 脚本,用于检测 IP 变化并更新至 DNSPod,支持多域名解析。支持 Linux 设备,包括树莓派(Raspberry Pi)。
Prerequisites
- python
- pyyaml
- requests
python 的模块可通过 pip install
命令安装。如果未安装 pip,请先安装 pip。
Installation
安装 git 客户端,通过本命令获取 dnspod.py
git clone https://github.com/migege/dnspod.git dnspod
然后到 dnspod 目录下新建 conf.yaml
文件,根据您的 DNSPod 设置,填入以下内容:
token: <your_api_token>
sub_domains:
<your_first_sub_domain_name>:
domain_id: <your_domain_id>
record_id: <your_record_id>
<your_second_sub_domain_name>:
domain_id: <your_domain_id>
record_id: <your_record_id>
最后设置 crontab 定时任务
*/10 * * * * cd <path_to_dnspod>; /usr/bin/python dnspod.py conf.yaml > /dev/null 2>&1 &
Tips
- */10 表示每 10 分钟执行一次 dnspod.py
- 如果 python 可执行路径不是 /usr/bin/python,请自行替换