通过爬虫获取路由器WAN口IP,检查解析记录与本地结果是否一致,若不一致则通过域名服务商API接口修改记录。本项目使用的域名服务商时PorkBun
Go to file
2022-11-20 22:05:49 +08:00
README/img first commit 2022-04-23 21:18:04 +08:00
ddns_801.py first commit 2022-04-23 21:18:04 +08:00
ddns_win.py first commit 2022-04-23 21:18:04 +08:00
getLocal_IP.py first commit 2022-04-23 21:18:04 +08:00
getRouterIP.py first commit 2022-04-23 21:18:04 +08:00
porkbun_ddns.py 添加筛选条件 2022-11-20 22:05:49 +08:00
README.MD delete bug 2022-04-23 21:20:45 +08:00
router_info.ini first commit 2022-04-23 21:18:04 +08:00

文件结构

ddns_win.py windows106上使用的ddns程序主要执行的脚本判断从dns解析的结果与当前ip是否一致不一致则修改DNS记录

ddns_801.py ubuntu186上使用的ddns程序主要执行的脚本判断从dns解析的结果与当前ip是否一致不一致则修改DNS记录

getLocalIP 通过socket库获取本机IP适用于本机PPPOE拨号的情况

getRouterIP 通过爬虫脚本获取路由器WAN口IP只适用WIS两台路由器

router_info.ini 存放路由器的配置信息

DDNS动态域名解析脚本

域名服务商 与 API接口

安利一个域名服务商porkbun

API接口文档https://porkbun.com/api/json/v3/documentation

通过查阅API接口了解如何通过接口修改域名记录

porkbun是通过json向接口提交参数完成操作

获取目标IP

1. 获取路由器IP

目标获取路由器WAN口IP而非公网出口IP

方法:通过爬虫获取路由器系统信息

环境:必联路由(其实就是极路由系统换皮)

具体实现:

通过浏览器F12开发者工具可以获取以下信息

  1. 每次正确输入密码验证后路由器通过一个密钥stok来验证用户的登录状态因此需要抓取输入密码后返回的stok保持后续操作的可行性

    抓取后可以看出在提交密码时浏览器用GET方式向http://192.168.199.1/cgi-bin/turbo/api/login/login_admin传递参数username和password

    其中192.168.199.1时路由器的管理地址admin时默认的username这个不用修改

    从路由器返回结果可以看到直接返回了stok所以可以直接使用理论上可以直接按开发者工具response看到但是没看到所以下面用python获取返回的结果。

  2. 继续观察浏览器network中的数据包可以发现浏览器通过POST方法向 http://{IP}/cgi-bin/turbo{STOK}/proxy/call 接口传递一个Form data模板来获取路由器信息。

  3. 分析POST结果可以得出只要按照浏览器的格式POST该模板就可以获取路由器地址剔除无关信息后返回结果如下

2. 获取本地IP

直接通过python的socket库就可以获取到

refer

  1. Python 获取本机公网IPv6地址

  2. python获取本机IP地址