摘要:由于我需要獲取普通用戶的微博內(nèi)容,因此還要想辦法繼續(xù)繞。默認是勾上的,也即是說微博團隊主觀上是希望用戶勾上這個,從而借助判斷來提高登錄安全性的。我遂果斷取消勾選該選項,輸入任何一個自己的微博賬號密碼,點擊登錄。
有時或基于以下凡此種種需求,我們會想要去抓取新浪微博的內(nèi)容:
產(chǎn)品冷啟動,導入外部數(shù)據(jù),而非從頭積累;
通過大數(shù)據(jù)+語義分析獲取用戶興趣行為偏好,提供智能推薦;
監(jiān)控微博輿情,對特定關鍵詞或是用戶行為進行響應;etc
想必新浪深知微博內(nèi)容本身是最其有價值的資產(chǎn),一旦被競爭對手大批量抓取導入,則辛苦建立起的門檻將瞬間化作他人之嫁衣,因此做了非常繁復的安全保護,包括強制登錄跳轉認證、跨域檢測、cookie 植入、禁止賬號密碼登錄而啟用 OAuth2.0 等等。
近期個人有一些抓取需求,在查詢大量過時的網(wǎng)絡資料測試無果后,決定另辟蹊徑完成這一目標,并最終測試成功。在此分享出來。(這篇文章將提供解決問題的方法思路,但不會給出具體代碼。伸手黨請移步百度或 Github。)
你需要準備:一個個人微博賬號,我們將透過它去訪問其他用戶頁面,從而抓取。除此之外,別無所求。
解題思路:
1.最初我從微博 Web 版入手,發(fā)現(xiàn)即使是瀏覽器中可正常查看的內(nèi)容,若直接通過 PHP 的 curl 或者 file_get_contents 讀取,也無法直接取得,而是讀取到一串 js 代碼,作用是跨域判斷+cookie判斷+header跳轉。料想要模擬的請求和一重重越過的限制定會很多。
2.轉換思路,既然微博的 Web 版限制很多,那就從移動版下手(移動網(wǎng)頁 weibo.cn,而非指移動 App)。移動版礙于手機機能的限制,身份驗證要求會降低很多。經(jīng)過實驗,微博移動版的展示規(guī)則是:加V用戶、微博廣場,可直接訪問其頁面;普通用戶,則必須登錄才能看到。而判定當前登錄用戶身份的標識,則應該是手機瀏覽器本身存儲的 cookie 與服務端的某個 session 比對。
3.由于我需要獲取普通用戶的微博內(nèi)容,因此還要想辦法繼續(xù)繞。你當然可以每次直接模擬用戶登錄,但相對繁瑣,我希望能一勞永逸。既然移動版的身份判定很大程度上依賴手機瀏覽器 cookie,而一般瀏覽器 cookie 不那么容易取,且某些土鱉機型連 cookie 都無法記錄(號稱 1.3 億月活躍用戶的上市公司一定會照顧窮苦大眾的),那么微博一定提供了其他退而求其次的解決方法。于是我注意到了登陸框下的「記住登錄狀態(tài),需支持并打開手機的cookie功能。」選項。
See?默認是勾上的,也即是說微博團隊主觀上是希望用戶勾上這個,從而借助 cookie 判斷來提高登錄安全性的。
我遂果斷取消勾選該選項,輸入任何一個自己的微博賬號密碼,點擊登錄。
4.值得注意的情況出現(xiàn)了:登錄時的驗證網(wǎng)頁走的是 newlogin.sina.cn,而非勾選狀態(tài)下會走的 login.sina.cn。說明此種情況下,登錄驗證的確是進行了特殊的處理,從而讓沒有開啟 cookie 功能的手機也能被判定為登錄。
查看跳轉頁面的源代碼,發(fā)現(xiàn)有如下一行:
如果沒有自動跳轉,請點擊這里
注意這個 gsid 參數(shù),料想它就是判定本地用戶身份的標識,于是整個提取出來(為了我的賬號安全,我對這個案例中的 gsid 做了修改,你們直接照搬是無法成功的,還是自己跑一遍登錄流程吧)。
5.最精彩的情況來了。為了驗證我們能不能憑這一串 gsid 偽造登錄后的身份,我開啟 Chrome 的隱身模式,隨便找了一個正常情況下必須登錄才能看到頁面的非加V用戶,然后在地址欄后面加上了 gsid 參數(shù),URL 整個變成:
http://weibo.cn/u/1665167973?vt=4&st=7fe6&gsid=4uwc8bfa1vnw8ivzI9gUd706F3W
(當然這里的 gsid 我也做了改動,只是作為演示,實際 gsid 還請自行獲得)
直接回車!擦,雖然此前沒有執(zhí)行過登錄動作,但是已經(jīng)以登錄后的的身份在看他的頁面內(nèi)容了喲。這樣,我就可以直接憑借上述固定 URL 去爬去用戶的內(nèi)容。
(上圖中的「我們都關注XDash」,你就可以知道當前是登錄狀態(tài),取到了用戶身份的。事實上的確如此。)
背后原理應該是,以 GET 方式在 URL 中發(fā)送了本地登錄后的身份標識,微博服務器比對這串標識來判定對應的登錄用戶身份,然后返回到本地,本地于是就以這個用戶身份登錄,堂而皇之地獲取數(shù)據(jù)了。(大一的時候我曾參與過一個基于 ASP 的校園社區(qū)的開發(fā),閱讀了帝國 CMS 的代碼,那時候對于手機用戶的身份認證就是這么原始噠。)
現(xiàn)在想要的盡收眼底了,接下來...Hulk,smash!
微博手機版,阿喀琉斯的腳后跟。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/20736.html
摘要:本人長期出售超大量微博數(shù)據(jù)旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,。如果用戶傳入偽造的,則新浪微博會返回一個錯誤。 PS:(本人長期出售超大量微博數(shù)據(jù)、旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,Message to [email protected]。由于微博接口更新后限制增大,這個代碼已經(jīng)不能用來爬數(shù)據(jù)了。如果只是為了收集數(shù)據(jù)可以咨詢我的郵箱,如果是為了學習爬蟲,...
摘要:本人長期出售超大量微博數(shù)據(jù)旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,。如果用戶傳入偽造的,則新浪微博會返回一個錯誤。 PS:(本人長期出售超大量微博數(shù)據(jù)、旅游網(wǎng)站評論數(shù)據(jù),并提供各種指定數(shù)據(jù)爬取服務,Message to [email protected]。由于微博接口更新后限制增大,這個代碼已經(jīng)不能用來爬數(shù)據(jù)了。如果只是為了收集數(shù)據(jù)可以咨詢我的郵箱,如果是為了學習爬蟲,...
摘要:孔淼大數(shù)據(jù)分析處理與用戶畫像實踐直播內(nèi)容如下今天咱們就來閑聊下我過去接觸過的數(shù)據(jù)分析領域,因為我是連續(xù)創(chuàng)業(yè)者,所以我更多的注意力還是聚焦在解決問題和業(yè)務場景上。在對微博數(shù)據(jù)進行上面提到的計算分析之前,我們其實還做了很多數(shù)據(jù)處理的工作。 孔淼:大數(shù)據(jù)分析處理與用戶畫像實踐 直播內(nèi)容如下: 今天咱們就來閑聊下我過去接觸過的數(shù)據(jù)分析領域,因為我是連續(xù)創(chuàng)業(yè)者,所以我更多的注意力還是聚焦在解決問...
閱讀 1635·2021-10-14 09:43
閱讀 5564·2021-09-07 10:21
閱讀 1290·2019-08-30 15:56
閱讀 2133·2019-08-30 15:53
閱讀 1243·2019-08-30 15:44
閱讀 2020·2019-08-30 15:44
閱讀 1331·2019-08-29 17:24
閱讀 761·2019-08-29 15:19