使用Python做一个腾讯域名添加解析脚本
前言
爬虫后台工作暂时告一段落,因为后面都是搬砖的工作。今天想做一个对接云厂商API的例子,有利于日常开发工作,减少工作量,因为回想到之前做过一个有关域名自动切换的需求,其中要自动添加二级域名域名解析,申请证书,添加TXT类型域名解析,然后等待证书下发,下载证书,Git上传证书等等流程的工作,还有自动添加阿里云数据库白名单的需求,都用到了阿里云的API,这几天就来回顾总结一下把。
很不幸在阿里云上我的个人账户下都没有域名了,过期了都没有续费,所以转战腾讯云,腾讯云还有两个域名。
阅读文档
最简单地就是直接看Api Explorer 在线调试地址 console.cloud.tencent.com/api/explore…
找到想要的功能的方法看看先看看必选参数
先看看要有几个必填项,看看代表的是什么的意思,可以看到添加解析记录的接口有四个必填参数
- domain :域名
- RecordType:记录类型,通过 API 记录类型获得,大写英文,比如:A,cname,text
- RecordLine:记录线路,通过 API 记录线路获得,中文,比如:默认
- Value:记录值,这里最常见的就是IP,还有text记录,或者CName,二级域名的等等
回顾需求
我在七牛云中需要申请一个免费的证书那就需要一个DNS验证
需要在域名的所在的DNS管理商那里添加一个CNAME的解析,记录值点击复制才能知道,不能直接显示哦。
确定参数内容
经过测试,除了必须参数还需要加一个SubDomain可选参数 , 这个非常重要是七牛云显示的记录名,但是要去掉后面主域名信息
- domain 就是一级域名,不要什么
www
的在前面,是****.com
这种。 - RecordType 就是CNAME
- RecordLine 使用
默认
线路,对就是默认
- Value 一长串的记录值,七牛云给什么就是什么,不要增删了
- SubDomain 腾讯解释的是二级域名前缀,七牛云这里就是记录名:_1F29BA69C53C61ABE869F447E8C7A17D.test
填在 Api Explorer 上看下实例代码:
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.dnspod.v20210323 import dnspod_client, models
try:
# 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
# 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
cred = credential.Credential("SecretId", "SecretKey")
# 实例化一个http选项,可选的,没有特殊需求可以跳过
httpProfile = HttpProfile()
httpProfile.endpoint = "dnspod.tencentcloudapi.com"
# 实例化一个client选项,可选的,没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化要请求产品的client对象,clientProfile是可选的
client = dnspod_client.DnspodClient(cred, "", clientProfile)
# 实例化一个请求对象,每个接口都会对应一个request对象
req = models.CreateRecordRequest()
params = {
"Domain": "***.space",
"RecordType": "CNAME",
"RecordLine": "默认",
"Value": "46376EA*********F42DA18233.FDB4A9E4FBF***E24D2A59E6.TTDtmStsn1.trust-provider.com",
"SubDomain": "_1F29BA69C53C61ABE869F447E8C7A17D.test"
}
req.from_json_string(json.dumps(params))
# 返回的resp是一个CreateRecordResponse的实例,与请求对象对应
resp = client.CreateRecord(req)
# 输出json格式的字符串回包
print(resp.to_json_string())
except TencentCloudSDKException as err:
print(err)
还需要安装腾讯云基于Python的SDK,这个SDK就是一个python包:
pip install tencentcloud-sdk-python
点击运行看看日志
完美完成需求,然后回到域名解析的控制台验证:
成功!!!
做一个简单的封装
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.dnspod.v20210323 import dnspod_client, models
def set_dns(domain, record_type, value, sub_domain):
try:
# 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
# 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
cred = credential.Credential("*******************", "********************")
# 实例化一个http选项,可选的,没有特殊需求可以跳过
httpProfile = HttpProfile()
httpProfile.endpoint = "dnspod.tencentcloudapi.com"
# 实例化一个client选项,可选的,没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 实例化要请求产品的client对象,clientProfile是可选的
client = dnspod_client.DnspodClient(cred, "", clientProfile)
# 实例化一个请求对象,每个接口都会对应一个request对象
req = models.CreateRecordRequest()
params = {
"Domain": domain,
"RecordType": record_type,
"RecordLine": "默认",
"Value": value,
"SubDomain": sub_domain
}
req.from_json_string(json.dumps(params))
# 返回的resp是一个CreateRecordResponse的实例,与请求对象对应
resp = client.CreateRecord(req)
# 输出json格式的字符串回包
print(resp.to_json_string())
return True
except TencentCloudSDKException as err:
print(err)
return False
在同级文件夹下其他脚本文件调用:
from tencent_domain import set_dns
if __name__ == '__main__':
if set_dns('*****.space','CNAME','46376EACF0E*****18233.FDB4A9E4FBF08******3D2E24D2A59E6.TTDtmStsn1.trust-provider.com','_1F29BA69C53C61ABE869F447E8C7A17D.test'):
print('设置成功')
else:
print('设置失败')
现在就可以直接调用了,简单可靠。
总结
腾讯的相对来说比我之前的用得阿里云的接口要好很多,一下子就调试好了阿里云的调试出来的代码好像是异步的,而且SDK相对混乱,虽然其他教程也很多,但是想找到一个靠谱的非常困难,接下来做一下七牛云的接口解析,进行轮询,然后下载证书。
转载自:https://juejin.cn/post/7129521181211754503