爬蟲到底違法嗎?這位爬蟲工程師給出了答案
六月分享主題:爬蟲 HTTP詳解 網頁結構簡介 一文帶你瞭解爬蟲
大家好,本期將為大家來採訪一位爬蟲工程師,與他相識是在一個技術號主群中,只有他懟了我的文章,所以也算不打不相識!他便是小周碼字號主:Loco。 文章主要分為三部分,第一部分為Loco自述:簡單講述一下他是如何從大學生一步一步走到現在。第二部分為提問解答:豬哥收集了近100個問題,然後由Loco大佬自行選擇回答,快看看你有沒有被翻牌吧!第三部分是豬哥從Loco回答中提取的一些關鍵字,希望能加深大家的記憶。
一、自述
1.關於大學
我讀的大學是個野雞學校,雖說是一個計算機專業,但實際的課程內容很雜。CAD、3DMAX、Office全家桶之類的都會有,所以在校期間對程式設計方面的成長並不大,當時也就只有寫個批量改檔名的工具這種水平。
畢業以後到目前為止也就在兩家公司工作過,一家是上家公司,另一個是現在這家,總體路程還算順利吧,沒遇到過什麼大的挫折,各種需求也能逼著自己成長。
2.接觸爬蟲
我接觸爬蟲這方面的起因,其實是因為找實習,當時快畢業了嘛,要先找個實習鍛鍊鍛鍊。但是因為我認為我能做的方向比較多,也還沒有想好到底往哪個方向發展比較好,所以就開始看知乎的相關回答,然後發現數據相關的好像都不錯,爬蟲這個方向看起來也挺有意思的,就邊學邊開始海投簡歷。
投著投著我就發現了一個問題,投簡歷這個事情太機械化了,能不能寫個程式幫我自動投?我就可以騰出這部分時間來乾點別的事情了,這樣還能順便練一練寫爬蟲的技術。
萬幸的是,當時的拉勾、智聯、實習僧、58等招聘網站的反爬基本沒有,對於一個初學爬蟲的人來說還是可以輕鬆地自己解決:搜尋-> 獲取職位詳情->投遞簡歷
於是,一個自動投簡歷的小工具就誕生了,雖然程式碼十分簡陋,完全就是用requests庫以一個流程化的方式寫下來的,但已經足夠達到我想要的效果了。在那之後,我每天就只需要等待面試通知和電話面試,發現有合適的就去面試一下就好了,節省了大量的時間用在搞專案上。
3.第一家公司
然後大概這麼投了一個多星期吧,中間面了十多個公司,有大有小,但都是要麼不太滿意、要麼對應方向的技術深度還不夠,直到碰到了上家公司。那是一家創業公司,可能因為創始人是做技術出身的關係吧,公司氛圍很不錯,跟老闆聊起來也很舒服,然後公司本身也是專門做爬蟲相關產品的,所以就去了這家公司。
在這家公司的那段時間應該是我技術水平成長最快的時候了,因為每天做的事情就是寫爬蟲,當時我們團隊將應用商店排名前100的所有APP都“弄”了
4.目前
從那離職以後我進了現在這家公司,目前做的主要就是區塊鏈搜尋引擎的資料收集。看似簡單但實際還是很有挑戰性的,因為區塊鏈的特性會導致資料量非常大,而且區塊鏈還不像傳統網際網路網站那樣有個標準化的HTML,存在著各種麻煩的問題。所以對於我自己的技術水平增長速度也是有很大的影響的。
總結一下其實還是那句話,需求逼的。
二、解答
在採訪大佬的時候,我在朋友圈徵集了大概100個問題,以下是大佬隨機挑選的21個比較有代表性的問題進行解答。
注:以下“爬蟲”均指“垂直爬蟲”
1.非爬蟲方向的技術轉行做爬蟲是否可行?
可行,而且有一定的基礎會很容易上手,至於深入的部分就看自己了。
2.非技術轉行做爬蟲是否可行?
可行,但我認為較難,因為爬蟲做深了以後是需要你瞭解各種相關領域知識的,而你現在對這些領域的東西一無所知,甚至可能連程式設計都還不知道怎麼開始,起點會比有基礎的人低很多。
3.爬蟲工作日常如何?加班多不多?
這個得看公司的,有些公司搞得都是些天天更新反爬的平臺(比如工商資訊相關的),那基本就是得一直盯著看會不會出問題,一不小心就會要加班。
4.爬蟲對於學生黨的用處體現在哪些地方?
這個問題看個人,因為爬蟲技術可用的地方太多了,沒法一個一個地都拿出來說。比如你想搞個自動簽到的工具,這其實本質上就是爬蟲;比如你想搞個自動回覆設定內容的機器人,這其實本質上也是爬蟲。
5.學到什麼程度才能入職爬蟲工程師?
我覺得首先發請求不用說了吧?抓包工具的使用也不用說了吧?熟練掌握XPath、正則表示式這種解析工具也是基本的,然後JSON之類的傳輸格式至少要了解過長啥樣吧,再就是JS逆向總得會一點吧(從只改變數名函式名混淆級別的程式碼中找出加密引數生成部分的程度)。差不多會這些以後,再自己做幾個專案,應聘個初級爬蟲工程師沒啥問題。
6.如何成為一名優秀的爬蟲工程師?
垂直爬蟲做到後面本質上就是逆向,你需要有良好的逆向思維方式,並且對一些安全領域的騷東西也有一定的瞭解,這樣你才能遊刃有餘地處理高難度的反爬。
7.學爬蟲的學習路線?
上面的入職水平了解一下?然後就是可以關注一下我的公眾號「小周碼字」(豬哥強力推薦)學習進階內容,網上其他的教程絕對沒有講得這麼細的。
8.大約學習並從事爬蟲幾年才可以達到一個不錯的高度?
這個問題也很看個人,我覺得主要看有沒有需求逼迫成長吧。之前招人的時候,很多三年經驗的也就比入門水平稍微好一點,他們在工作時所遇到的難點幾乎全是依靠自動化測試工具,對逆向水平毫無增長。所以建議還是多依靠逆向手段去解決問題,成長速度會很快。
9.薪資方面如何,在幾年內可以達到15K?
同上,標15K及以上的招聘JD還是挺多的,看看招聘需求就知道大概到什麼程度了。
10.面試爬蟲哪些技能點是加分項?
豐富且有深度的逆向經驗、熟悉通訊協議底層實現、做過騷東西等各種,但主要還是逆向經驗。
11.作為一名爬蟲工程師,對該崗位的前景如何看待?
未來主要內容在APP上的平臺應該會越來越多,難度也會越來越高,所以對於爬蟲工程師的逆向水平要求會越來越高,只會簡單逆向甚至不會逆向的人找工作會越來越難。
12.爬蟲和資料探勘是一樣的嗎?
不一樣,爬蟲只是將資料取回來,具體怎麼分析才是資料探勘的事情。
13.爬蟲是否和黑客差不多?
差很多,與上個問題類似,只不過“黑客”這個詞太寬泛了,黑客也是有具體方向的。
14.千奇百怪的驗證碼只能對接打碼平臺嗎?有啥其他辦法?
自己破唄,逆向+機器學習。
15.現在有用pyppeteer嗎?還是一直是selenium?
都不用,因為效率太低了。
16.如何爬xx平臺?
涉及法律問題,這種針對某個平臺的東西是不能細說的。
17.爬蟲違法嗎?如何避免過線導致的違法?怎麼規避法律風險?
算是擦邊球吧,其實你即使遵守規則去爬別人的網站,只要人家想搞你,還是可以讓你做的事情變成違法的。所以建議不要做太過分的事情,畢竟狗急了也會跳牆。
還有就是不要為一些明顯是做灰黑產的人/公司寫程式碼,一旦他們出事了,你也會被牽連。
知乎上之前那個很火的被抓了的人,從回答內容中來看其實就是做打碼平臺的那個微涼,他這一個平臺據說賺了至少千萬,主要應該是提供給做黑產的人使用了,這種其實被抓是遲早的事。最好的避免違法的辦法就是明顯覺得不太好的事情就不要去碰,基本就不會有啥問題。
18.如何有目的地爬取到真正想要的資料?
讓需要資料的人提需求,如果你自己就是那個需要資料的人,那就去做市場調研,看看你需要的資料在哪裡能找到。
19.反爬蟲最先進的技術是什麼?最有效的技術是什麼?
最先進的技術其實就是使用在PC平臺上已經玩爛的各種反破解技術將行為監測點(裝置指紋、使用者操作等)隱藏起來,然後傳給服務端做行為識別,如果操作非人類或者缺少某些東西就觸發風控。
最有效的技術其實不是技術而是方法,這個方法就是賬號收費,將你的資料變成需要花多少錢才能看到這樣子的,就能做到啥高階技術都不用上、輕鬆提高爬蟲方的獲取資料成本的效果,當然這也需要結合良好的產品設計,否則普通使用者的體驗會很差。
20.請問在xx領域有哪些應用?
這個應該是對應領域的人自己思考一下自己拿到那些公開資料究竟可以做什麼。
21.需要大量賬號的平臺成本過高該怎麼辦?
人家就是依靠這種方式來提高你成本的,你如果覺得成本過高要麼放棄要麼換一條路線獲取資料。
三、關鍵字
1.實踐
Loco在投簡歷時直接使用爬蟲進行投簡歷,實習就有這種騷操作,讓我明白一個道理:實踐是獲得高薪的一個捷徑!
2.需求逼的
和Loco大佬深有同感,尤其在最開始工作的那幾年,需求是推動學習成長最快的方法,不逼一把自己,怎麼知道你的上限有多高?
3.逆向
和多位爬蟲工程師交流過,一致認為逆向是最重要的一項技能,後面豬哥也會多學習並寫一些逆向方面的教程!
4.法律意識
爬蟲本身就是打法律的擦邊球,所以作為技術人我們更應該守住底線,向灰黑色產業說不。如果有些東西你不能確認是不是違法,可以向身邊朋友諮詢或者百度,切莫存僥倖心理!
四、感謝
最後感謝Loco大佬在百忙中抽出時間接受豬哥的採訪,豬哥也看過他的一些爬蟲教程,目前很少有人會講爬蟲的逆向,而他是其中一位!
對於那些沒有被翻牌的或者還有其他問題想要諮詢的同學,大家可以關注Loco大佬的公眾號:小周碼字,直