用python控制你的路由器

來源:互聯網
上載者:User

標籤:password   回呼函數   lin   issues   git   管理   script   zip   route   

前言

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

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


一、思路1. 登陸路由器管理系統2. 通過抓包工具找到的操作的調用函數3. 調用函數


二、代碼及具體操作1. 具體代碼
#!/usr/bin/env python# -*- coding: utf-8 -*-# 用來斷開路由串連,目的是通過這個方法換ipimport requestsimport jsonimport sslimport timessl._create_default_https_context = ssl._create_unverified_contextdata = {"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,然後把內容拷貝到代碼裡就行了。


3. 獲得headers

也是在剛才那個檔案找到Request Headers然後把內容拷貝過去。


4. 獲得相應的函數調用資訊

譬如我想中斷連線,於是進入路由設定→上網設定介面,通過Element找到按鈕的html元素,最後找到它回呼函數檔案:

點進去檔案後找到.action操作,這就是中斷連線需要調用的函數了。


5. 運行代碼並觀察輸出

填好這些資訊之後,運行代碼並觀察結果。如果調用成功,則列印:{u‘error_code‘: 0}

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


三、參考

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

用python控制你的路由器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.