2010-07-03 22 views
1

請讓我知道如何檢測用戶是否支持免費的Web代理?檢測用戶是否在免費的Web代理之後?

+2

可能重複[檢測用戶是否在代理後面](http://stackoverflow.com/questions/1000924/detecting-whether-a-user-is-behind-a-proxy) – msw 2010-07-03 03:54:02

+2

免費webproxy是一個不同的概念 – 2010-07-03 03:59:24

+0

我在我家的代理(PFSense)背後。如果一個網站阻止我,我會很生氣。免費的網絡代理服務器與我在家中的代理服務器建立在同一個前提下。如果他們被阻止,只需在新的域名/ IP上彈出一個新的。沒辦法阻止它。 – 2010-07-03 04:30:14

回答

0

除非你有(每天更是被添加的),你不能每一個免費的網絡代理的一個詳盡的清單

你能告訴我們更多的東西你想幹什麼?也許我們可以找到另一種方式來幫助你。

+0

我知道Facebook不允許用戶使用代理。我只是想知道他們是如何做到的。另外,我只想要合法用戶,而不是僞造用戶。 – 2010-07-03 03:58:37

+1

Facebook不允許使用許多通用代理,但仍有許多代理可以通過。這不是一門精確的科學。 – Amber 2010-07-03 04:08:43

+2

@mark - 大多數企業將使用代理,但工作人員仍然可以聯繫FB。您可能會發現它是*代理*阻止訪問FB,而不是FB檢測到您通過代理進入。 – slugster 2010-07-03 04:16:18

1

您基本上需要一個所有已知的Web代理的數據庫。如果你想這樣做,因爲你想禁止代理服務器後面的用戶訪問,我會說這是浪費時間。新代理隨時出現,維護最新的數據庫很困難。

0

我對代理服務器知之甚少,但我的印象是,您可以檢查HTTP標頭中的X-FORWARDED-FOR字段。

+0

檢查它反對什麼? – Mawg 2010-07-05 02:25:17

+0

對不起,我以爲他想知道人們是否通過代理服務器來到他的網站。所以,你檢查該字段是否存在,因爲我相信它是由像Squid這樣的代理服務器添加的。 – mrduclaw 2010-07-05 23:20:49

-3
if(($_SERVER['HTTP_ACCEPT_ENCODING'] == "") or !isset($_SERVER['HTTP_ACCEPT_ENCODING'])) 
{ 
    // using a proxy 
    echo("<font color=red><b>Using a Proxy</b></font><br>"); 
} 
else 
{ 
    // not using a proxy 
    echo("<font color=green><b>Not using a Proxy</b></font><br>"); 
} 

我看着線槽$_SERVER陣列具有和不使用代理,我發現,當一個代理之後,$_SERVER['HTTP_ACCEPT_ENCODING']不使用,並且當不使用代理,它被使用。我還沒有找到任何使用它的代理,並且我還沒有發現任何在不使用代理時不使用$_SERVER['HTTP_ACCEPT_ENCODING']的情況。

只是自己測試一下,你會看到它的工作原理。

+0

並非所有的代理都會這樣。接受編碼頭實際上是一個常見的http請求頭,與代理無關。 – badunk 2012-04-09 23:39:27