工具這次使用的工具是Charles和chrome瀏覽器,看過我之前文章的同學(xué)應(yīng)該知道我使用的Mac電腦,F(xiàn)iddler不能用,之前用虛擬機很麻煩。很早的時" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 新浪微博PC端模擬登陸

新浪微博PC端模擬登陸

時間:2023-05-12 00:57:01 | 來源:網(wǎng)站運營

時間:2023-05-12 00:57:01 來源:網(wǎng)站運營

新浪微博PC端模擬登陸:直入主題,今天給大家?guī)淼氖切吕宋⒉㏄C端的模擬登陸。




工具

這次使用的工具是Charles和chrome瀏覽器,看過我之前文章的同學(xué)應(yīng)該知道我使用的Mac電腦,F(xiàn)iddler不能用,之前用虛擬機很麻煩。很早的時候有裝過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,要開啟SSL代理抓取,這樣才能抓取到HTTPS請求,畢竟現(xiàn)在很多網(wǎng)站都已經(jīng)使用HTTPS請求了


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

抓取請求

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


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


抓取到登錄過程后,我們就可以開始分析了,記住一定要清理緩存。我有好幾次抓取都不一樣,后來換了Safari瀏覽器(因為我很少用這個),其實這一步用什么瀏覽器都無所謂,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)

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

一目了然可以看到那些是固定的了吧,這些所有的參數(shù)其實我們都是可以追根溯源的,但是沒那個必要,在這種參數(shù)比較多的情況下,太費事了,可以采用多次抓取登錄過程,對比請求參數(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,因為其他的參數(shù)都和它有關(guān)系。這個su在js調(diào)試的時候可以看到它的算法,但是其實我們可以根據(jù)它的特點先猜測一下,有可能是base64加密的。為什么?

Base64是一種基于64個可打印字符來表示二進(jìn)制數(shù)據(jù)的方法,哪64個字符呢? A-Z、a-z、0-9和"+"、"/",很多時候base64加密的字符串尾部為 1個或2個 "=", 因為它是把3個字節(jié)的二進(jìn)制拼接,如果最后剩下一個,那么尾部就會添加2個=, 如果剩下兩個,尾部就添加1個=,如果剛合適那當(dāng)然就沒有=了推薦一個工具網(wǎng)站https://tool.lu/encdec/



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


我們一般都是搜索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ù)的來源,

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

除了su和下面的時間戳其他的參數(shù)基本固定,時間戳沒什么特點,我們就用int(time.time() * 1000)生成,因為是13位的。su我們上面已經(jīng)知道了。那么這四個參數(shù)也搞定了??

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

p的值就是pcid的值,我們已經(jīng)知道了。r有點不太好找了,先在Charles里搜一下62026273,沒找到,那么應(yīng)該就是本地生成的,其實你可以寫死試試,有沒有問題。除了搜這個值以外,我們還可以搜一下這個請求是在哪里生成的,看它附近有沒有有用的數(shù)據(jù)。


搜一部分就行了,先用小部分搜,如果結(jié)果太多,在多加一些搜索,這里我們找到了一條,點擊去看一看,點到JavaScript那個頁簽,Charles會幫我們格式化js

找到了pincodeUrl,再搜索一下pincodeUrl

看到?jīng)]有,開不開心?激不激動?


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


多搜一些你就發(fā)現(xiàn)它應(yīng)該是個時間段,結(jié)合prelt本身的值,我們就可以構(gòu)造出一個值??梢酝ㄟ^多次請求來確定一個范圍,另外時間差,而且它用的是本地的時間計算的,那么也不需要多么精確,確定一個范圍應(yīng)該就可以了,所以在一個范圍內(nèi)取隨機數(shù)就行了

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

經(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


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


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

通過調(diào)試這段代碼我們就得到了其加密方式,這里有幾個變量me.rsaPubkey、me.servertime、me.nonce、b,通過console中查看b是密碼,然后就是這pubkey

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




執(zhí)行登錄請求

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

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


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


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

返回值和下面的請求好像有點關(guān)聯(lián),有下一個請求的參數(shù)。別急,先等等,我們就這樣一直請求、提取請求、再請求,得有個終點吧,到哪里算一站呢。我們想想登錄以后,顯示一個頁面有用戶名。我們只要能得到這個用戶名那就說明登錄成功了。

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


成功了

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




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

http://weixin.qq.com/r/QiqBmaLE0f_ureb6939Q (二維碼自動識別)



關(guān)鍵詞:模擬,登陸

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉