2013-10-03 81 views
0

我在使用socket.gethostbyaddr(ip_addr)在特定站點上獲取主機名時遇到問題。Python套接字:gethostbyaddr:反向DNS查找失敗

我不會詳細介紹哪些網站不適用。

因此,通過名稱獲取主機對我到目前爲止嘗試過的每個站點都能正常工作,但是當我嘗試獲取站點名稱時,出現如下錯誤信息: ing host not found

解決方法或替代方案會很好,因爲它具有完整的數據。如果沒有解決辦法,我只能忽略主機名。沒什麼大不了的。謝謝您的幫助。

# not full code 
hostip = socket.gethostbyname(hostname) 
print socket.gethostbyaddr(hostip) 

Error: socket.herror: [Errno 11004] host not found 
+2

並非每個站點都有正確配置的反向DNS。有時候這是故意的,有時候是因爲你在看內部地址,而且網絡內部不需要它,所以它不值得設置,有時候會有人被搞砸了。這是你所問的嗎?或者你問是否有某個地方可以下載整個二級DNS數據,並用不同的規則建立你自己的反向地圖?要麼… ? – abarnert

+0

@abarnert是的,你回答了我的問題。謝謝。對不起,如果問題很混亂 – Crispy

回答

2

不是每個IP地址都有反向DNS。有時候這是故意的,有時候是因爲你在看內部地址,而且網絡內部不需要它,所以它不值得設置,有時候會有人被搞砸了。

爲什麼有人會故意這樣做?最常見的情況是,多個域名映射到相同的IP地址。

例如,共享託管站點可能會將其三個客戶的網站(www.foo.com,www.bar.com和www.baz.com)全部映射到1.2.3.4。 HTTP在Host:標題中爲您提供了所需的主機名,因此它可以確定您的瀏覽器想要訪問哪個站點。但在HTTP(或其他更高級別的協議)之外,沒有辦法找出1.2.3.4中的三個名稱中的哪一個。所以,他們無法提供對您有用的東西。也可能有一個像shared_1234.hostingcompany.com這樣的名稱,這對他們自己的IT人員很有用,在這種情況下,他們可能會提供該名稱,但否則,他們將不會打擾任何反向DNS。