用python控制路由器


前言

最近用爬蟲爬豆瓣上的資料,無奈總是被封,agent偽裝和cookie修改這些都用過了,可惜都起不了什么作用,到了一定次數,還是會返回403。想用代理ip,無奈免費的太不穩定,買收費的又有點沒必要。今天在查資料的時候,讀到一篇談ADSL撥號代理的文章,剛好我又是用這種方式上網,於是想到了一個對付豆瓣反爬蟲的辦法,當爬蟲檢測到被封的時候,斷開路由器連接,休眠一段時間之后繼續爬。

ps:我的路由器型號是TL-WR842N

 

一、思路

1. 登陸路由器管理系統

2. 通過抓包工具找到的操作的調用函數

3. 調用函數

 

二、代碼及具體操作

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就行了,然后輸入密碼登錄。

打開Network選項卡,找到第一個名為192.168.0.1的文件,在右側找到Request Payload部分,在這里可以找到你登錄時加密后的密碼,實際上直接點view source,然后把內容拷貝到代碼里就行了。

1526485512(1)

 

3. 獲得headers

也是在剛才那個文件找到Request Headers然后把內容拷貝過去。

 

4. 獲得相應的函數調用信息

譬如我想斷開連接,於是進入路由設置→上網設置界面,通過Element找到按鈕的html元素,最后找到它回調函數文件:

image

點進去文件后找到.action操作,這就是斷開連接需要調用的函數了。

image

 

5. 運行代碼並觀察輸出

填好這些信息之后,運行代碼並觀察結果。如果調用成功,則打印:{u'error_code': 0}

這就是TL-WR842N的路由器控制腳本,型號不同的則不一定適用。

 

三、參考

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM