分享

反爬蟲戰爭十八年史 | 香港矽谷

 wwzs123hk 2019-03-22

在一大堆技術術語里,最為被普通人所熟知的大概就是「爬蟲」了。其實爬蟲這個名字就已經特別好地表現出了這項技術的作用——像密密麻麻的蟲子一樣分佈在網絡上,爬行至每一個角落獲取數據;也一定程度上表達了人們對這項技術的情感傾向——蟲子或許無害,但總是不受歡迎的。

有關爬蟲的功能、益處或危害,此前已經有過很多討論。因為爬蟲技術造成的大量IP訪問網站侵佔帶寬資源、以及用戶隱私和知識產權等危害,很多互聯網企業都會花大力氣進行「反爬蟲」。

相比爬蟲技術本身,反爬蟲其實更加複雜,發展歷程也更加有趣。

我們如何反爬蟲?先禮後兵、再對簿公堂


幾乎是和爬蟲技術誕生的同一時刻,反爬蟲技術也誕生了。在90年代開始有搜索引擎網站利用爬蟲技術抓取網站時,一些搜索引擎從業者和網站站長通過郵件討論定下了一項「君子協議」—— robots.txt。即網站有權規定網站中哪些內容可以被爬蟲抓取,哪些內容不可以被爬蟲抓取。

這樣既可以保護隱私和敏感信息,又可以被搜索引擎收錄、增加流量。

爬蟲技術剛剛誕生時我們還處於上古時代,互聯網是一片賢者雲集的樂土,大多數從業者都會默守這一協定,畢竟那時候信息和數據都沒什麼油水可撈。但很快互聯網上開始充斥着商品信息、機票價格、個人隱私……在利益的誘惑下,自然有些人會開始違法爬蟲協議了。

當君子協議失效,我們開始改用技術手段阻攔爬蟲的入侵。比如從訪問數量上發現爬蟲,當我們在某一網站瀏覽過快時,系統往往會要求輸入驗證碼,就是因為這種快速瀏覽的行為很接近爬蟲。或者是不定期改變HTML標籤,使之無法與Web排序匹配來限制爬蟲。

但是即便如此,我們也沒有任何方法可以禁止爬蟲在網站中出入,只能加大爬蟲的訪問難度。如果網站可以供給人類訪問,就一定也可以被爬蟲訪問。而且如果從底層完全組織爬蟲抓取,也很可能讓網站無法被搜索引擎收錄。

所以,在所有的先禮後兵都對爬蟲失效時。最後反爬蟲的手段只有最後一項——對簿公堂。

兩場官司和十七年,爬蟲沒變,我們變了


歷史上第一樁關於爬蟲的官司誕生在2000年,eBay將一家聚合價格信息的比價網站BE告上了法庭,eBay聲稱自己已經將哪些信息不能抓取寫進了爬蟲協議中,但BE違反了這一協議。但BE認為eBay上的內容屬於用戶集體貢獻而不歸用戶所有,爬蟲協議不能用作法律參考。

最後經過業內反覆討論和法庭上的幾輪唇槍舌戰,最終以eBay勝訴告終,也開了用爬蟲協議作為主要參考的先河。

但這也引起了很多人的不滿,難道爬蟲能不能爬、怎麼爬、誰的爬蟲能爬,都得由被爬的公司決定嗎?掌握了這種權力時,商業世界的唯利和自私立刻暴露無遺。

有一個說法是,互聯網上50%的流量都是爬蟲創造的。這個說法雖然誇張了點,但也體現出了爬蟲的無處不在。爬蟲之所以無處不在,是因為爬蟲可以為互聯網企業帶來收益。

就拿電商網站來說,很多電商網站是願意被比價網站或者其他購物信息網站爬取信息的,因為這樣能夠給他們的商品帶來更多流量。但他們不願意被其他電商網站獲取價格信息和商品描述,因為擔心其他電商網站惡意比價或進行抄襲。同時他們又經常去爬其他電商網站的數據,希望能夠看到別人的價格。

這種糾結又複雜的心情就像學霸間的競爭,學霸可以給學渣抄筆記,因為知道學渣再怎麼努力也就是六七十分的水平,但學霸對其他學霸一定會嚴防死守,因為只有學霸和學霸之間才有真正的競爭。所以像京東和淘寶這樣的「頂級學霸」都會在協議中寫清楚,禁止對方爬取數據。

當然,至於雙方是否遵守這一君子協定就很難說了。

同時也有一些網站,一開始會默許其他網站爬取數據,一段時間過後卻又會將爬取數據的網站告上法庭。最典型的例子就是領英,領英在2017年曾經將一家名為HiQ的數據分析企業告上法庭,原因是認定這家企業抓取領英用戶的就職狀態信息,提供給另外兩家利用機器學習分析員工跳槽傾向和職業技能的企業。

結果卻是即使打着保護用戶隱私的旗號,領英仍然敗訴並且被聯邦法庭要求開放數據接口。原因是HiQ已經這樣爬取領英的數據長達五年,領英一直知情並且曾經去參加過HiQ組織的論壇峰會。如今領英自己開展了和HiQ類似的業務,就要斷了HiQ的生路。

從2000年到2017年,之所以會有這兩場結局截然不同的官司,是因為我們製造爬蟲和反爬蟲的初衷都發生了變化。從一開始的獲取信息和保護隱私,變成了如今的獲取商業利益和反制對手

爬蟲製造者說:道德是反爬蟲的最好方法?


就着這個話題,我們還和兩位碼Python的程序員朋友聊了聊。

要知道程序員們是一種非常具有個性的生物,很難在問題中達成一致,尤其是在「什麼才是最好的語言」、「早期的鎚子手機是不是垃圾」這樣的問題上。但在反爬蟲的問題上,程序員們似乎呈現出了空前的一致。

一位就職於小型OTA的程序員表示,公司在剛剛起步時經常會要求他們爬取旅遊網站的旅遊路線,這時他們通常會選擇中青旅遨遊網這樣傳統企業基因更濃厚的網站,因為他們「反爬蟲能力幾乎為0」。

而另一位大廠程序員表示,公司通常會把爬取數據這樣的臟活累活外包出去,而在反爬蟲時,如果數據爬取方技術足夠好,不給服務器帶來過分的帶寬壓力,在滿足了KPI前提下他們甚至會睜一隻眼閉一隻眼。

同時雙方都承認,有時候會自己出於興趣製作一些小爬蟲程序,方便獲取一些數據。

在提到爬蟲技術的合法性時,他們告訴我,法律很難阻止爬蟲技術。除非在競品之間、涉及到對用戶原創內容的批量搬運,類似之前360快視頻批量搬運B站視頻、以及近期出現的大眾點評批量搬運小紅書內容等等。至於那些爬取他人數據用作分析的,一方面難以取證確定對象,另一方面整個訴訟過程會非常漫長,企業很難清楚的展現出自己哪裡受了損失,通常是以「不正當競爭」這樣的萬金油控訴對方。

當我們問到他們,從技術角度有沒有什麼好的反爬蟲手段時,他們告訴我最好的反爬蟲手段並非技術也並非法律,而是公關——帶上截圖找幾個媒體爆料一下,帶點侵權、入侵數據庫、隱私信息方面的影射,就可以立刻從道德的制高點搞臭對方,讓人不會注意到你司的反爬蟲技術不到位。如果對方是上市公司,效果更佳。

當AI時代遇上AI爬蟲,戰爭才剛剛開始


「道德反爬蟲」雖然只是笑談,但一定程度上表示出了企業技術人員對爬蟲的無可奈何。但可以預見的是,隨着大數據和機器學習應用越來越廣,對爬蟲睜一隻眼閉一隻眼、與爬蟲和平共處的時代很快就要過去了。

最主要的問題是,爬蟲的出現會極大地增加數據分析難度。

當數據分析企業利用爬蟲獲取數據進行分析時,大量爬蟲的存在正在讓這些數據失實。文章瀏覽量的失實讓我們誤判人們對新聞事實的關注程度、爬蟲衍生出的虛擬IP需要在數據清洗時剔除……技術越高超的爬蟲,在行為模式上就越接近真人,也就更加增加數據分析時的難度。久而久之,那些我們以為從人類行為中尋找規律的算法,反而尋找到的是機械人的行為規律。

同時爬蟲帶來的流量波動也會讓機器學習算法產生誤判。

最典型的例子是機票的動態定價,網站會結合當下瀏覽量判定機票的搶手程度並且調整價格。這時如果有大量爬蟲在瀏覽網站,算法就會給出和實際情況並不符合的定價,也損傷了消費者購買到廉價產品的權益。

甚至一些數據分析企業還打出了「AI爬蟲」的招牌,讓爬蟲腳本的行為模式更加接普通用戶,讓被爬的企業難以發掘,甚至還會利用圖像識別技術破解網站用作攔截的驗證碼。

在這種情況下,網站分辨人與機械人就變得更加困難也更加重要。很多網站也開始利用機器學習技術反制AI爬蟲,比如為圖形驗證碼動態打碼應對圖像識別。同時現在PC和移動終端的硬件技術發展,也讓生物識別這種更複雜的驗證手段有可能加入戰鬥。雙方正在站在同一水平線上,利用技術互相鬥法。

可以說爬蟲技術和反爬蟲技術之間鬥爭了十幾年,可真正的「戰爭」卻從現在才剛剛開始。在徹底制服惡意爬蟲之前,對於一切大數據、精準預測之類的「吹噓」,我們最好保持着三分懷疑。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多