1
使用gethostbyname()
並不總是返回一個IP地址。相反,它會再次返回相同的主機名。這是什麼原因?起初我以爲這是一個虛假的主機名。然後在一個試圖捕獲一些機器人的函數中使用它,它會讓百度使用一個虛假的主機名,這在我測試的時候是錯誤的。php gethostbyname()函數
例如:
echo gethostbyname('baiduspider-123-125-71-12.crawl.baidu.com');
返回
baiduspider-123-125-71-12.crawl.baidu.com
但
echo gethostbyname('201-35-178-134.cslce701.dsl.brasiltelecom.net.br');
返回
201.35.178.134
任何幫助理解這更好的讚賞。
正是我所得到的控制檯也對在線服務。而缺失的A-Record也是我的另一個想法。但是,在這種情況下,如何獲得IP進行反向DNS檢查?謝謝 – durduvakis
你只能在一個方向上做(當我編寫一個殭屍程序阻止系統時,我也做了這個經驗)。您需要區分殭屍程序,例如百度只能執行向後檢查,您無法解析主機名。對此你無能爲力。您只能將RDNS與某些正則表達式匹配,試圖找出它是否至少是* .baidu.com。如果有人僞造這個,如果你不想用網絡塊來操作,就不可能區分他和合法的百度殭屍機器人。但這不是好的做法。 – Lorenz
我害怕我會聽到所有這些,不幸的是,我將不得不列出特殊情況的機器人列表。是的,這是一個糟糕的機器人檢測機制。我很容易檢查主機名的結尾部分是否與'.baidu.com'匹配,因爲我已經作爲第一個快速檢查虛假的googlebot了。至少我可以記錄那些不解決IP問題的機器人案例,並隨後添加排除項。再次感謝。 – durduvakis