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