python3对接godaddy API,实现自动更改域名解析(DDNS)

这篇具有很好参考价值的文章主要介绍了python3对接godaddy API,实现自动更改域名解析(DDNS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python3对接godaddy API,实现自动更改域名解析(DDNS)

文章开始前,先解释下如下问题:

①什么是域名解析?

域名解析一般是指通过一个域名指向IP地址(A解析),然后我们访问这个域名就可以有直接访问这个IP地址的效果,只需要记住域名即可,无需记住IP。

②什么是DDNS?

DDNS是动态域名解析,一个域名可以根据IP的变化,自动修正解析,无论设备的IP地址怎么变化,这个域名将一直指向对应的设备。

③有什么用?

动态域名解析广泛应用于家庭网络,因为家庭网络的IP地址是动态的,每次重启猫,都会造成IP地址变化。如果想要通过外网稳定访问(不一定是web访问)家里的设备,就需要使用动态域名解析,现在用的比较广泛的是花生壳DDNS。

④为什么要用godaddy?

首先godaddy提供更改域名解析的API,其次godaddy是世界上最大的域名服务商,再次,国内其他的运营商都是不提供API。没有API的情况下,就需要通过定时登录获取cookie,然后再模拟更改域名的网页操作,post数据到服务器。

(因平台原因本文中www即为xxx ,zzz即为zzz,cccc/ccccc即为cccc/ccccc)

前言

 使用python3监控公网地址,然后上报给服务器,服务器再修改反代理/发邮件通知用户。由于最近使用远程桌面比较多,每次远程前都要打开邮箱找最近的一次公网地址变更记录。于是想如果可以实现动态域名解析呢?这样申请一个域名,随时都指向最新的IP地址

目前有的域名解析运营商域名解析,每次post成功数据,解析修改完了,账号就被限制登录了。因为这种post是完全模拟网页操作,可能被检测到了,然后就封号。 

python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

可以直接更改一个域名的所有解析记录

操作步骤: 

一、gou买一个域名

如果你有域名了,那这一步操作可以忽略掉。

详细步骤不说了,很简单,注册一个godaddy账户,然后搜索你想要的域名。遇到申请下来后点DNS,可以看到域名解析的记录:


python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

二、获取API的key

key是用来认证账户身份的,和浏览器的cookie一样,不同的是cookie会过期,而key可以永久不过期。在一段请求中,只要在头部包含这个key,就可以让服务器认定你的身份。

key申请:ccccc://developer.godaddy.com/keys  登录账户,点网页右上角的“cereate new API key”,随便命名,环境选择 production

python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

它会给你一个公钥key,和一个私钥secret,复制下来保存好:

python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

三、文档中更改域名解析put的用法

地址:ccccc://developer.godaddy.com/doc/endpoint/domains#/v1/recordReplace

python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

可以看到,需要提供的参数是domain,还有records。domain就是我们需要修改解析的域名,如本文domain就是xxserver.me。records就是put请求向浏览器发送的参数,里面有data、name、prot等参数。其中要用到的有以下几个参数:

data :解析记录。如将www解析到3.3.3.3,那么data就是3.3.3.3

name :解析名就是所说的域名前缀,如xxx.xxserver.me,name(解析名)就是www,如果为@则表示为空

ttl :域名解析生效时间。域名解析提交后,多久才能生效,当然越短越好,最短600

type:解析类型。 一般用A解析,将一个域名指向一个IP地址。

records的数据以json形式传递。我们试一下填写数据,看官方为我们生成请求的格式:

python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

生成格式:

python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

这是一个linux的curl格式,我们需要把它转成python3格式。从官方生成的请求格式中可以看到,请求类型为put,-H后面为headers(请求头),包含accept、content-type、authorization。其中accept是请求返回接收的数据格式,content-type是发送的数据格式,authorization是用户认证(API秘钥),格式为:sso-key 你的key:你的secret,请求:ccccc://api.godaddy.com/v1/domains/xxserver.me/records (正式环境去掉ote

四、使用python3实现

这里我们实际操作一下,通过API,将xxserver.me这个域名(没有前缀,解析名为@)直接定向到IP地址:5.5.5.5。详细解释已经注释在代码里了

#导入需要的模块import urllib.requestimport json

这里做个示范,读取用户输入

ip_addr = input(str('输入IP地址:'))

定义请求地址

api_url = 'ccccc://api.godaddy.com/v1/domains/xxserver.me/records';

直接做一个函数,传入API地址和更改的IP

def update_NS(api_url,ip_addr):

    #定义http请求头

    head = {}

    #定义服务器返回json数据给我们

    head['Accept'] = 'application/json'

    #定义我们发送的数据为json

    head['Content-Type'] = 'application/json'

    #定义身份认证信息

    head['Authorization'] = 'sso-key xxxxxxxxx你的key xxxxxxxxx:xxxxxxxxxx你的secret xxxxxxxxxx'

    #定义解析记录

    records_a = {

    "data" : ip_addr,

    "name" : "@",

    "ttl" : 600,

    "type" : 'A',

    }

    #下面这两个必须包含,不可更改

    records_NS01 = {

    "data" : "ns07.domaincontrol.com",

    "name" : "@",

    "ttl" : 3600,

    "type" : "NS",

    }

    records_NS02 = {

    "data" : "ns08.domaincontrol.com",

    "name" : "@",

    "ttl" : 3600,

    "type" : "NS",

    }

    #定义需要发送给服务器的数据为put_data这个列表,包含上面的解析记录

    put_data = [records_a,records_NS01,records_NS02]

    #错误处理

    try:

        #定义请求,包含请求地址,请求头,请求方式,并把put_data从json转换为字符串格式,再转换成bytes

        req = urllib.request.Request(api_url,headers = head,data = json.dumps(put_data).encode(),method = "PUT")

        rsp = urllib.request.urlopen(req)

        #根据官方文档我们只需要知道服务器返回码即可,200为成功,这里获取服务器的返回码

        code = rsp.getcode()

        #判断是否成功

        if code == 200:

            print('成功更改域名解析:'+ip_addr)

        else:

            print('更改失败!')

    #原谅我偷懒。官方有400/401/422等错误,这里统一处理了

    except:

        print('错误!')

执行一下函数,并传入请求地址和我们输入的IP

update_NS(api_url,ip_addr)

执行一下看看效果:

python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房
python3对接godaddy API,实现自动更改域名解析(DDNS),服务器小知识,python,开发语言,服务器,服务器机房

 

 

文中的监测公网地址,实现自动更改解析记录。以后就不要翻邮箱找IP啦。文章来源地址https://www.toymoban.com/news/detail-668499.html

到了这里,关于python3对接godaddy API,实现自动更改域名解析(DDNS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python3+Selenium+Chrome实现自动填写WPS表单

      本文通过python3、第三方python库Selenium和谷歌浏览器Chrome,完成WPS表单的自动填写。   python3的安装:略,网上都有教程。   Selenium的安装:在命令行输入 pip3 install selenium 并回车即可完成安装,如果不成功,查找网上教程。   Chrome的安装:略,网上都有教程。   

    2024年02月01日
    浏览(44)
  • 【Python】python3.7默认库安装源地址更改及opencv_python-3.4.2.16环境配置

    python官方各版本下载地址: 国内华为镜像 2、Python 第三方库国内镜像下载地址 python的默认镜像源 默认镜像源:https://pypi.python.org/simple 豆瓣 http://pypi.douban.com/simple/ 阿里云 http://mirrors.aliyun.com/pypi/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple 中国科技大学 https://pypi.mirrors.ust

    2024年02月15日
    浏览(63)
  • Python3,仅仅2段代码,就实现项目代码自动上传及部署,再也不需要Jenkins了。

    小鱼 :你在手动打包,要先rm - rf ,再 go away ?? 小屌丝 :鱼哥,你在说啥嘞, 我可是正经人… 小鱼 :那你干啥,手动打包,没有Jenkins吗,没有自动打包工具吗? 小屌丝 :如果能Jenkins自动发布,我还干啥费劲的执行手动打包。 小鱼 :不能Jenkins?跨域了? 不能安装? 还是

    2024年02月04日
    浏览(48)
  • pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化

    目录 接口自动化测试框架(用例自动生成) 项目说明 技术栈 环境部署 框架流程图与目录结构图及相关说明 1、框架流程图如下 2、代码目录结构图如下 关联详解 函数助手详解 代码设计与功能说明 1、定义运行配置文件 runConfig.yml 2、接口配置文件 apiConfig.ini 3、测试用例的设

    2024年02月09日
    浏览(152)
  • 电商API接口对接电子商务平台实现电商供应链一键对接

    按照商家的技术能力,可以为商家提供多种对接方案: 通过平台提供的API接口对ERP系统进行开发,实现和平台的对接,适用于有专业技术开发能力的商家; 平台统一开发服务系统,由平台人员实施商家ERP与平台的对接,适用于无专业的技术对接能力,有ERP系统且大批量信息

    2024年02月06日
    浏览(60)
  • 基于python实现Web自动化测试(selenium)、API自动化测试(requests)&附学习视频

    另一篇文章 :自动化测试框架(pytest)附学习视频 学习视频,学习文档-白月黑羽 说明: 1紧跟着写的不加/,不加空格-表示同一级别信息,加空格表示后代 2.css定位tag,id,class时分别有不同的标识,其他属性都要加[]进行搜索, Xpath所有属性都要都加【】,tag不用 3. css在使用ta

    2024年02月03日
    浏览(108)
  • 万物皆可集成系列:低代码对接阿里物流API实现快递跟踪

    随着各大电商网购平台的发展,快递业已形成一个规模庞大的产业,据统计,全球快递企业已超过千家,而快递查询对于电商平台而言是最基础的功能之一,通过输入快递单号,不用区分具体是哪家快递公司,即可查询到快递的实时状态。目前的主流方法都是调用第三方快递

    2024年02月16日
    浏览(44)
  • 对接第三方接口鉴权(Spring Boot+Aop+注解实现Api接口签名验证)

    一个web系统,从接口的使用范围也可以分为对内和对外两种,对内的接口主要限于一些我们内部系统的调用,多是通过内网进行调用,往往不用考虑太复杂的鉴权操作。但是,对于对外的接口,我们就不得不重视这个问题,外部接口没有做鉴权的操作就直接发布到互联网,而

    2024年04月29日
    浏览(93)
  • python3+requests+unittest接口自动化测试

    python3 + pycharm编辑器 (该套代码只是简单入门,有兴趣的可以不断后期完善) (1)run.py主运行文件,运行之后可以生成相应的测试报告,并以邮件形式发送; (2)report文件夹存放测试结果报告; (3)unit_test文件夹是存放测试用例(demo.py和test_unittest.py用例用法介绍,实际

    2024年02月09日
    浏览(64)
  • 域的安装、域名的更改以及主机加入域

    目录 1.windows服务器的安装 2.对服务器的域进行安装配置的基本步骤: 3.主机加入到域环境         域名的更改     ①安装服务器的时候选择有桌面版本的,标准版占内存小,database的占内存大     ②在安装vmtool的时候可以直接安装自带的工具,不用导入镜像     ③在用激

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包