2014-02-21 53 views
0

我需要通過不同的ISP監控網站列表以查看它們是否被阻止。我爲每個ISP有不同的機器。我試圖編寫一個代碼來自動檢查網站是否被阻止。有幾件事出現在我的腦海裏,但他們不是因爲不同的原因而工作的:以編程方式檢查一個網站是否被ISP阻止

ping:我以爲我會ping網站,但是之後一些網站的ICMP端口被關閉。

獲取請求(或javascript image trick):我想也許我只是獲取網頁,但這並沒有幫助,因爲被阻止的頁面仍然返回一些非標準的阻塞頁面。 200狀態。

最後,我想也許我在非阻塞的機器上得到一個網站的副本,並將該網頁與測試機器上的網頁進行比較,但有兩個問題:我不知道如何比較兩個頁面我會比較什麼元素),其次,一些網站是動態的,因此它們返回的版本略有不同。

任何想法都會有所幫助。

+0

簡單的測試只是一個圖像請求onload/onerror – epascarello

+0

但如果阻塞的頁面返回200無論如何不會工作 – Kiarash

+0

他們實際上是否返回一個圖像?不知道如何使用同源策略來測試它。 – epascarello

回答

1

我猜測,ISP的塊頁面是一致的ISP無論你試圖訪問什麼網站。與將檢索到的頁面與「已知的真正」頁面進行比較,將它與「已知的虛假」頁面進行比較怎麼辦?

缺點:您將不得不爲每個ISP重複此過程,因爲它們幾乎肯定會有不同的「塊」頁面。

+0

他們有不同的塊頁面,我不知道如何輕鬆地找到塊頁面,但即使我們知道每個ISP已知的虛假頁面,您如何比較兩個網頁?你可以想象,識別每塊頁面的獨特元素會更麻煩。 – Kiarash

+0

如果幸運的話,「block」頁面可能會有一個'',它有一個唯一的來源(可能指向ISP的域名)。當然,如果你不知道ISP的阻止頁面是什麼樣子的話,所有這些都是沒有意義的。 – aapierce

0

兩個選項:

比較頁面大小。如果兩個頁面的大小非常相似,那麼您知道ISP可能不會阻止該網站。如果一個頁面的大小非常小,則ISP有可能阻止該網站。

從頁面抓取元素,如標題,標題,按鈕文本等,並將它們相互比較。如果您有x個匹配項,頁面可能未被阻止,如果您沒有匹配項,頁面可能被阻止。

+0

這是很好的,除非原始網站重量輕。那麼差異就會很小...... – Kiarash

0

存儲阻止的網站頁面的模板。

對於每個GET responseBody檢查其內容是否與被阻止的模板匹配。

如果防火牆強制重定向,您可以檢查響應服務器的IP/DNS是否與防火牆相同。

相關問題