小米路由器共享wifi的安全與繞過方法
小米路由器的共享wifi(認證域名:guest.miwifi.com)為訪客給一種臨時上網方式,但3分鐘廣告模式的限制讓不少用戶覺得麻煩。通過抓包分析和TCP連接保持技術,可以繞過這一限制,實現(xiàn)持續(xù)聯(lián)網。本文介紹了一個自動化腳本解決方案,包括Windows批處理腳本和Python腳本,幫你自動連接共享wifi并保持網絡暢通。
共享wifi的限制與繞過原理
小米共享wifi的廣告模式允許用戶觀看3分鐘廣告換取上網權限,但每小時只能使用5次,且時間一到網絡就會斷開。經過研究發(fā)現(xiàn):
1.TCP連接保持:如果在3分鐘內維持一個活躍的TCP連接(比如持續(xù)發(fā)送網絡請求),網絡就不會中斷。
2. 局限性:只有這個特定的TCP連接有效,其他新連接仍會被切斷。
3. 解決辦法:通過特定的網絡配置,配合持續(xù)的TCP連接,可以讓網絡保持活躍。
解決方案概述
這個方案用一個Windows批處理腳本(.bat)協(xié)調以下步驟:
1. 斷開現(xiàn)有網絡連接。
2. 連接到指定的共享wifi。
3. 運行Python認證腳本(link.py)完成廣告認證。
4. 運行Python保持腳本(keep.py)維持TCP連接。
5. 檢測斷線后自動重連。
腳本詳解
1.Windows批處理腳本(main.bat)
這個腳本負責自動化整個流程,檢查連接、認證和重連順暢。
代碼:
@echo off
:restart
netsh wlan disconnect :: 斷開現(xiàn)有WiFi連接
ping 127.0.0.1 -n 2 >nul :: 延時1秒
netsh wlan connect name="WIFI" :: 連接名為WIFI的共享WiFi
ping 127.0.0.1 -n 10 >nul :: 延時9秒等待網絡初始化
python link.py :: 運行認證腳本
ping 127.0.0.1 -n 2 >nul :: 延時1秒
python keep.py :: 運行保持TCP連接腳本
goto restart :: 斷線后自動重連
使用方法:
1. 將代碼保存為main.bat。
2. 修改name="WIFI" 為你的共享wifi名稱(在電腦的wifi列表中查看)。
3. 檢查好Python環(huán)境已安裝,且link.py和keep.py在同一目錄。
4. 雙-click運行main.bat,腳本會自動執(zhí)行連接和認證。
認證腳本(link.py)
這個Python腳本負責與小米共享wifi的認證服務器通信,完成廣告認證。
代碼:
# coding=utf-8
import requests
import time
import datetime
print("正在啟動認證程序")
response0 = requests.get("http://guest.miwifi.com:8999/cgi-bin/luci/api/misns/sns_init")
deviceid = response0.text[26:62] # 提取設備ID
clientinfo = response0.text[78:142] # 提取客戶端信息
times = (int(round(time.time() * 1000)) - 2000) # 生成時間戳
url1 = f"http://api.miwifi.com/guest_wifi/portal_config?callback=jQuery210032440425060714295_{times}&did={deviceid}&client_info={clientinfo}&_={times+2}"
url3 = f"http://api.miwifi.com/wifirent/api/ad_apply_rent?callback=jsonpCallback&router_id={deviceid}&client_info={clientinfo}&_={times+8}"
response1 = requests.get(url1) # 獲取配置
response3 = requests.get(url3) # 申請認證
code = response3.text.find("0") # 檢查認證狀態(tài)
if code >= 0:
print("認證成功,網絡已連接")
else:
print("失敗,請重啟連接程序")
功能:
1. 從guest.miwifi.com獲取設備ID和客戶端信息。
2. 構造認證請求,模擬廣告認證流程。
3. 檢查認證是否成功(返回代碼“0”表示成功)。
注意:
1. 腳本依賴requests庫,運行前需安裝(pip install requests)。
2. 如果小米更新API接口,URL或參數(shù)可能失效,需重新抓包分析。
保持連接腳本(keep.py)
這個腳本通過持續(xù)向百度發(fā)送請求,維持TCP連接,檢測網絡不中斷。
代碼:
import requests
import time
client = requests.session()
print("正在保持連接!請勿關閉")
headers = {'Content-Type': 'application/json', 'Connection': 'keep-alive'}
while True:
url = "http://www.baidu.com"
r = client.get(url, headers=headers)
if r.status_code == 200:
print(f"當前時間為:{time.strftime('%H:%M:%S', time.localtime())}")
time.sleep(1) # 每秒請求一次
功能:
1. 創(chuàng)建一個會話,定期訪問百度,保持TCP連接活躍。
2. 每秒打印一次時間,方便確認腳本運行狀態(tài)。
3. 使用keep-alive頭查看下連接不被服務器關閉。
使用步驟
準備環(huán)境:
1. 安裝Python 3.x和requests庫(pip install requests)。
2. 確認共享wifi的名稱(比如“Xiaomi_Guest”)。
保存腳本:
1. 將批處理代碼保存為main.bat。
2. 將認證腳本保存為link.py。
3. 將保持腳本保存為keep.py。
4. 三個文件放在同一文件夾。
修改參數(shù):
1. 在main.bat中更新wifi名稱。
2. 查看電腦已連接到共享wifi的信號范圍內。
運行:
1. 雙擊main.bat,腳本會自動連接wifi、認證并保持連接。
2. 窗口會顯示認證和連接狀態(tài),保持窗口開啟。
斷線重連:
1. 如果網絡中斷,腳本會自動重啟流程,重新連接和認證。
注意事項
1. 繞過共享wifi限制可能違反小米的服務條款,僅限學習和測試用途,請勿濫用。
2. 保證在合法授權的網絡上操作,避免侵犯他人隱私或網絡權益。
網絡穩(wěn)定性:
1. 如果wifi信號弱,可能導致頻繁斷線,調整設備位置或檢查路由器狀態(tài)。
2. 選擇穩(wěn)定的網絡環(huán)境以提高連接成功率。
腳本維護:
1. 小米可能更新共享wifi的認證機制,導致腳本失效。遇到錯誤時,用Wireshark抓包,檢查新的API地址和參數(shù)。
2. 可以增加錯誤重試邏輯(比如認證失敗后重試3次),提高腳本魯棒性。
日志記錄:
1. 在keep.py中添加日志保存功能(寫入文件),方便排查問題。
2. 示例:with open('log.txt', 'a')as f:f.write(f'[{time}]Success\n')
錯誤處理:
1. 在link.py中加入重試機制,比如認證失敗后等待5秒再試3次。
2. 示例:用try-except捕獲網絡異常,避免腳本崩潰。
自動化程度:
1. 將main.bat設為開機啟動,設備一開機就自動連接。
2.Windows任務計劃程序可實現(xiàn)此功能(搜索“任務計劃程序”添加腳本)。
多wifi支持:
1. 修改main.bat,支持連接多個共享wifi(按信號強度選擇)。
2. 用netsh wlan show networks獲取wifi列表,動態(tài)選擇。