Python脚本实现DNSPod DNS动态解析域名
Jun 06, 2016 am 11:22 AM
dns
python
Script
闲暇之余,在家里自建了个服务器,因为用的小区宽带,IP位动态分配。域名解析就是个问题,我的域名一般停放在DNSPod下。DNSPod有提供修改的API,就用Python简单的实现了一下动态解析。这样,就不用安装花生壳了。 废话不说,看代码:
#!/usr/bin/env python #-*- coding:utf-8 -*- import httplib, urllib, urllib2 import time import sys,os import re import json username = 'xxxx' #账号 password = 'xxx' #密码 format = 'json' domain = [u'www.youdomain.com'] #要解析的域名 def get_domain_info(domain): domain_split = domain.split('.') domain_split_len = len(domain_split) maindomain = domain_split[domain_split_len - 2] + '.' + domain_split[domain_split_len - 1] return maindomain,domain params = {'login_email':username,'login_password':password,'format':format} def request(action, params, method = 'POST'): headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/json"} conn = httplib.HTTPSConnection("dnsapi.cn") conn.request(method, '/' + action, urllib.urlencode(params), headers) response = conn.getresponse() data = response.read() conn.close() if response.status == 200: return data else: return None def get_my_domain_id(): data = request('Domain.List',params) data = json.loads(data) domainlist = data.get('domains') domaninfo = {} for d in domainlist: domaninfo[d.get('name')] = d.get('id') return domaninfo def get_my_domain_record_id(domain_id): params['domain_id'] = domain_id data = request('Record.List',params) data = json.loads(data) if data.get('code') == '10': return None domainname = data.get('domain').get('name') record_list = data.get('records') record = {} for r in record_list: if r.get('type') == 'A': key = r.get('name') != '@' and r.get('name') + '.' + domainname or domainname record[key] = {'id':r.get('id'),'value':r.get('value')} return record def changerecord(domain,domain_id,record_id,ip): params['domain_id'] = domain_id params['record_id'] = record_id params['record_type'] = 'A' params['record_line'] = '默认' params['sub_domain'] = domain params['ttl'] = 600 params['value'] = ip data = request('Record.Modify',params) def getip(): url = 'http://iframe.ip138.com/ic.asp' response = urllib2.urlopen(url) text = response.read() ip = re.findall(r'\d+.\d+.\d+.\d+', text) return ip[0] or None def updatedomaininfo(domain): m,sub_m = get_domain_info(domain) domain_id = my_domain_id_list.get(m) record_list = get_my_domain_record_id(domain_id) if record_list == None: return None rocord_info = record_list.get(sub_m) record_ip = rocord_info.get('value') record_id = rocord_info.get('id') return sub_m,record_ip,record_id,domain_id if __name__ == '__main__': my_domain_id_list = get_my_domain_id() try: for dm in domain: domaindata = updatedomaininfo(dm) if domaindata == None: continue dnsdomain,dnsdmainip,record_id,domain_id = domaindata domain_name = dnsdomain.split('.')[0] ip = getip() if ip == dnsdmainip: continue else: changerecord(domain_name,domain_id,record_id,ip) except: pass
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article
Repo: How To Revive Teammates
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
How Long Does It Take To Beat Split Fiction?
3 weeks ago
By DDD
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌

Hot tools Tags

Hot Article
Repo: How To Revive Teammates
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌
How Long Does It Take To Beat Split Fiction?
3 weeks ago
By DDD
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago
By 尊渡假赌尊渡假赌尊渡假赌

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

What are the advantages and disadvantages of templating?

Google AI announces Gemini 1.5 Pro and Gemma 2 for developers

For only $250, Hugging Face's technical director teaches you how to fine-tune Llama 3 step by step

Share several .NET open source AI and LLM related project frameworks

A complete guide to golang function debugging and analysis
