cloudflare/DNSPod DDNS 动态域名设置
<p>所谓动态域名,就是当你的服务器 IP 地址发生变化的时候,自动地修改你在「域名解析服务商」那里的域名记录值</p><p>怎么操作?看官方文档<br>
Use dynamic IP address<br>
Update DNS Record<br>
DNSPod用户API文档</p>
<h1 id="cloudflare">cloudflare</h1>
<pre><code class="language-py">#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# created by hangj(hangj.cnblogs.com)
import http.client
import json
CF_Email="alice@example.com"
CF_Token="0932a09c9a9d"
CF_Zone_ID="a900b9a9d8a9"
CF_API_Key="cb7de90"
headers = {
'Content-Type': "application/json",
'X-Auth-Email': CF_Email,
'X-Auth-Key': CF_API_Key,
'Authorization': 'Bearer ' + CF_Token,
}
def dns_list():
conn = http.client.HTTPSConnection("api.cloudflare.com")
conn.request("GET", f"/client/v4/zones/{CF_Zone_ID}/dns_records", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
# identifier: record id
def dns_detail(identifier):
conn = http.client.HTTPSConnection("api.cloudflare.com")
conn.request("GET", f"/client/v4/zones/{CF_Zone_ID}/dns_records/{identifier}", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
# identifier: record id
def dns_update(identifier, name, IP):
conn = http.client.HTTPSConnection("api.cloudflare.com")
payload = {
"type": "A",
"name": name,
"content": IP,
"ttl": 120,
}
conn.request("PUT", f"/client/v4/zones/{CF_Zone_ID}/dns_records/{identifier}", json.dumps(payload), headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
# 如果 record 原来的 ttl 是 auto, 则此操作无法将 ttl 改成制定的值, 需要先用 dns_update 全量修改该 record
def dns_patch(identifier, IP):
conn = http.client.HTTPSConnection("api.cloudflare.com")
payload = {
"content": IP,
"ttl": 120,
}
conn.request("PATCH", f"/client/v4/zones/{CF_Zone_ID}/dns_records/{identifier}", json.dumps(payload), headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
def main():
# dns_list()
dns_update('09f0ea0', name="example.com", IP="113.90.37.101")
# dns_patch('09f0ea0', IP="113.90.37.101")
# dns_detail('09f0ea0')
if __name__ == '__main__':
main()
#
</code></pre>
<h1 id="dnspod">DNSPod</h1>
<ol>
<li></li>
</ol>
<p>首先需要创建 Token<br>
完整的 API Token 是由 ID,Token 组合而成的,用英文的逗号分割</p>
<p>用刚创建的 API Token 测试一下:</p>
<pre><code>$curl -X POST https://dnsapi.cn/Info.Version -d 'login_token=LOGIN_TOKEN&format=json'
{"status":{"code":"1","message":"4.6","created_at":"2021-06-27 22:04:23"}}
</code></pre>
<p>code 返回 1 表示「操作成功」,下一步就可以修改记录了</p>
<ol start="2">
<li></li>
</ol>
<p>修改 record 用两个 API 就够了:<br>
记录列表 和 更新动态DNS记录</p>
<p><code>$curl -X POST https://dnsapi.cn/Record.List -d 'login_token=LOGIN_TOKEN&format=json&domain_id=12600793&sub_domain=www&record_type=A&offset=0&length=3'</code></p>
<p><code>$curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_token=LOGIN_TOKEN&format=json&domain_id=2317346&record_id=16894439&record_line_id=10%3D0&sub_domain=www'</code></p>
<p>其中 domain_id=123456 可以换成 domain=yourdomain.com,sub_domain= 记得也修改成你自己的记录<br>
从 Record.List 返回消息中,可以找到你所请求的子域名的 record_id,和该记录所指向的 IP 地址,如果该 IP 值跟你将要设置的 IP 相同,就不要再进行下一步了</p>
<blockquote>
<p>如果1小时之内,提交了超过5次没有任何变动的记录修改请求,该记录会被系统锁定1小时,不允许再次修改。比如原记录值已经是 1.1.1.1,新的请求还要求修改为 1.1.1.1。</p>
</blockquote>
<p>Record.Ddns value 改成新的 IP 地址,操作成功之后 TTL 会变成 10,此时才变成了真正的「动态域名」</p>
<h2 id="写成-python-脚本">写成 python 脚本:</h2>
<p>DNSPod 动态域名设置</p>
<p>.</p>
</div>
<div id="MySignature" role="contentinfo">
+V why_null 请备注:from博客园<br><br>
来源:https://www.cnblogs.com/hangj/p/14942691.html
頁:
[1]