吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3126|回复: 12
收起左侧

[Python 转载] 自编某主机商DDNS脚本

[复制链接]
Mete0r 发表于 2021-3-8 17:48
0x00 背景
    准备在家搭建一个服务器,动态公网IP正在申请中,由于要使用DDns对域名动态解析,但是我的域名提供商没有相关的服务,只能自己写个脚本
0x01 实现原理
   由于家里到时候是动态公网IP,IP会变化,这种情况就要修改域名提供商的解析地址:

修改

修改

我理解的ddns就是检测家里的外网IP,然后自动修改这个解析地址就成了,于是就诞生了这个脚本
0x02 脚本实现
  • 用户登陆:比较简单吧主要使用sessions()保存cookie方便后续的操作。
  • 获取解析记录:
    通过抓包可找到接口和参数格式
  • 获取本机IP
    通过curl ip.sb获得
  • 修改记录
    同样是抓包找到接口和参数格式

[Python] 纯文本查看 复制代码
import requests
import os
import time

mysession = requests.session()
headers = {
    'Host': 'api.zhujiwu.com',
    'Content-Length': '46',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Origin': 'http://www.zhujiwu.com',
    'Referer': 'http://www.zhujiwu.com/',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'close'}


def login(username, pwd):
    url = "http://www.zhujiwu.com/www/login.php"
    data = {
        "cmd": "login",
        "username": username,
        "password": pwd
    }
    try:
        r = mysession.post(url=url, data=data, headers=headers)
        if r.json()['response'] == '200':
            print('主机屋账户:【' + username + '】登陆成功!')
            print("当前Cookies:", mysession.cookies)
        else:
            print(r.json())
    except Exception as e:
        print(e)


def get_history(domain):
    url = "http://www.zhujiwu.com/www/domain.php"
    data = {
        "cmd": "jiexi_query",
        "count": "10",
        "page": "1",
        "domainname": domain,
        "title": ""}
    r = mysession.post(url=url, data=data, headers=headers)
    if r.json()['response'] == "200":
        dns_history = r.json()['data']['content']
        print(domain)
        for i in dns_history:
            print(i["id"], i["set_type"], i["title"], i["content"])

        return dns_history
    else:
        return


def get_realIP():
    real_IP = os.popen('curl ip.sb').read()
    print("本机IP:", real_IP)
    return real_IP


def change_dns(domai_id, realIP, domainname):
    url = "http://www.zhujiwu.com/www/domain.php"
    realIP = realIP.replace("\n", "")
    data = {
        'cmd': 'jiexi_modify',
        'ac_id': domai_id,
        'mx': '',
        'content': realIP,
        'ttl': '120'
    }
    r = mysession.post(url=url, data=data, headers=headers)
    if r.json()['response'] == "200":
        print("修改【", domainname, "】解析到【", realIP, "】成功")
    else:
        print("修改【", domainname, "】解析到【", realIP, "】失败")


if __name__ == '__main__':
    username = ''
    pwd = ''
    domain = ""
    login(username, pwd)
    while 1:
        dns_history = get_history(domain)
        realIP = get_realIP().replace("\n", "")
        for i in dns_history:
            if realIP != i["content"]:
                print("检测IP变更,修改解析:", end=" ")
                change_dns(i["id"], realIP, i["title"])
            
        time.sleep(60)

免费评分

参与人数 1吾爱币 +1 收起 理由
yang2716210363 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Mete0r 发表于 2021-3-16 17:21
黑熊 发表于 2021-3-10 20:07
脚本不错,不小心发现楼主用主机WU,我怎么感觉不好用呢~

嗯 生效时间比较大 无奈在那做了备案  懒得到别的地方再做备案了
artedu 发表于 2022-6-4 23:16
准备在家搭建一个服务器,动态公网IP正在申请中,由于要使用DDns对域名动态解析,但是我的域名提供商没有相关的服务,只能自己写个脚本
yucevip 发表于 2021-3-8 18:14
公共ip可以申请吗?如果能人人都不用买服务器了!
fgpgy 发表于 2021-3-8 18:55
yucevip 发表于 2021-3-8 18:14
公共ip可以申请吗?如果能人人都不用买服务器了!

你没80 玩个鸟
有80你可以玩
邪恶海盗 发表于 2021-3-8 19:31
fgpgy 发表于 2021-3-8 18:55
你没80 玩个鸟
有80你可以玩

放心,80都不会开的...
邪恶海盗 发表于 2021-3-8 19:40
话说移不动有公网IP给?
旺仔大馒头 发表于 2021-3-8 20:49
邪恶海盗 发表于 2021-3-8 19:40
话说移不动有公网IP给?

肯定不会。。。。
旺仔大馒头 发表于 2021-3-8 20:51
邪恶海盗 发表于 2021-3-8 19:31
放心,80都不会开的...

端口转发行不行
beijihu999 发表于 2021-3-8 21:51
现在可以申请公网ip啊,就是要转发,不开放80端口
fgpgy 发表于 2021-3-9 08:48
邪恶海盗 发表于 2021-3-8 19:31
放心,80都不会开的...

不过你可以买台服务器 做FRP
黑熊 发表于 2021-3-10 20:07
脚本不错,不小心发现楼主用主机WU,我怎么感觉不好用呢~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表