Python爬蟲小偏方:突破登錄和訪問頻率限制,多研究對方不同終端產品
阿新 • • 發佈:2019-05-08
strong 抓取 微信授權 分享 很多 資源 賬號 仿微信 詳細介紹 其實在抓取數據時,如果有大量的離散賬號和離散IP的話,抓取數據就問題不大了。但是老猿相信大部分的爬蟲選手們都沒有這麽多的資源,所以就會絞盡腦汁研究和各種嘗試對方的訪問控制策略,如果始終無法破局,這時就要跳出來想下其他辦法,比如多使用一下對方的產品,包括APP,網站,微信等,抓包看看他們之間的URL有沒有關聯,訪問控制策略是否一致等,有時你會找到新的突破口。
Python學習交流群【 784758214 】內有安裝包和學習視頻資料,零基礎,進階,解答疑問。希望可以幫助你快速了解Python、學習python
曾經我想要某職業社交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爬蟲小偏方:突破登錄和訪問頻率限制,多研究對方不同終端產品