? ? ?昨天看了頭條的新聞,然后決定想去爬取頭條的新聞,但是經(jīng)過一輪分析之后發(fā)現(xiàn)頭條新聞推送的方式是用ajax封裝滾動(dòng)刷新的,而不是傳統(tǒng)的一頁一頁的翻頁瀏覽的,于是這個(gè)不用想了,肯定是不能從傳統(tǒng)的方式直接向服務(wù)器請(qǐng)求來獲得網(wǎng)頁真實(shí)內(nèi)容。分析后發(fā)現(xiàn),新聞的推送方式是以一個(gè)叫“?category=...”的xhr文件更新內(nèi)容的,客戶不斷地滾動(dòng)獲得新的推送內(nèi)容,在這過程中,其實(shí)是不斷地向服務(wù)器的數(shù)據(jù)庫(kù)發(fā)出請(qǐng)求,產(chǎn)生一個(gè)個(gè)的“?category=...”的xhr文件,在這些xhr文件中能夠得到網(wǎng)頁的請(qǐng)求url和網(wǎng)頁具體內(nèi)容的json文檔。
? ? 我一開始列舉了好幾個(gè)“?category=...”的xhr文件的url去找規(guī)律,其中我發(fā)現(xiàn)url中有以下參數(shù)是不同的,其他都一致:“max_behot_time”和“max_behot_time_tmp” 分別是請(qǐng)求的當(dāng)時(shí)時(shí)間時(shí)間戳,as和cp參數(shù)在一個(gè)叫home_4abea46.js 的js文件中能夠找到相應(yīng)的處理函數(shù),經(jīng)過一番地分析后,我將其移植到python中實(shí)現(xiàn)。


? ?到這一步之后,我欣喜若狂,以為就快大功告成了,結(jié)果發(fā)現(xiàn)后面還有一個(gè)最最關(guān)鍵的參數(shù)_signature,而且的這個(gè)參數(shù)是的破解我無從下手,我到網(wǎng)上看看有沒有大神找到破解方法,結(jié)果發(fā)現(xiàn)似乎沒有什么好的破解方法。后來我還是被迫使用了python的必殺技,自動(dòng)化測(cè)試庫(kù)selenium。具體實(shí)現(xiàn)代碼如下:

