今日頭條的 ByteSpider,怎麼就成了小網站的“噩夢”?

發表於2019-11-12

clipboard.png

今日頭條,最近又上頭條了。

2019 上半年,今日頭條正式公佈開始做搜尋引擎。本來單純的以為頭條和微信一樣,做的是垂直搜尋或者站內搜,沒想到做的是抓取全網內容的全新搜尋引擎。

clipboard.png

這個決定其實也是在情理之中。畢竟頭條系產品現在的流量已經到了一個很恐怖的量級,擴充套件做搜尋具有天然的優勢。

但我們今天不聊“位元組跳動搜尋能否幹翻百度”,只想說一下轟轟烈烈的「搜尋大戰」之下,頭條的一個操作讓很多小網站「痛苦不堪」。

clipboard.png

我們的社群使用者很多都有自己的個人網站和部落格,雖然流量有高有低,畢竟是大家自己的後花園。

但最近,很多社群使用者紛紛跟我反饋,一種名為 Bytespider 的爬蟲爬取他們的網站資訊的頻率太高,直接把網站搞癱瘓了。大家順著爬蟲的 IP 地址查了一下,發現 Bytespider 應該就是今日頭條的搜尋爬蟲。

更有甚者,短短一上午時間就收到了 46 萬次請求,消耗掉伺服器 7 .42GB 流量。這對平均日活可能都沒有過千的小網站來說,已經算得上一次小型的 DDoS 攻擊了...

名詞解析:DDos攻擊

分散式拒絕服務(DDoS:Distributed Denial of Service)攻擊,是指攻擊者利用大量“肉雞”對攻擊目標發動大量的正常或非正常請求、耗盡目標主機資源或網路資源,從而使被攻擊的主機不能為正常使用者提供服務。

為什麼會有爬蟲?

名詞解析:網路爬蟲

web crawler,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。爬蟲訪問網站的過程會消耗目標系統資源。

爬蟲就是自動抓取網路內容的一種程式,它會定時定量的把網際網路上的內容爬下來,彙總儲存到自己的伺服器上。放到搜尋引擎上來說,我們每次搜尋的時候,搜尋引擎就會在這些爬取到的內容裡進行匹配相似度高的內容反饋給你。

所以做搜尋引擎的公司離不開爬蟲。大公司也都會給自己的爬蟲起一個名字:谷歌的爬蟲叫 Googlebot,百度的爬蟲是 Baiduspider,搜狗的爬蟲 Sogouspider,而今日頭條就是上文中的 Bytespider。

扯遠了,我們繼續討論開頭的這個事情。為什麼之前別的搜尋引擎爬取內容就沒事兒,頭條一爬小網站就崩潰了呢?

其實從今年 6 月開始就有網站主抱怨了這個 Bytespider。而且從今年 6 月到 10 月,越來越多的人開始在網上爆料自己也遇到了類似的情況。在國外的程式設計交流網站上大家也有討論啥是「Bytespider」,並且指出它非常不地道的無視了自己網站的 robots.txt 協議:

clipboard.png

“Given they don't respect the robots.txt file,I'd consider them block-fodder.”

什麼是 robots.txt 協議?

clipboard.png

名詞解析:robots.txt 協議

也稱為爬蟲協議、爬蟲規則、機器人協議等。robots.txt檔案是儲存在網站根目錄下的 txt 文字文件。這是網站和蜘蛛之間的協議。該網站告訴搜尋引擎哪些頁面可以被抓取,哪些頁面不想通過機器人協議被抓取。

即使不是運維工程師,關注網際網路的人應該也聽說過 robots 協議。當年的 3Q 大戰就涉及到了一場關於遮蔽與反遮蔽的爭論,也把原本非常小眾的 robots 協議變成了媒體熱詞。

robots 協議的出現要追溯到 1994 年。

在網際網路的蠻荒發展時代,搜尋引擎可以通過爬蟲直接進入網站的管理後臺,把所有網頁資訊全部收錄。除了涉及隱私外,爬蟲程式的反覆收錄在 20 年前對網站頻寬也是不小的負載。

面對這個情況,荷蘭工程師 Martin Koster 提出通過設立名為 robots 規範的網站訪問限制政策,來解決網路爬蟲帶來的潛在風險與威脅,這一提議收到了廣泛的認可與應用。

robots 協議自成立以來在全球受到嚴格遵守,也獲得了很多的成效。我們還是通過一個 3Q 大戰為例子,來看一下 robot.txt 協議的價值。

名詞解析:3Q 大戰

2010 年 9 月 27 日,360 釋出了其新開發的「隱私保護器」,專門蒐集 QQ 軟體是否侵犯使用者隱私。隨後,QQ 立即指出 360 瀏覽器涉嫌借黃色網站推廣。2010 年 11 月 3 日,騰訊宣佈在裝有 360 軟體的電腦上停止執行 QQ 軟體,使用者必須解除安裝 360 軟體才可登入 QQ,強迫使用者“二選一”。雙方為了各自的利益,從 2010 年到 2014 年,兩家公司上演了一系列網際網路之戰,並走上了訴訟之路。

兩大搜尋巨頭的戰役,可謂牽一髮而動全身,甚至逼迫了全網站隊。但最終的訴訟結果,也讓行業有了一個法律層面的參考。

在百度訴 360 一案中,法院認定 robots 協議雖然不是法律意義上的合同,但屬於“搜尋引擎行業內公認的、應當被遵守的商業道德”,如果違反 robots 協議、爬取網站明確不允許爬取的內容,會構成違反《反不正當競爭法》第二條的原則性規定:“經營者在市場交易中,應當遵循自願、平等、公平、誠實信用的原則,遵守公認的商業道德。”

但另一方面,robots 協議本身也不能不合理的限制特定爬蟲。就像 360 提出百度的 robots 協議允許谷歌、微軟必應、雅虎、搜狗等搜尋引擎抓取,但卻不允許 360 抓取內容,同樣屬於不正當競爭與限制。

法院也認定,在 360 向百度提出修改 robots 協議的主張之後,百度未能在合理期限內說明拒絕 360 爬取的合理理由,所以從這個時點之後,360 的爬取行為不再構成不正當競爭。

爬蟲的法律風險

clipboard.png

如果避開反爬措施,除了構成不正當競爭,還有可能引發刑事責任。我們還是用頭條的一個案子來做案例,不過這次他們的身份是「被爬方」。

之前,有一家上海的企業破解了位元組跳動的防抓取措施,使用「tt_spider」檔案進行視訊資料的抓取,經法院判定,造成了位元組跳動的技術服務費損失 2 萬元。最終判處該公司罰金 20 萬元,主管人員罰金 3 - 5 萬元不等、有期徒刑 9 個月到 1 年不等。

爬蟲的濫用終於被制裁了,但事情都是有正反兩面的。反爬取措施的濫用又如何規範與避免?

如果反爬措施被濫用,就像 3Q 大戰中不合理的限制競爭對手、維持壟斷地位,是否也不利於數字資訊共享、促進競爭?如何平衡兩方面的利益,可能通過未來的案例會衍生出更精密的機制。

需要注意,上面我們提到的兩種情況中,是否構成非法獲取罪或者不正當競爭,與資料是否為公開資訊是沒有關係的。即使獲取的資料為公開資訊,也不影響定性。

最後,即使上述情形都不涉及(既沒有違反Robots協議、也沒有反爬措施、所有資料都是公開資訊),也不可以隨意爬取。如果你對爬取資料的使用,侵犯了對方的商業價值,仍然有可能構成不正當競爭。

這個在我們平臺就是一個很好的例子,比如我們社群網站的文章、問答內容經常被非法的爬取搬運。在這裡不展開詳細的討論,但還是想要號召大家都能夠遵守一下基本的操守和底線。

如何避免被爬蟲「誤傷」?

就像這次 Bytespider 的爬蟲,雖然不算是 DDos,但對於很多小網站來說真的「遭不住」。

除了 robots.txt 封禁之外,主動的做法可能就是在伺服器上直接識別爬蟲名稱然後進行封禁,同時也可以在伺服器上封禁爬蟲的伺服器等。比如:

  • 在 robots.txt 協議中封禁或者限制相關爬蟲 User-agent;
  • 在伺服器上或者 CDN 節點上遮蔽相關爬蟲的 IP 段;
  • Nginx 伺服器也可以封禁相關的爬蟲 User-agent;
據藍點網最新更新的宣告中顯示,頭條搜尋已經對網路上提到的各類問題進行優化升級,後續頭條搜尋還將不斷完善和迭代,努力為站長們提供更好的體驗。

如果後續發現其他問題或者有任何意見建議,站長和網站管理員們均可傳送郵件到 bytespider@bytedance.com 進行反饋。

總而言之,爬蟲有風險,爬取需謹慎。

越是大體量的公司,越應該遵守社會規則、承擔社會責任。在資料氾濫、科技進步的時代,合法與違法之間存在很多灰色地帶,相關的法律法規也還有待完善,但我們作為社會中的一員,作為承擔著社會責任的「社會人」,還是要儘量的遵守我們自己的道德底線。

別老想著鑽空子,給別人添堵的最後,難免會給自己招來麻煩。

部分資料來源:

藍點網:頭條搜尋還沒有推出但派出的ByteSpider爬蟲令小網站痛苦不堪 ... stackoverflow:What is the
“Bytespider” user agent? 知乎話題:帶有 Bytespider 字樣的 UserAgent 是不是位元組跳動的?
差評:爬資訊爬到伺服器癱瘓,今日頭條的頭條搜尋成了小網站的噩夢!

clipboard.png

相關文章