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

PHP 偵測客戶端 Proxy 代理與匿名等級完整實作

     編輯:PHP 綜合知識

原理說明

透過分析 HTTP 請求標頭中的 HTTP_VIA、HTTP_X_FORWARDED_FOR、REMOTE_ADDR 三個關鍵變數,可判斷客戶端是否使用代理及其匿名等級。

五種代理情境對照表

代理類型REMOTE_ADDRHTTP_VIAHTTP_X_FORWARDED_FOR匿名程度
無代理真實 IP無/不顯示無/不顯示完全透明
透明代理代理 IP代理 IP/閘道資訊真實 IP無匿名性
普通匿名代理 IP代理 IP/閘道資訊代理 IP隱藏真實 IP,但暴露使用代理
欺騙性代理代理 IP代理 IP/閘道資訊隨機 IP偽造假 IP 欺騙對方
高匿名代理代理 IP無/不顯示無/不顯示完全替代真實身份

PHP 判斷範例程式碼

<?php
if (!empty($_SERVER['HTTP_VIA'])) {
    // 使用了代理
    if (!isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        // 普通匿名代理
        $proxyIp = $_SERVER['REMOTE_ADDR'];
    } else {
        // 透明代理
        $proxyIp  = $_SERVER['REMOTE_ADDR'];
        $realIp   = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
} else {
    // 無代理 或 高匿名代理(無法區分)
    $realIp = $_SERVER['REMOTE_ADDR'];
}
?>

實測工具推薦

可至 https://ip.mixsec.org/ 掛上代理測試,觀察三個變數實際值。

進階應用建議

  • 結合 proxy judges 進一步驗證代理存活度與匿名等級。
  • 記錄代理 IP 與真實 IP 對應關係,供風控、反爬蟲、日誌分析使用。
  • 注意:HTTP_X_FORWARDED_FOR 可被偽造,不可作為唯一身分認定依據。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved