用python控制路由器

前言

最近用爬虫爬豆瓣上的资料,无奈老是被封,agent假装和cookie修改这些都用过了,惋惜都起不了什么做用,到了必定次数,仍是会返回403。想用代理ip,无奈免费的太不稳定,买收费的又有点不必。今天在查资料的时候,读到一篇谈ADSL拨号代理的文章,恰好我又是用这种方式上网,因而想到了一个对付豆瓣反爬虫的办法,当爬虫检测到被封的时候,断开路由器链接,休眠一段时间以后继续爬。javascript

ps:个人路由器型号是TL-WR842Nhtml

 

1、思路

1. 登录路由器管理系统

2. 经过抓包工具找到的操做的调用函数

3. 调用函数

 

2、代码及具体操做

1. 具体代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 用来断开路由链接,目的是经过这个方法换ip

import requests
import json
import ssl
import time
ssl._create_default_https_context = ssl._create_unverified_context

data = {
"method":"do",
"login":{"password":"你加密后的密码"} # 登录后观察得到
}

# 根据本身的状况来填
headers = {
'Host':'192.168.0.1',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36',
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7,zh-TW;q=0.6',
'Connection':'keep-alive',
'Content-Length':'50',
'Content-Type':'application/json; charset=UTF-8',
'Origin':'http://192.168.0.1',
'Referer':'http://192.168.0.1/',
'X-Requested-With':'XMLHttpRequest'
}

url = "http://192.168.0.1/"
html = requests.post(url,json=data,headers=headers,verify = False)
print(html.headers)
stok = json.loads(html.text)["stok"]
full_url = "http://192.168.0.1/stok="+ stok +"/ds"
Disconnect = {"network":{"change_wan_status":{"proto":"pppoe","operate":"disconnect"}},"method":"do"}  # 经过观察得到
disconn_route = requests.post(url=full_url, json=Disconnect).json() print(disconn_route)

 

2. 得到登录后加密的密码

进入你的路由器管理页,个人是http://192.168.0.1/,开启浏览器的抓包界面,个人是chrome,直接f12就好了,而后输入密码登陆。java

打开Network选项卡,找到第一个名为192.168.0.1的文件,在右侧找到Request Payload部分,在这里能够找到你登陆时加密后的密码,实际上直接点view source,而后把内容拷贝到代码里就好了。python

1526485512(1)

 

3. 得到headers

也是在刚才那个文件找到Request Headers而后把内容拷贝过去。git

 

4. 得到相应的函数调用信息

譬如我想断开链接,因而进入路由设置→上网设置界面,经过Element找到按钮的html元素,最后找到它回调函数文件:github

image

点进去文件后找到.action操做,这就是断开链接须要调用的函数了。chrome

image

 

5. 运行代码并观察输出

填好这些信息以后,运行代码并观察结果。若是调用成功,则打印:{u'error_code': 0}json

这就是TL-WR842N的路由器控制脚本,型号不一样的则不必定适用。浏览器

 

3、参考

1. 使用xx-net后 不能用python重启路由 #10283cookie

相关文章
相关标签/搜索