2012-10-14 88 views
6

Facebook剛剛實施了一些網頁抓取工具嗎?過去幾天,我的網站幾次崩潰,嚴重超載了我追溯到Facebook的IP。Facebook抓取工具Bot崩潰站點

我已經嘗試了google搜索,但無法找到任何關於通過robots.txt控制Facebook的爬蟲機器人的權威資源。有上添加以下的引用:

用戶代理:facebookexternalhit/1.1 抓取延遲:5

用戶代理:facebookexternalhit/1.0 抓取延遲:5

用戶代理:facebookexternalhit/* 抓取延遲:5

但我找不到任何具體的參考是否Facebook的bot殭屍尊重robots.txt。據舊資料顯示,Facebook「不會抓取您的網站」。但是這肯定是錯誤的,因爲我的服務器日誌顯示他們以每秒多個頁面的速率從69.171.237.0/24和69.171.229.115/24範圍內的十幾個IP爬取我的網站。

我找不到任何有關這方面的文獻。我懷疑這是FB在過去幾天剛剛實施的新事物,因爲我的服務器以前從未崩潰。

有人能請指教嗎?

+0

是的,最近發生了一些變化,因爲它在我們八年來首次使我們崩潰。據說他們正在「更新他們的opengraph」。然而,看着我們的頁面,它正在請求(非常陳舊的隱藏頁面),我想知道一個合法的機器人是否正在執行JavaScript,並拉入類似按鈕,觸發FB OpenGraph更新。這只是一個預感... – Stickley

+0

相關問題:http://stackoverflow.com/questions/11521798/excessive-traffic-from-facebookexternalhit-bot?lq=1和http://stackoverflow.com/questions/7716531/ facebook-and-crawl-delay-in-robots-txt?lq = 1 – Stickley

+0

感謝您的建議和參考,Hank。在一次事件中,我的網站在11月8日或9日被幾十次訪問淹沒了幾個小時。但這一次 - 這不是Facebook,而是亞馬遜。它突然開始大規模地抓取網站中的大量鏈接,但似乎沒有任何明顯的模式 - 訪問的某些頁面是不明顯的/舊的頁面,而有些則是最新的。不知道他們是否刷新自己的搜索引擎數據庫。 – Andy

回答

0

無論Facebook發明了什麼,你肯定都需要修復你的服務器,因爲它有可能使外部請求崩潰。

而且,僅僅是先打在谷歌facebookexternalhithttp://www.facebook.com/externalhit_uatext.php

+0

謝謝。我確實檢查了FB uatext頁面,儘管它沒有提供任何特定的內容。崩潰我的服務器的頁面來自Wordpress博客部分,其中包含幾千個帖子。不幸的是,即使安裝了所有的調整和快速緩存,引擎效率也不夠高,而我能想到的唯一方法就是快速修復robots.txt抓取延遲,但我不知道FB是否尊重它。雖然我一整天都在傳播,但我沒有遇到過Google抓取的問題。 FB一口氣撲滅大量頁面並殺死服務器。 – Andy

+0

我有一個理由,我不喜歡FB :) – Serge

1

我們看到了同樣的行爲在大約相同的時間(十月中旬) - 從Facebook導致整個系統的排隊請求和緩慢的請求的洪水。首先是每90分鐘一次;過了幾天,這個頻率就增加了,變得隨機分佈了。

這些請求似乎並不尊重robots.txt,所以我們被迫想出了一個不同的解決方案。最後,我們設置了nginx將所有的請求與一個facebook useragent轉發給一對專用的後端服務器。如果我們使用nginx的> v0.9.6,我們可以做這一個漂亮的正則表達式,但我們沒有,所以我們沿着這已經很好地爲我們工作的的

map $http_user_agent $fb_backend_http { 
      "facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)" 
        127.0.0.1:80; 
    } 

線使用的映射;在幾周的時間裏,我們正在受到嚴重打擊,這種請求的分割使大量流量遠離系統的其他部分。

它現在似乎已經基本上平息下來了 - 我們只是看到間歇性的尖峯。

至於爲什麼會這樣,我真不知道 - 似乎有過一次類似的事件在4月份被歸結爲一個錯誤 http://developers.facebook.com/bugs/409818929057013/ 但我最近我不知道的任何類似。

+0

謝謝你的分享。我正在使用Apache--希望他們有類似的方法來重新映射用戶代理的請求。但假設我有另一臺優秀的服務器來卸載這些動態訪問,因爲它們不是靜態頁面,否則我將不得不完全放棄這些請求,並希望FB不會認爲我的網站是無效的。和你觀察到的一樣,事件不久之後就停止了。這可能是一些干擾FB的過程 - 但它最終不會尊重robots.txt是一個糟糕的做法。 – Andy

2

正如在in this similar question on facebook and Crawl-delay中所討論的,facebook並不認爲自己是一個機器人,甚至不會請求您的robots.txt,更不用說關注它的內容。

您可以執行您自己的費率限制代碼,如相似的問題鏈接所示。當服務器超過容量或被特定的用戶代理淹沒時,這個想法就是簡單地返回http代碼503。

看來那些爲大型科技公司工作的人不明白「改善緩存」是小公司沒有處理的預算。我們專注於爲實際支付金錢的客戶提供服務,並且沒有時間抵擋來自「友好」公司的狂暴網絡機器人。