首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實作 TP-Link WR882N 路由器自動登入取得 IP 與重啟功能

     編輯:PHP 綜合知識

專案背景與需求

伺服器上傳大量資料時,TP-Link WR882N 路由器容易當機導致斷網。為解決此問題,開發 PHP 腳本定時檢測網路連線,連續 10 次無法存取指定網站時自動觸發路由器重啟。

核心程式碼實作

<?php 
// TP-Link WR882N 管理腳本
function getContent($url) {
    $temp = parse_url($url);
    $query = isset($temp['query']) ? $temp['query'] : '';
    $path = isset($temp['path']) ? $temp['path'] : '/';
    
    $header = array(
        "POST {$path}?{$query} HTTP/1.1",
        "Host: {$temp['host']}",
        "Content-Type: text/xml; charset=utf-8",
        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Cookie: Authorization=Basic ' . base64_encode("admin:admin"),
        "Referer: https://{$temp['host']}/",
        'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)',
        "Content-length: 380",
        "Connection: Close"
    );
    
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_TIMEOUT, 60);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $content = curl_exec($curl);
    curl_close($curl);
    return $content;
}

function getIp() {
    $content = getContent("https://192.168.1.1/userRpm/StatusRpm.htm");
    preg_match('/wanPara=new Array\((.+?)<\/script>/s', $content, $all);
    $ip = "0";
    if(!empty($all[1])) {
        $data = trim($all[1]);
        $data = str_replace("\r\n", "", $data);
        $data = explode(",", $data);
        $ip = str_replace('"', '', $data[2]);
        $ip = trim($ip);
    }
    return $ip;
}

function reboot() {
    $url = "https://192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=%D6%D8%C6%F4%C2%B7%D3%C9%C6%F7";
    getContent($url);
}

$info = getIp();
echo $info;
?>

關鍵技術點

  • cURL 模擬瀏覽器請求:完整設定 Header 包含 Cookie 認證、User-Agent、Referer 等
  • 正則表達式解析 HTML:從回傳頁面提取 WAN IP 位址
  • Base64 編碼認證:使用 `Authorization=Basic` 進行 HTTP Basic Auth

注意事項

⚠️ 此腳本專為 WR882N 設計,其他型號未測試。實際部署時需加入網路檢測邏輯(如 ping 指定網站)與排程任務(crontab)實現自動化監控。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved