其實在抓取資料時,如果有大量的離散賬號和離散IP的話,抓取資料就問題不大了。但是老猿相信大部分的爬蟲選手們都沒有這麼多的資源,所以就會絞盡腦汁研究和各種嘗試對方的訪問控制策略,如果始終無法破局,這時就要跳出來想下其他辦法,比如多使用一下對方的產品,包括APP,網站,微信等,抓包看看他們之間的URL有沒有關聯,訪問控制策略是否一致等,有時你會找到新的突破口。
曾經老猿想要某職業社交APP裡的一些使用者詳細頁的資訊用來做分析,但是面臨如下問題:
- 該APP必須登陸才能訪問所有頁面。
- 你的賬號如果沒有關注對方,對方的詳細介紹頁面的很多資訊就被隱藏了。
- APP的使用者詳細頁面一個賬號大概只能訪問100次/天(有點記不清具體數字了)就不能訪問了。
俺註冊了10個該APP賬號,模擬登入後一天只能抓1000千多個,還有好些資料不全(因為沒有關注對方), 實在離俺想要的資料量相差較遠。
總結上面的問題就是沒有足夠多的賬號,就算賬號足夠多,每個賬號和每個ip也有抓取限制。
於是就把該產品的APP,微信,網頁裡裡外外都翻了一遍,能點的地方都去點一下看看。
有了新的發現:
- 該APP的使用者詳細頁分享到微信後,透過微信開啟可以直接訪問,不需要登入,也不需要微信授權,使用者詳細頁資訊都是全的(解決了需要關注才能檢視全面資訊問題)。
- 透過APP獲取分享到微信的url的介面訪問頻率控制放得很寬鬆。
- 雖然在微信上不用登入訪問,沒有賬號限制了,但是還是有單個IP的訪問頻率控制。
分析完後,老猿舒緩了很多,得出新的抓取思路,就是:
使用10個賬號按一定頻次透過APP不停的獲取每個使用者詳細頁分享到微信的URL,讓另外一個程式模仿微信的user-agent不停的訪問這些分享到微信的URL(要使用adsl撥號來解決單個IP訪問頻率控制問題)。
這樣透過app加微信的方式解決了對賬號的限制問題,實現了曲線救國。
後來老猿就發現好些抓取問題都有這種解決思路,跟我們在網路爬蟲小偏方之一里講的,有的網站為了SEO流量,而把referer來自百度的訪問控制放寬了一樣。
有的產品為了微信的流量(分享到微信裡的頁面可以直接開啟,點選其他頁面時再提示要註冊登入),而對來自微信點選訪問控制放寬了。
友情提示:抓取這些社交資訊,要合理合法使用,對關鍵資訊最好脫敏,不要買賣這類資料。
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***