新浪微博PC端模擬登陸

本來給自己定了個2018的目標(biāo),平均每月寫兩篇文章奔誓,現(xiàn)在已經(jīng)快三月了斤吐,第一篇稿子才憋出來,慚愧呀厨喂,直入主題吧和措,今天給大家?guī)淼氖切吕宋⒉㏄C端的模擬登陸。

工具

這次使用的工具是Charles和chrome瀏覽器蜕煌,看過我之前文章的同學(xué)應(yīng)該知道我使用的Mac電腦派阱,F(xiàn)iddler不能用,之前用虛擬機(jī)很麻煩斜纪。很早的時候有裝過Charles贫母,但是不太會用,后來發(fā)現(xiàn)一篇比較詳細(xì)的文章盒刚,忘了記錄了颁独。發(fā)現(xiàn)Charles還是非常好用的,而且有個很好的功能伪冰,就是可以開啟多個Session進(jìn)行抓取對比誓酒,這個功能非常??,如果經(jīng)常做爬蟲調(diào)試的人一定能知道贮聂。我們抓取一個網(wǎng)站的登錄過程靠柑,然后在模擬的過程中,可以再另一個session中抓取自己模擬登錄的過程吓懈,然后對比一下自己的請求發(fā)送的數(shù)據(jù)和瀏覽器請求發(fā)送的數(shù)據(jù)是否一致歼冰。之前我調(diào)試一直都是通過打印查看,這樣一方面很不方便耻警,另外一方面打印也不完整隔嫡。所以非常推薦大家使用Charles甸怕,網(wǎng)上破解也有很多。
Charles

打開Charles腮恩,要開啟SSL代理抓取梢杭,這樣才能抓取到HTTPS請求,畢竟現(xiàn)在很多網(wǎng)站都已經(jīng)使用HTTPS請求了


HTTPS抓取設(shè)置

Host填*表示匹配所有網(wǎng)址秸滴,HTTP請求端口是80端口武契,HTTPS請求端口是443端口,設(shè)置好就可以開始抓取了荡含。

抓取請求

打開chrome瀏覽器咒唆,最好清理緩存,然后使用隱身模式訪問https://weibo.com/

打開隱身窗口

無痕模式

在網(wǎng)頁上執(zhí)行一遍登錄操作
微博登錄過程

抓取到登錄過程后释液,我們就可以開始分析了全释,記住一定要清理緩存。我有好幾次抓取都不一樣误债,后來換了Safari瀏覽器(因?yàn)槲液苌儆眠@個)浸船,其實(shí)這一步用什么瀏覽器都無所謂,chrome瀏覽器主要是用來調(diào)試JS用的找前。

過程分析

查找登錄請求

登錄一般url里面應(yīng)該都會有l(wèi)ogin,而且是post請求判族,當(dāng)然不排除其他方式躺盛。
https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)

登錄請求url

找到登錄請求后,這里主要關(guān)注Form表單信息形帮,參數(shù)很多槽惫,我們需要先大概區(qū)分一下哪些可能是固定參數(shù),哪些是變化的參數(shù)辩撑。


參數(shù)確定

一目了然可以看到那些是固定的了吧界斜,這些所有的參數(shù)其實(shí)我們都是可以追根溯源的,但是沒那個必要合冀,在這種參數(shù)比較多的情況下各薇,太費(fèi)事了,可以采用多次抓取登錄過程君躺,對比請求參數(shù)的方式確定部分固定的或者不重要的參數(shù)峭判,那么需要我們通過其他方式獲取的參數(shù)有pcid、door棕叫、su林螃、servertime、nonce俺泣、rsakv疗认、sp完残、prelt,這里servertime比較有爭議横漏,一般看到這種time或者151開頭的10位或者13位數(shù)字谨设,都是時間戳,用time.time()獲取就可以绊茧,但是這里是servertime铝宵,我們應(yīng)該引起注意。

參數(shù)分析

下面我們一一來看這幾個參數(shù)怎么獲取

  • su
    我們要先說一下這個su华畏,因?yàn)槠渌膮?shù)都和它有關(guān)系鹏秋。這個su在js調(diào)試的時候可以看到它的算法,但是其實(shí)我們可以根據(jù)它的特點(diǎn)先猜測一下亡笑,有可能是base64加密的侣夷。為什么?

    Base64是一種基于64個可打印字符來表示二進(jìn)制數(shù)據(jù)的方法仑乌,哪64個字符呢百拓?            
    A-Z、a-z晰甚、0-9和"+"衙传、"/",很多時候base64加密的字符串尾部為 1個或2個  "="厕九,
    因?yàn)樗前?個字節(jié)的二進(jìn)制拼接蓖捶,如果最后剩下一個,那么尾部就會添加2個=扁远,
    如果剩下兩個俊鱼,尾部就添加1個=,如果剛合適那當(dāng)然就沒有=了
    

推薦一個工具網(wǎng)站https://tool.lu/encdec/

image.png

使用編解碼試試看畅买,最終我發(fā)現(xiàn)是賬號并闲,而且是采用了url encode和base64編碼,所有最終我們的su就是
image.png

  • pcid谷羞、servertime帝火、nonce、rsakv
    它的值時gz-48fb749c5c715e0d5caeed045716492e153c湃缎,我們先在Charles中搜索一下
    pcid

    我們一般都是搜索response的數(shù)據(jù)购公,主要是看一下是不是在某一個請求的返回值里面,這里非常棒雁歌,我們找到了pcid和值出現(xiàn)的地方https://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=MTgwOTE3MzQxMzY%3D&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.19)&_=1518956150179宏浩,在這個請求的返回值里面,而且我們還有意外的收獲靠瞎,我們得到了四個參數(shù)比庄,和登錄請求里面的一樣求妹,??我們現(xiàn)在確定了四個參數(shù)的來源,
    image.png

    看一下請求的參數(shù)
    image.png

    除了su和下面的時間戳其他的參數(shù)基本固定佳窑,時間戳沒什么特點(diǎn)制恍,我們就用int(time.time() * 1000)生成,因?yàn)槭?3位的神凑。su我們上面已經(jīng)知道了净神。那么這四個參數(shù)也搞定了??
  • door
    door很熟悉吧,是驗(yàn)證碼溉委。那么驗(yàn)證碼的請求怎么確定鹃唯,非常簡單因?yàn)槲覀兊尿?yàn)證碼是一張圖片蒿讥,所以找圖片請求就可以了


    驗(yàn)證碼

    這個往上翻一翻就能很快找到滑臊,找到后我們看看它的參數(shù)
    參數(shù)

    p的值就是pcid的值,我們已經(jīng)知道了挚赊。r有點(diǎn)不太好找了藻三,先在Charles里搜一下62026273洪橘,沒找到,那么應(yīng)該就是本地生成的棵帽,其實(shí)你可以寫死試試熄求,有沒有問題。除了搜這個值以外逗概,我們還可以搜一下這個請求是在哪里生成的弟晚,看它附近有沒有有用的數(shù)據(jù)。
    image.png

    搜一部分就行了仗谆,先用小部分搜指巡,如果結(jié)果太多淑履,在多加一些搜索隶垮,這里我們找到了一條,點(diǎn)擊去看一看秘噪,點(diǎn)到JavaScript那個頁簽狸吞,Charles會幫我們格式化js
    image.png

    找到了pincodeUrl,再搜索一下pincodeUrl
    image.png

    看到?jīng)]有指煎,開不開心蹋偏?激不激動?
    驗(yàn)證碼請求
  • prelt
    這個參數(shù)和驗(yàn)證碼請求的那個r參數(shù)類似至壤,值搜不到威始,但是我們可以搜這個prelt,你問r那個為啥不搜像街?[鄙視眼]你猜猜能搜到多少黎棠?
    image.png

    同樣點(diǎn)進(jìn)去晋渺,切換到JavaScript頁簽,發(fā)現(xiàn)了preloginTime脓斩,再搜它吧

    image.png

    多搜一些你就發(fā)現(xiàn)它應(yīng)該是個時間段木西,結(jié)合prelt本身的值,我們就可以構(gòu)造出一個值随静“饲В可以通過多次請求來確定一個范圍,另外時間差燎猛,而且它用的是本地的時間計(jì)算的恋捆,那么也不需要多么精確,確定一個范圍應(yīng)該就可以了扛门,所以在一個范圍內(nèi)取隨機(jī)數(shù)就行了

    -sp
    最麻煩的來了鸠信,sp這么長一段,觀察其特點(diǎn)论寨,發(fā)現(xiàn)應(yīng)該是16進(jìn)制星立,所有字符都是在0-9、a-f之間葬凳,而且參數(shù)pwencode的值rsa2绰垂,基本上我們就可以確定其采用的是rsa加密算法。這串字符肯定是搜索不到的火焰,可以搜sp劲装,刪掉明顯不是的,我們一般看的是sp=xx這樣的昌简,就是看賦值占业,從賦值的操作上下文去查看
    image.png

    經(jīng)過過濾分析,只剩下兩個地方https://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=https%3A%2F%2Fweibo.com%2F&domain=.weibo.com&ua=php-sso_sdk_client-0.6.23&_rand=1518956141.4946https://js1.t.sinajs.cn/t5/register/js/v6/pl/register/loginBox/index.js?version=d7a77880fa9c5f84
    image.png

    然后打開chrome瀏覽器纯赎,開發(fā)者工具谦疾,然后訪問https://weibo.com,切換到source頁簽找到這兩個js文件犬金,并搜索sp念恍,通過觀察特點(diǎn)基本確認(rèn)為第二個js文件
    image.png

    e.sp = b,在b的計(jì)算之前打上斷點(diǎn)晚顷,然后執(zhí)行登錄操作峰伙,這里我們還發(fā)現(xiàn)了su的計(jì)算算法,跟我們上面分析的基本一致
    image.png

    通過調(diào)試這段代碼我們就得到了其加密方式该默,這里有幾個變量me.rsaPubkey瞳氓、me.servertime、me.nonce栓袖、b匣摘,通過console中查看b是密碼锅锨,然后就是這pubkey
    image.png

    在上面pcid參數(shù)的請求的返回值里面我們看到有這個值。OK這幾個變量我們都知道了恋沃,下面你了解一下rsa加密算法的python實(shí)現(xiàn)必搞,直接貼代碼
    image.png

執(zhí)行登錄請求

登錄請求的所有參數(shù)都已經(jīng)分析完了,登錄后查看response數(shù)據(jù)

image.png

然后再看一下登錄請求的下一個請求囊咏,發(fā)現(xiàn)是通過登錄請求的返回值中的url恕洲,然后發(fā)送此請求
image.png

返回值中又出現(xiàn)了另外一個url,我們在下面也找到了梅割,提取url發(fā)送請求
image.png

看到返回狀態(tài)了嗎霜第?302重定向。發(fā)送請求以后查看一下response的url户辞,發(fā)現(xiàn)是在它下面的請求地址


返回值和下面的請求好像有點(diǎn)關(guān)聯(lián)泌类,有下一個請求的參數(shù)。別急底燎,先等等刃榨,我們就這樣一直請求、提取請求双仍、再請求枢希,得有個終點(diǎn)吧,到哪里算一站呢朱沃。我們想想登錄以后苞轿,顯示一個頁面有用戶名。我們只要能得到這個用戶名那就說明登錄成功了逗物。
image.png

這里看到了這個home請求中出現(xiàn)了我的用戶昵稱搬卒,然后上面那個請求的返回狀態(tài)302,又是重定向翎卓。使用上面的方式確認(rèn)一下契邀。提取userdomain,然后拼接https://weibo.com/
image.png

成功了
image.png

這一次寫這篇博文就順暢多了莲祸,還是知識積累的問題蹂安。后面還有一篇百度登錄分析的椭迎,發(fā)現(xiàn)百度這個確實(shí)是很復(fù)雜锐帜,目前還沒搞定。盡請期待哦


如果你覺得我的文章還可以畜号,可以關(guān)注我的微信公眾號:Python爬蟲實(shí)戰(zhàn)之路
也可以掃描下面二維碼缴阎,添加我的微信號

公眾號

微信號
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市简软,隨后出現(xiàn)的幾起案子蛮拔,更是在濱河造成了極大的恐慌述暂,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件建炫,死亡現(xiàn)場離奇詭異畦韭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肛跌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門艺配,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衍慎,你說我怎么就攤上這事转唉。” “怎么了稳捆?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵赠法,是天一觀的道長。 經(jīng)常有香客問我乔夯,道長砖织,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任末荐,我火速辦了婚禮镶苞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞠评。我一直安慰自己茂蚓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布剃幌。 她就那樣靜靜地躺著聋涨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪负乡。 梳的紋絲不亂的頭發(fā)上牍白,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音抖棘,去河邊找鬼茂腥。 笑死,一個胖子當(dāng)著我的面吹牛切省,可吹牛的內(nèi)容都是我干的最岗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼朝捆,長吁一口氣:“原來是場噩夢啊……” “哼般渡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驯用,失蹤者是張志新(化名)和其女友劉穎脸秽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝴乔,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡记餐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了薇正。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剥扣。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铝穷,靈堂內(nèi)的尸體忽然破棺而出钠怯,到底是詐尸還是另有隱情,我是刑警寧澤曙聂,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布晦炊,位于F島的核電站,受9級特大地震影響宁脊,放射性物質(zhì)發(fā)生泄漏断国。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一榆苞、第九天 我趴在偏房一處隱蔽的房頂上張望稳衬。 院中可真熱鬧,春花似錦坐漏、人聲如沸薄疚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽街夭。三九已至,卻和暖如春躏筏,著一層夾襖步出監(jiān)牢的瞬間板丽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工趁尼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埃碱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓酥泞,卻偏偏與公主長得像砚殿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子婶博,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 最近由于需要一直在研究微博的爬蟲瓮具,第一步便是模擬登陸,從開始摸索到走通模擬登陸這條路其實(shí)還是挺艱難的凡人,需要一定的經(jīng)...
    resolvewang閱讀 43,892評論 85 149
  • 愁于沒有地方記錄一下自己的昨天挠轴, 又不想匆匆忙忙的度過传睹,總是想著在自己閑暇的時候記錄一下,這樣的話岸晦,在我以后寫不動...
    丿魔方閱讀 201評論 0 0
  • 為什么這么說呢启上?當(dāng)你朋友圈內(nèi)出現(xiàn)很多賣產(chǎn)品的微商人邢隧,你在討厭他們刷屏的同時不得不承認(rèn)這個行業(yè)一直在不斷的發(fā)展,一...
    小魚閱讀閱讀 293評論 0 0
  • 簡書毀了下一個文豪冈在。 當(dāng)年每天拿筆寫字兒的時候倒慧,自我感覺太良好;當(dāng)年每天對著人吹牛耍嘴皮子的時候包券,自我感覺太良好纫谅,...
    ChDWu閱讀 211評論 1 1