此方法适用于通过路由器拨号上网的宽带,若宽带通过光猫拨号上网则需要将光猫改为桥接模式并在路由器中配置宽带账号和密码

测试环境:

路由器:TP-LINK TL-WDR7800千兆版

硬件版本:1.0

软件版本:1.0.2

路由器内网IP地址:192.168.0.1

一、准备

确保系统当中安装了python3,且在命令提示符中输入python --version返回的是python3而不是python2

使用pip install requests安装requests库

使用Chrome或Firefox自带的调试工具抓包,找到正常登录路由器时提交的密文



用密文替换python脚本中的xxxxxxxxxxxxxxx(密文长度介于15~32之间,以实际抓包结果为准)

用路由器的实际内网IP替换脚本中的192.168.0.1

二、使用

python脚本如下:

  1. import requests,json
  2. from time import sleep
  3. routeurl = "http://192.168.0.1/"
  4. ipurl = "https://jsonip.com/"
  5. logindata = '''{"method":"do","login":{"password":"xxxxxxxxxxxxxxx"}}'''
  6. command = '''{"network":{"change_wan_status":{"proto":"pppoe","operate":"disconnect"}},"method":"do"}'''
  7. headers = {
  8. "Content-Type":"application/json; charset=UTF-8",
  9. }
  10. state = 0
  11. try:
  12. res=requests.get(url=ipurl)
  13. except BaseException as e:
  14. print("Cannot connect to Internet.Exiting...")
  15. sleep(3)
  16. exit()
  17. IP1=json.loads(res.text)["ip"]
  18. print("Current IP is "+IP1)
  19. while(state!=1):
  20. print("Changing IP..."+"\n")
  21. res=requests.post(url=routeurl,headers=headers,data=logindata)
  22. if (res.status_code == 401) :
  23. print("Password is incorrect. Exiting...")
  24. break
  25. '''print(res)'''
  26. '''print(res.text)'''
  27. token=json.loads(res.text)["stok"]
  28. '''print(token)'''
  29. res=requests.post(url=routeurl+"stok="+token+"/ds",headers=headers,data=command)
  30. '''print(res)'''
  31. '''print(res.text)'''
  32. print("Command has been sent")
  33. print("Waiting for Internet connection..."+"\n")
  34. while True:
  35. print("Connecting...")
  36. try:
  37. res=requests.get(url=ipurl,timeout=10)
  38. except BaseException as e:
  39. continue
  40. break
  41. print("Connected"+"\n")
  42. IP2=json.loads(res.text)["ip"]
  43. print("Current IP is "+IP2)
  44. if (IP2 != IP1):
  45. state = 1
  46. print("\n"+"IP has changed")
  47. else:
  48. state = -1
  49. print("\n"+"Failed. Retrying...")
  50. print("------------")
  51. sleep(3)

将以上内容保存为.py文件并通过python执行即可

若想直接运行,可新建一个.bat文件,输入以下内容并保存

  1. @python "C:\1.py"

其中英文双引号之间的内容用.py文件的路径代替

之后双击该.bat文件即可

2019.08.22

更改路由器的外网IP的更多相关文章

  1. 更新TP-LINK路由器的外网IP到花生壳动态IP解析

    ------------------------------------------------------------------------------- 以下内容可能还是存在问题,等之后有时间再 ...

  2. C#获取路由器外网IP,MAC地址

    C#实现的获取路由器MAC地址,路由器外网地址.对于要获取路由器MAC地址,一定需要知道路由器web管理系统的用户名和密码.至于获取路由器的外网IP地址,可以不需要知道路由器web管理系统的用户名和密 ...

  3. 网吧局域网里的设置外网IP地址、设置内网IP地址、限制内网速度和路由器共享

    现在啊,网吧的需求越来越高,同时在经济比较充裕的情况下,作为网吧的老板可能希望打造全千兆的网吧,让每个进入网吧的人都能充分体验高速的感觉,当然更重要的是在同行竞争中处于上游,特别是对网络游戏爱好者的吸 ...

  4. Windows Azure 设置虚拟机静态外网IP地址

    官方说法叫做“虚拟公共IP地址保留”,为容易理解,我们称之为静态外网IP地址. 如果在国内使用国际版Windows Azure服务时强烈推荐为虚拟机设置IP地址保留. 由于Windows Azure ...

  5. 【不积跬步,无以致千里】linux下如何查看自己的外网IP

    局域网的服务器是通过ADSL路由器连接外网的,但ADSL是从ISP运营商那儿通过动态获得IP的,那么我怎么知道自己的外网地址是多少呢?今天得到几个办法:curl -s http://whatismyi ...

  6. [转]用apache反向代理解决单外网ip对应内网多个web主机的问题

    用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...

  7. 首页技术支持常见问题宽带外网IP显示为10、100、172开头,没有公网IP,如何解决?

    1.表现形式: 路由器拨号获得的公网IP变成了一个以100开头的IP(或者是10.172开头),而打开ip138.com查询却又是另外一个IP,将100开头的这个IP到百度去查询下则显示所在区域为美国 ...

  8. 内网IP外网IP的关联及访问互联网原理

    首先解释一下“内网”与“外网”的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的.但两个局域网内的内网IP可以有相同的. 外网:即互联网 ...

  9. Android 获得本地IP地址、外网IP地址、本设备网络状态信息、本地Mac地址

    本地内网IP和外网IP的区别: 根据我的经验一台电脑需要两个ip才可以上网,一个是本地的内网ip 一个是外网的ip 本地的ip 一般是192.168.1.2这种样子  只要在不同的路由器上可以重复 外 ...

随机推荐

  1. ruby on rails测试

    Rspec测试 Rspec(基本测试) 安装 group :development, :test do gem 'rspec-rails', '~> 3.5' end rails generat ...

  2. 9月最新184道阿里、百度、腾讯、头条Java面试题合集

    阿里面试题 1. 如何实现一个高效的单向链表逆序输出? 2. 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 3. 给定一个二叉搜索树(BST),找到树中第 ...

  3. webpack实践(三)- html-webpack-plugin

    webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice <webpack实践(一)- 先入个门> < ...

  4. Ubuntu 18.04 美化配置

    网上很多关于Ubuntu 18.04 美化的配置,但每个人遇见的问题都有些不太一样, 现将本人配置的过程整理如下 更新源为阿里云 找到Software & Updates,将源更新为阿里云的源 ...

  5. 集群环境下,你不得不注意的ASP.NET Core Data Protection 机制

    引言 最近线上环境遇到一个问题,就是ASP.NET Core Web应用在单个容器使用正常,扩展多个容器无法访问的问题.查看容器日志,发现以下异常: System.Security.Cryptogra ...

  6. 千呼万唤始出来——uFUN开发板2.0开箱评测

    前言 今年3月,我参与了面包板社区组织的第一批uFUN开发板评测活动,并有幸能获得试用机会,那是我第一次了解到uFUN这个项目及背后的故事,4月份,uFUN 2.0版本来了,收到了张工送的一块样板,后 ...

  7. JPA中实现双向一对一的关联关系

    场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...

  8. 安装包RPM包或源码包

    RPM工具 # mount /dev/cdrom /mnt     挂载光盘 # rpm     软件包管理器 -i     安装(需要安装包完整名称) -v    可视化 -h    显示安装进度 ...

  9. centos7 nginx 配置

    1.下载nginx 官方下载1.6.2 2.编译安装 [root@bogon nginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx ...

  10. django补充CBV和FBV模式

    django补充CBV和FBV模式FBV模式---函数:经常用的方式CBV模式---类CBV中url连接时函数名后面要接.as_view()class index(views.View): @... ...