2012-04-16 39 views
0

是否可以使用C#(Windows Forms應用程序)檢測網站是否具有專用或共享的IP地址?我想在我的應用程序中實現一個功能,以便在TextBox中寫入Web地址,而不是單擊測試按鈕。然後顯示(成功)MessageBox,如果該站點具有專用IP地址,或者顯示(失敗)MessageBox,否則。C# - 如何檢測網站是否有共享或專用IP地址?

如何檢測網站是否具有使用C#.NET的共享或專用IP地址?

+1

唯一能夠確定的是具有歷史背景的方法。就共享或專用而言,IP地址與任何其他IP地址無法區分。你需要存儲一些歷史記錄。 – Tejs 2012-04-16 15:16:50

回答

2

你可以嘗試,但你永遠不會有一個好的結果。我認爲你能做的最好的辦法是檢查IP的PTR記錄,然後檢查是否有來自不同網站的A記錄。然而,這仍然很糟糕,因爲一個網站可能有兩個看起來不同的域,它們屬於同一個組織(例如googlemail.com/gmail.com)。

此外,這假定存在PTR記錄,多個。我認爲我沒有看到大多數VPS /共享主機支持這樣的設置。

0

嗯,我會做的方式是:

  1. 發送HTTP GET的URL並保存結果。
  2. 將URL解析爲IP。
  3. 發送HTTP GET到IP並保存結果。
  4. 比較兩個結果。 (你可以做兩個結果之間的抽樣檢查)
  5. 如果結果相同,那麼這是專門的託管,如果結果不同,那麼這是一個共享主機。

限制了這種方法,我現在能想到的:

  1. 將帶你時間才能體現我們的一個適當的比較方法的 兩個結果。
  2. 如果共享主機配置爲到您正在檢查的網站的默認路由。

用於解析URL和對不同編程語言的Web請求的功能分散在Internet上。

+0

專用服務器仍然可以有多個站點。 – josh3736 2012-04-16 18:30:07

+0

親愛的喬希,如果你的網站是你的意思是:domain.com/site1,domain.com/site2,那麼這些是源文件夾而不是網站,我不確定是否根據共享IP主機標準,假設這是正確的共享主機。 – Radhi 2012-04-16 18:57:26

+0

另一件事,如果您將原始問題更改爲專用服務器或共享服務器,我的技術將不再適用於另一種情況。如果服務器有多個物理適配器,並且每個網站分別分配給每個適配器,那麼我的技術將無法確定它是共享服務器還是專用服務器。 – Radhi 2012-04-16 19:03:11

0

從技術的角度來看,不存在「共享」或「專用」IP地址;該協議沒有區別。這些術語用於描述如何使用IP

因此,沒有編程方法來回答「這是共享還是專用?」這個問題的其他一些答案提出了一些方法來猜測是否一個特定的域是在共享的IP上,但這些方法是最好的猜測。

如果你真的想走這條路,你可以抓取網絡併爲每個域存儲已解析的IP。 (簡單,對吧?)然後,您可以查詢您的海量數據庫以查找給定IP上託管的所有域。 (Therearetools似乎已經這樣做了,儘管只有第一個能夠識別我託管在我的服務器上的多個域。)

當然,這對於VPS(或諸如亞馬遜EC2之類的服務器硬件本身是共享的,但每個客戶(域)獲得一個或多個專用IP都是徒勞的。從外部看,沒有辦法知道這些服務器是如何建立的。


TL; DR:這不能以可靠的方式來完成。

相關問題