每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

時間來到三月底,此次“新冠”疫情的影響已經持續了2個月有餘,在多數人居家隔離的日子裡,互聯網成為了我們與外界溝通的主要渠道。而很多企業也是開放了有期限的免費服務,比如教育和娛樂資源,但卻被某些無良的黑產盯上,遭到惡意爬蟲攻擊。

首先,我們來看一下目前開放的免費資源有哪些。

學術資源類

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

網課類平臺

教育部組織的 22 個在線課程平臺免費開放。包括愛課程、學堂在線、智慧樹、學銀在線、優客聯盟、好大學在線等等。

優秀內容平臺電子資源

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

上文提到,圖片中列出的某些企業資源原本是收費使用,但特殊時期響應號召所以變成了免費,但這一舉動卻讓黑產看到了有利益可尋,紛紛出“洞”。

案例:機械工業出版社遭遇惡意爬蟲攻擊

2020年2月,機械工業出版社宣佈免費開放 6000 餘種電子書,其中包括很多專業書籍。不久之後,官方接口陷入崩潰狀態,搜索引擎出現其他相關入口。這很有可能是遭遇了大量惡意爬蟲攻擊。

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

通過追蹤,目前找到了兩個機械工業出版社的爬蟲,兩個都是腳本爬蟲,一個爬取web端的數據,另一個爬取H5端的數據。

web端 python爬蟲

爬蟲主要使用 requests 進行爬取,通過獲取所有的圖書連接最終到亞馬遜的 CDN 上面去下載內容。

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

獲取所有的書籍分類,所有的分類是提前保存到項目裡面的,做了目錄和中文名稱的對應關係,猜測是為了後續保存 PDF 名稱使用的,也是為了從中文分類到 CDN 鏈接做一個映射使用,部分示例如下:

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

獲取該分類下的所有圖書,下面使用偽代碼說明:

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

最後保存所有的下載鏈接,項目中並沒有給出所有圖書批量下載的代碼,但是從倉庫的描述來看,之前提供了分片下載的代碼。從 github 的 commit 歷史裡面找到了之前的多線程下載代碼,本來以為就是一個簡單的爬蟲,但是到這裡卻發現並不那麼簡單。代碼的實際用途是從 AWS 下載 PDF,這個地方為了防止 AWS 攔截,還做了一些偽裝。

偽裝 HTTP header

模擬瀏覽器添加了 http header,並且增加了分段下載的支持。

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

多線程支持

為了加速下載倉庫使用了多線程下載,但是作者為了防止 AWS 封禁,使用信號量控制同時只能運行三個線程。

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

H5端 爬蟲

移動端的爬蟲稍微比web端複雜一些,經過一番review發現主要是獲取書籍的鏈接更加複雜了,並且移動端不能直接獲取PDF,只能獲取到HTML,爬蟲這裡使用的主要手段是通過獲取每個章節的HTML,最終通過將HTML轉換成PDF完稱書籍的爬取。

H5端爬取的大致思路:

1.枚舉的方式獲取所有的圖書 ID (作者猜測總共圖書不超過 10000);

2、因為前端有 cookie 的校驗,無法獲取 token 所以在前端直接發起請求, 並保存內容,後續處理(類似模擬器的方式);

3、最終通過 HTML 轉 PDF 的形式保存圖書。

整個過程中比較難處理的是 token 的獲取方法,因為筆者沒有找到破解辦法,最終使用類似模擬器的形式獲取所有的HTML連接內容。

截止到目前,官方的入口還在升級維護中。想來是有些心寒,為眾人抱薪者,卻凍斃於風雪之中。

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

來自爬蟲的威脅

爬蟲,是一種自動化抓取網絡資源和信息程序或者腳本。爬蟲有好有壞,好的爬蟲為我們提供便捷的服務,比如搜索引擎。惡意爬蟲會盜取企業核心資源信息,比如上文中提到的內容資源,高頻訪問侵佔服務器資源,導致企業服務崩潰,這無疑是在給企業增加運營的成本。

除了上文提到的出版社,清華大學出版社文泉學堂免費為用戶提供近三萬種正版電子書,同樣遭到了大量惡意爬蟲的攻擊,導致網站服務器處於崩潰的邊緣,不得不進行系統升級和維護,暫停為廣大讀者服務。

每週一喂丨惡意爬取上萬本電子書籍?談談薅“公益”羊毛的黑產!

2020 年了,內容付費於我們而言不再是陌生的詞,大家都樂於為好的內容買單。我們清楚的知道,好的內容和資源對於一家企業而言意味著什麼,而在非常時期遭受的惡意爬蟲攻擊,讓這些企業也是很無奈。

e小安說:

爬蟲與反爬蟲的對抗歷時久遠,很多企業也都會嘗試保護自己的核心資源內容。如今,簡單的反爬技術很容易被破解繞過,簡單的反爬蟲機制已經無法抵擋住惡意爬蟲的攻擊。傳統的反爬蟲技術包括IP黑白名單、UA 檢查和頻率控制,但是這些早已經不能有效的防住惡意爬蟲了,對付惡意爬蟲攻擊,仍然是一項任重道遠的工作。


分享到:


相關文章: