2015-11-25 69 views

回答

0

你可以得到相同的信息,從您鏈接服務,但

  1. 您將需要比一個Web應用程序
  2. 的信息更多可能並不完全準確

服務的工作方式是將資源嵌入HTML頁面,然後嘗試由瀏覽器下載。下載需要瀏覽器解析域名,這允許您強制從瀏覽器到授權DNS服務器的DNS請求。通過爲每個客戶端或請求使用唯一的域名,您可以跟蹤從服務器請求唯一域名的DNS服務器。

的過程會是這樣的:

  1. 生成每個頁面請求,例如隨機的,獨特的ID rndun1qu3(必須是有效的DNS標籤,請諮詢RFC1035)。這必須每次都有一個新的ID,以便它不會出現在任何DNS緩存中。

  2. 在頁面中嵌入HTML <img>元素以觸發下載,例如, <img src="rndun1qu3.your-tracking-domain.com/example.png">。當瀏覽器第一次看到這個域時,它將嘗試解析rndun1qu3.your-tracking-domain.com。請注意,爲此目的,觸發DNS請求的任何內容都可以。 AJAX調用,<script>元素等。

  3. 監控到達DNS服務器的DNS請求,該DNS服務器負責rndun1qu3.your-tracking-domain.com。當您看到rndun1qu3.your-tracking-domain.com的請求時,請注意請求DNS信息(即您正在查找的IP地址)的遠程對等IP地址,然後通知您的Web應用程序。

以上解釋了爲什麼我說你需要的不僅僅是一個網絡應用 - 你還需要一個你可以監控的DNS服務器。這可能是一個普通的香草DNS服務器,可以監視日誌,或者是專門構建的東西。有很多開源項目,甚至可以爲您的目的自定義的Python示例。您需要做的就是將您的子域的授權服務器指向該服務器。

至於爲什麼信息可能不準確,請考慮DNS服務器通常配置爲將所有請求轉發到另一臺服務器,而不是通過根DNS服務器。在這種情況下,DNS請求將從最終執行名稱解析的服務器(即轉發服務器)到達。例如,您的公司網絡可能有一個192.168.251.1的DNS服務器,其公有IP爲1.2.3.4,但如果它將請求轉發給Google DNS,則很可能會看到請求來自8.8.8.8(Google DNS IP)而不是1.2.3.4。 DNS無法找到請求查詢的原始主機,所以這幾乎是您可以獲得的最佳選擇。