2012-03-08 38 views
0

我有一個網站,可以記錄用戶提供的網頁鏈接。我只想記錄它們是否有效。使用通配符解析器檢查域有效性

我用checkdnsrr($domain, 'A')檢查域的有效性,我注意到這個總返回true。我在共享主機(所以我不能改變任何東西)。我向服務器管理員報告了一個錯誤,他回覆說:

我們使用OpenDNS作爲我們在服務器上的解析器。即使是無效域,他們的解析器也會返回IP/DNS記錄,因爲它們有一個通配符,用於將任何無效域指向默認IP。因爲你輸入的所有域都會顯示爲有A記錄。

那好吧。

我想避免在無效域上使用cURL,因爲這太浪費了,但實際上存在更大的問題。我相信這個解析器會返回一些類似「這個域不存在」的錯誤頁面,並且會發出一個200或者其他一些有效的返回狀態。我使用此狀態來確認頁面確實有效,因此現在任何無效域名都將被我的網站記錄爲有效。 (幽默地說,一個有效的域名和一個無效的URL導致頁面發出404或其他錯誤狀態將而不是被記錄)。

無論如何,有沒有其他方法來檢查域的有效性?我不介意使用一些第三方網站。

+0

使用curl可能也是毫無意義的 - 它會使用與PHP相同的解析器,並且仍然以opendns提供的任何IP(s)結束。 – 2012-03-08 04:52:46

回答

0

OpenDNS(和其他人這樣做)通常返回相同的IP爲所有應該出現NXDOMAIN(無效)的域。如果您的支票的結果是該IP,請將其視爲無效。這是一個額外的支票,但它應該是一個有效的解決方法。

+0

這聽起來像一個很好的開始..你知道如何:a)從PHP中的字符串獲取域的IP,b)找出這個「所有域的相同IP」是什麼?另外,我是否會不時擔心它會不時地意外更換? – 2012-03-08 04:09:11

+0

@tandu,看起來你可以通過[gethostbyname()](http://www.php.net/manual/en/function.gethostbyname.php)獲得IP。您可能需要使用已知無效的主機(例如:dfgdfgdg.com)從主機運行一次,以獲得您需要考慮的「無效」IP。當他們改變時,你會受到DNS提供者的支配,但我希望它應該相當穩定。 – bloy 2012-03-08 05:40:39