2017-06-12 67 views
1

我想在我的網站上集成好的代理檢測器腳本。因此,在搜索時我得到了這段代碼。PHP - 使用代理服務器(如hidemyass)代理檢測並阻止網站訪問

$proxy_headers = array(
         'HTTP_VIA', 
         'HTTP_X_FORWARDED_FOR', 
         'HTTP_FORWARDED_FOR', 
         'HTTP_X_FORWARDED', 
         'HTTP_FORWARDED', 
         'HTTP_CLIENT_IP', 
         'HTTP_FORWARDED_FOR_IP', 
         'VIA', 
         'X_FORWARDED_FOR', 
         'FORWARDED_FOR', 
         'X_FORWARDED', 
         'FORWARDED', 
         'CLIENT_IP', 
         'FORWARDED_FOR_IP', 
         'HTTP_PROXY_CONNECTION' 
        ); 
foreach($proxy_headers as $x){ 
    if (isset($_SERVER[$x])) die("You are using a proxy!"); 
} 

然後我嘗試通過ngrok訪問我的localhost網站,它阻止我查看它返回「您正在使用代理服務器!」。我試着用hidemyass和另一個代理探測器,我得到了同樣的結果。這是我想要的hidemyass類型代理站點的情況下。現在我的問題是,ngrok也使用代理服務器,因爲它阻止了我的訪問?我讀到某人的評論HTTP_X_FORWARDED_FOR爲他的互聯網直接連接返回誤報。我試圖刪除這個和wooo,沒有更多的hidemyass或其他檢測代理。網站可以通過代理訪問。所以,我猜它很重要。所以,我的第二個問題是,HTTP_X_FORWARDED_FOR是否真的返回誤報?還是因爲ngrok也使用代理服務器,即使我直接連接,我也無法訪問我的網站?是不是可以使用HTTP_X_FORWARDED_FOR?你在這個劇本中看到的任何散文或缺點請告訴我。

回答

0

目前還沒有明確的標準來分類的背後VPN或Web代理通過HTTP頭只是服務器的用戶,

您還阻止很多用戶誰使用Web代理他們的合法的網絡中,如誰擁有大學校園或政府機構嚴格的網上衝浪政策。

您最好的機會是獲取與它們相關的AS號碼和IP範圍相關的IP地址,並阻止您的Web服務器中的整個IP空間或將它們重定向到您的特定Web服務器。

另一種識別正在使用互聯網代理的用戶的最佳方法是使用Flash的P2P作爲RTMFP協議,例如可以與https://github.com/randunel/ArcusNode一起使用(另請參閱https://github.com/OpenRTMFP)。因此,在服務器上,您應該等待消息並通過閃存記錄遠程IP,然後將其與IP REMOTE_ADDR進行比較,如果不相等,則用戶可能位於防火牆後面。

我還建議以獲取AS兩個IP號碼,如果兩個IP ASN不相同則確保用戶濫用

如果ASN是相等的,那麼用戶是具有不可思議的ISP背後通過不同的方式重定向網絡流量。

獲得ASN IP,你可以exec命令:

whois -h whois.cymru.com "216.90.108.31" |grep -v 'AS  |'|grep -v whois.cymru.com| awk '{print $1}' 
+0

這兩個哪一個你最推薦? –

+0

和你說的節點js,但如何在純PHP中做到這一點? –

+0

我個人更喜歡比較IP,我還會爲代理訪問者創建一個驗證碼驗證表單,以確保它們不被用於DDOS攻擊 –

0

代理檢測是一個複雜的問題,需要經常注意正確的事情。大多數代理/ VPN不會顯示任何轉發頭,因此您將無法使用該代碼捕獲足夠的代理連接。

有一些在線服務,你可能會發現有用

GetIPIntel.net - 通過API提供代理/ VPN檢測是免費的。他們使用機器學習和概率論技術來確定IP地址的分數。

Maxmind - 通過API提供代理/ VPN檢測。目前它被列爲傳統服務。

W I T C H - 查看服務器端可以捕獲OpenVPN連接的MSS值。

相關問題