今日头条的 ByteSpider,怎么就成了小网站的“噩梦”?
正文:
今日頭條,最近又上頭條了。
2019 上半年,今日頭條正式公布開始做搜索引擎。本來單純的以為頭條和微信一樣,做的是垂直搜索或者站內搜,沒想到做的是抓取全網內容的全新搜索引擎。?
這個決定其實也是在情理之中。畢竟頭條系產品現在的流量已經到了一個很恐怖的量級,擴展做搜索具有天然的優勢。
但我們今天不聊“字節跳動搜索能否干翻百度”,只想說一下轟轟烈烈的「搜索大戰」之下,頭條的一個操作讓很多小網站「痛苦不堪」。
圖片來源:藍點網
我們的社區(sifou.com)用戶很多都有自己的個人網站和博客,雖然流量有高有低,畢竟是大家自己的后花園。
但最近,很多社區用戶紛紛跟我反饋,一種名為 Bytespider 的爬蟲爬取他們的網站信息的頻率太高,直接把網站搞癱瘓了。大家順著爬蟲的 IP 地址查了一下,發現 Bytespider 應該就是今日頭條的搜索爬蟲。
更有甚者,短短一上午時間就收到了 46 萬次請求,消耗掉服務器 7 .42GB 流量。這對平均日活可能都沒有過千的小網站來說,已經算得上一次小型的 DDoS 攻擊了...
名詞解析:DDos攻擊
分布式拒絕服務(DDoS:Distributed Denial of Service)攻擊,是指攻擊者利用大量“肉雞”對攻擊目標發動大量的正?;蚍钦U埱?、耗盡目標主機資源或網絡資源,從而使被攻擊的主機不能為正常用戶提供服務。
為什么會有爬蟲?
名詞解析:網絡爬蟲
web crawler,也叫網絡蜘蛛(spider),是一種用來自動瀏覽萬維網的網絡機器人。其目的一般為編纂網絡索引。網絡搜索引擎等站點通過爬蟲軟件更新自身的網站內容或其對其他網站的索引。網絡爬蟲可以將自己所訪問的頁面保存下來,以便搜索引擎事后生成索引供用戶搜索。爬蟲訪問網站的過程會消耗目標系統資源。
爬蟲就是自動抓取網絡內容的一種程序,它會定時定量的把互聯網上的內容爬下來,匯總存儲到自己的服務器上。放到搜索引擎上來說,我們每次搜索的時候,搜索引擎就會在這些爬取到的內容里進行匹配相似度高的內容反饋給你。
所以做搜索引擎的公司離不開爬蟲。大公司也都會給自己的爬蟲起一個名字:谷歌的爬蟲叫 Googlebot,百度的爬蟲是 Baiduspider,搜狗的爬蟲 Sogouspider,而今日頭條就是上文中的 Bytespider。
扯遠了,我們繼續討論開頭的這個事情。為什么之前別的搜索引擎爬取內容就沒事兒,頭條一爬小網站就崩潰了呢?
其實從今年 6 月開始就有網站主抱怨了這個 Bytespider。而且從今年 6 月到 10 月,越來越多的人開始在網上爆料自己也遇到了類似的情況。在國外的編程交流網站上大家也有討論啥是「Bytespider」,并且指出它非常不地道的無視了自己網站的 robots.txt 協議:
“Given they don't respect?the robots.txt file,I'd consider them?block-fodder.”什么是 robots.txt 協議?
名詞解析: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 的爬取行為不再構成不正當競爭。
爬蟲的法律風險
如果避開反爬措施,除了構成不正當競爭,還有可能引發刑事責任。我們還是用頭條的一個案子來做案例,不過這次他們的身份是「被爬方」。
之前,有一家上海的企業破解了字節跳動的防抓取措施,使用「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 是不是字節跳動的?差評:爬信息爬到服務器癱瘓,今日頭條的頭條搜索成了小網站的噩夢!
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的今日头条的 ByteSpider,怎么就成了小网站的“噩梦”?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAVEN版本依赖的原则及scope
- 下一篇: <DependencyManagemen