爬蟲出海Step by Step(一)

語言: CN / TW / HK

攝影:產品經理

小甜點

上週的文章《 一日一知:國內爬蟲開發人員的未來 》釋出以後,很多同學私信我表示對爬蟲出海很有興趣,希望我能詳細介紹一下。因此,我準備用幾篇文章來介紹爬蟲出海的具體做法細節和注意事項。

今天我們的話題是,如何規避法律風險。

如果你是個人開發者,那麼你直接寫爬蟲爬就可以了。不會有人跨國來抓你的。

如果你是小公司,並且在海外沒有分公司,那麼你也可以像個人開發者一樣直接爬。

如果你是大公司,關注自己的國際聲譽;或者你的公司在海外有分公司,那麼你需要注意如下的幾個問題。

藏好自己

很多網站幾乎沒有反爬蟲機制。你直接使用 requests.get(url) 就能獲取資料,連 headers 引數都不需要加。網站反不反爬蟲是網站的事情,但作為爬蟲,把自己偽裝成正常的瀏覽器請求,並使用代理IP是基本的要求和素質。

否則,等有一天有人在推特上@你的公司,並附上了Nginx的IP記錄,那你的公司可就倒了大黴了。

GDPR或者其它相關法律條文

GDPR [1] 是歐洲的資料保護法規,它要求你不能在未經允許的情況下擅自收集歐洲使用者的個人資訊。在歐洲運營的網際網路公司,資料也不能離開歐洲。

Google和Facebook曾經都因為違反了GDPR而遭受上億歐元的罰款。如果你的公司在歐洲有分公司,就需要特別注意這一點,否則你將會面臨鉅額罰款或者被查封公司。

這種情況下,如果你要做爬蟲,建議是爬哪個國家的資料,就在那個國家本土部署爬蟲。通過Aws或者GCP購買那個國家的伺服器,把爬蟲部署到伺服器上面。同時,Hive/Hue等等資料分析相關的服務,也需要部署到對應的國家。

如果你能招聘外籍員當然最好,只讓那邊的員工來接觸資料。如果你需要讓中國的員工去分析資料,那麼你需要準備一個VPN,把中國的電腦和爬蟲伺服器、資料分析伺服器組建起一個虛擬的區域網,然後讓這邊的員工連上去進行操作。

如果最後分析以後的資料,會以網頁的形式呈現給客戶,也需要把網站搭建在對應國家的伺服器上,然後客戶通過VPN連上去檢視。

如果某個大洲有多個國家都需要爬取,你也可以在Aws或者GCP上購買這個洲的伺服器,而不是具體每一個國家。例如你要爬英法意德的資料,你不需要在四個國家各搭建一套系統。整個歐洲共用一套就可以了。

另外,就是無論如何,不要涉及使用者個人資訊。

資料不只有一家

國外有些網站的反爬蟲特別強,例如Facebook,封賬號封得非常厲害。又比如App Store的App評論和星級,也不太好直接抓。但是,已經有一些第三方網站使用某種我們不知道的方法,抓了他們的資料並在自家網站公佈了,那麼,你可以去抓這些第三方網站的資料。

有些網站開放了API,申請他們的API以後,直接就能根據文件呼叫API拿到資料,例如推特。不過現在推特已經不批准新API的申請了。我們公眾號粉絲群裡面有一個同學手上還有一個獲得了開放API許可權的賬號,很多人找他借來爬資料。

還有很多網站,直接開放了全文的RSS,你直接解析RSS地址就能拿到最新的內容了。

善於利用網站的多個版本

歐美這些注重政治正確國家,會額外關注殘障人士和老年人的網頁使用體驗,並設定了專門的頁面。當主站特別難爬的時候,找到他們給殘疾人設計的頁面或者老手機設計的頁面,爬起來就很容易。

例如Facebook主站非常難爬,但是如果訪問 https://mbasic.facebook.com/ 就非常簡單,這個版本的頁面是給2G老手機使用的,頁面上沒有JavaScript,所有請求都是通過GET或者POST的引數實現的。

總結

如果你是國內的一家大公司,擔心做海外爬蟲影響公司的聲譽,那麼你可以在目標國家開個分公司來爬,或者找對應國家的爬蟲外包團隊。資料爬好以後,就存在那個國家的伺服器上。國內的資料分析員工通過VPN連上去以後,遠端分析資料。不要嘗試把資料拉回國內。即使加密以後傳回國內也不行。

另外,一個數據有多種抓取方式,一種方式不行,就多試幾種,總會有一個意想不到的渠道獲取資料。

下一篇文章,我們來聊聊怎麼尋找資料來源。

參考文獻

[1]  GDPR:  https://en.wikipedia.org/wiki/General_Data_Protection_Regulation

未聞 Code·知識星球開放啦!

一對一答疑爬蟲相關問題

職業生涯諮詢

面試經驗分享

每週直播分享

......

未聞 Code·知識星球期待與你相見~

一二線大廠在職員工

十多年碼齡的程式設計老鳥

國內外高校在讀學生

中小學剛剛入門的新人

“未聞 Code技術交流群” 等你來!

入群方式:新增微信“mekingname”,備註“粉絲群”(謝絕廣告黨,非誠勿擾!)