# https://github.com/xhdndmm/ddnsall # src/ddnsall-cloudflare.py import http.client import logging from cloudflare import Cloudflare import time # 配置区 ##只需要配置这里## api_token = "" dns_record_id = "" zone_id = "" name = "" ttl = 3600 dns_type = "" ################ logger = logging.getLogger(__name__) logging.basicConfig(filename='ddnsall.log',format='%(asctime)s - %(levelname)s - %(message)s',level=logging.INFO) client = Cloudflare(api_token=api_token) #更新解析(A) def update_dns_a(ip): response = client.dns.records.update( zone_id=zone_id, dns_record_id=dns_record_id, name=name, type="A", content=ip, ttl=ttl, proxied=False ) return response #更新解析(AAAA) def update_dns_aaaa(ip): response = client.dns.records.update( zone_id=zone_id, dns_record_id=dns_record_id, name=name, type="AAAA", content=ip, ttl=ttl, proxied=False ) return response #获取IP(V4) def get_ip_v4(): conn = http.client.HTTPSConnection("api-ipv4.ip.sb") conn.request("GET", "/ip") response = conn.getresponse() return response.read().decode().strip() #获取IP(v6) def get_ip_v6(): conn = http.client.HTTPSConnection("api-ipv6.ip.sb") conn.request("GET", "/ip") response = conn.getresponse() return response.read().decode().strip() def main(): if dns_type == "A": ip = get_ip_v4() logger.info("获取IP",ip) for i in range(5): try: update_dns_a(ip) logger.info("更改解析成功") break except Exception as e: logger.error("更改解析失败:%s",e) else: if dns_type == "AAAA": ip = get_ip_v6() logger.info("获取IP", ip) for i in range(5): try: update_dns_aaaa(ip) logger.info("更改解析成功") break except Exception as e: logger.error("更改解析失败:%s", e) else: logger.error("解析类型不正确") if __name__ == "__main__": while True: main() time.sleep(3600)