摘要:繼續(xù)嘗試,成功,但是還是未登錄狀態(tài)。如前所說(shuō),用模擬登錄拿到,然后帶上去取文章備份就好了,用加了點(diǎn)并發(fā),代碼放到上了,地址,歡迎使用及拍磚以上
直接post登錄失敗
一般的網(wǎng)站確實(shí)直接post之后就登錄成功了,然后拿到cookie想怎么玩就怎么玩。不過(guò)的確世事難料,失敗在所難免。
首先是人肉登錄,用chrome的network欄查看post了些什么東西,有三項(xiàng):
password
remember
地址是http://segmentfault.com/api/user/login?_=0b1bc2ca95203748b804e69ac2cfab06,后面那個(gè)32位的token是隨機(jī)的,每次都不一樣。怎么找到這個(gè)值呢?用chrome工具欄進(jìn)行調(diào)試打斷點(diǎn)找(記得先按"{}"格式化代碼),從發(fā)XHR的地方開始,用call stack逐步縮小范圍,直到找到token被加上的地方,值也就能找到了。這個(gè)過(guò)程還是很麻煩的。。。
最終能找到這個(gè)值為window.SF.token,你百度一下它會(huì)發(fā)現(xiàn)segmentfault上已經(jīng)有文章寫過(guò)用node模擬登錄,不過(guò)在js文件里全局搜索_=這種方法略投機(jī)。我表示我完全沒有參考它,因?yàn)槲艺业?b>window.SF.token去搜索后才發(fā)現(xiàn)那文章,不然直接拿來(lái)主義了
這個(gè)值附在window上,沒法js壓縮混淆,所以肯定有個(gè)賦值的地方,稍微找找,發(fā)現(xiàn)就在登錄頁(yè)的html里。
用python獲得網(wǎng)頁(yè)內(nèi)容,提取出含token的那段代碼,包括for循環(huán)中的數(shù)字,千方百計(jì)把token計(jì)算出來(lái),拿去post,失敗。加上headers和cookies偽裝瀏覽器,注意,當(dāng)前這個(gè)cookies應(yīng)該是匿名cookie,以防萬(wàn)一加上的,里面沒有有效的能標(biāo)記已經(jīng)登錄的session值。繼續(xù)嘗試post,成功,但是還是未登錄狀態(tài)。重新人肉登錄檢查發(fā)送xhr的地方,還有好幾處,稍微嘗試了一下模擬這幾個(gè)發(fā)送,沒有成功。經(jīng)過(guò)分析發(fā)現(xiàn),有效登錄標(biāo)記是一個(gè)叫sr_remember的cookie值,但具體過(guò)程我確實(shí)沒分析出來(lái),現(xiàn)在的登錄里回調(diào)和跳轉(zhuǎn)太多了,分析過(guò)程就很麻煩,再用python模擬單個(gè)請(qǐng)求,很低效且不易成功
使用phantomjs那就用最簡(jiǎn)單的方法,在python中直接模擬瀏覽器的js運(yùn)行環(huán)境,試了試Ghost.py,大坑,好像是網(wǎng)頁(yè)中有用到localStorage等的地方就直接崩潰了,而且它依賴于PySide,這個(gè)真的是非常費(fèi)事,要裝的朋友切忌選擇下載源代碼編譯安裝,否則你會(huì)發(fā)現(xiàn)pip install PySide之后半天沒動(dòng)靜,前者至少都能給你點(diǎn)動(dòng)靜(編譯估計(jì)要幾十分鐘吧)。PyV8安裝沒成功,好像是Ei Capitan的問(wèn)題,放棄。
最后就選擇了selenium+Phantomjs, selenium可以直接驅(qū)動(dòng)phantomjs,很方便。這一瞬間我感覺自己相當(dāng)明白為什么PySpider里要用Phantomjs了。
如前所說(shuō),用phantomjs模擬登錄拿到cookie,然后python帶上cookie去取文章備份就好了,用tornado加了點(diǎn)并發(fā),代碼放到github上了,地址,歡迎使用及拍磚
以上
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37681.html
摘要:上一篇用模擬請(qǐng)求,最后沒有拿到。對(duì)于跳轉(zhuǎn)是由網(wǎng)頁(yè)中的腳本所控制的,使用這種模擬真實(shí)瀏覽器行為,可以更容易保證其完成整個(gè)登錄行為,相對(duì)地因?yàn)槟M的成本速度會(huì)慢一些。 上一篇用requests模擬請(qǐng)求,最后沒有拿到cookies。今天偶爾看一篇HTTP相關(guān)的文章,發(fā)現(xiàn)在某些請(qǐng)求返回的header中會(huì)有set-cookie字段,很明顯之前的失敗應(yīng)該是沒有接收到包含這個(gè)字段的response。...
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:在這之前,還是有必要對(duì)一些概念超輕量級(jí)反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標(biāo)配系統(tǒng)。 爬蟲修煉之道——從網(wǎng)頁(yè)中提取結(jié)構(gòu)化數(shù)據(jù)并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關(guān)注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個(gè)爬取多頁(yè)面的網(wǎng)絡(luò)爬蟲主要講解了如何使用python編寫一個(gè)可以下載多頁(yè)面的爬蟲,如何將相對(duì)URL轉(zhuǎn)為絕對(duì)URL,如何限速,...
閱讀 2070·2023-04-26 01:33
閱讀 1689·2023-04-26 00:52
閱讀 1083·2021-11-18 13:14
閱讀 5660·2021-09-26 10:18
閱讀 2941·2021-09-22 15:52
閱讀 1523·2019-08-29 17:15
閱讀 3048·2019-08-29 16:11
閱讀 1062·2019-08-29 16:11