執(zhí)行環(huán)境?
windows 7 64位
node 5.8.0
最近在寫有關(guān)模擬登錄的模塊,查了一些資料,很多都沒有驗(yàn)證碼這部分的處理,總結(jié)一下,我認(rèn)為在寫之前要理解爬蟲的工作原理,理解了數(shù)據(jù)如何在瀏覽器與服務(wù)器之間進(jìn)行交互,實(shí)現(xiàn)起來就簡單了。
爬蟲的主要目的是將互聯(lián)網(wǎng)上的網(wǎng)頁下載到本地形成一個(gè)或聯(lián)網(wǎng)內(nèi)容的鏡像備份。當(dāng)我們將學(xué)號(hào)、密碼及驗(yàn)證碼提交后,瀏覽器首先通過與服務(wù)器進(jìn)行連接,確認(rèn)我們填的信息正確后,服務(wù)器會(huì)生成一個(gè)sessionId來表示登陸成功的狀態(tài),并返回給瀏覽器,瀏覽器接受到SessionId之后,作為cookies值保存在瀏覽器,之后每次要獲取登錄后頁面的數(shù)據(jù)時(shí)都會(huì)提交cookies值來驗(yàn)證是否已經(jīng)登錄。因此,獲取cookies值是我們做爬蟲很關(guān)鍵一步,這樣才可以對(duì)登錄后的頁面數(shù)據(jù)進(jìn)行爬蟲,找到自己需要的數(shù)據(jù)。
一、準(zhǔn)備工作:
1.安裝superagent(一個(gè)的請(qǐng)求代理模塊api,可處理get,post,put,delete,head請(qǐng)求)
npm install superagent
2.安裝cheerio(裝載已爬取的html網(wǎng)頁,類似jQuery,方便獲取網(wǎng)頁指定數(shù)據(jù)。)
npm install?cheerio
3.安裝nodecr(解析驗(yàn)證碼)
npm install ?nodecr
二:分析網(wǎng)頁cookies
首先在瀏覽器中輸入正確的用戶和密碼進(jìn)行登錄,登錄成功后服務(wù)器會(huì)發(fā)送生成的cookie值給瀏覽器,用來之后的瀏覽中驗(yàn)證登錄身份。所以我們不僅需要利用post模擬登錄,還要保存好其發(fā)送給我們的cookie值,在之后的請(qǐng)求中將cookie值設(shè)置在請(qǐng)求頭中進(jìn)行發(fā)送,以獲取登錄后的其它頁面信息。可在控制臺(tái)中進(jìn)行查看分析。
三、分析post需要提交的字段
方法一:在同樣的控制臺(tái)頁面下面我們可以看到我們需要post提交的字段信息。
方法二:可以查看源碼,進(jìn)行查找相應(yīng)提交字段。
四、驗(yàn)證碼處理
往往很多登錄頁面都需要驗(yàn)證碼,我們?cè)撊绾潍@取驗(yàn)證碼,并對(duì)其進(jìn)行解析呢?這就需要nodecr(前身為tesseract),它可以解析到驗(yàn)證碼中的數(shù)字,本文的解析流程,首先獲取登錄頁面的驗(yàn)證碼并保存到本地指定目錄,然后通過nodecr第三方工具進(jìn)行解析得到相應(yīng)驗(yàn)證碼,之后與用戶名、密碼一并提交,進(jìn)行模擬登錄。部分截圖如下:
1.保存過程
2.解析登錄過程
注:(紅色框中輸入自己爬取網(wǎng)頁的相應(yīng)字段)
五。轉(zhuǎn)碼過程(可選)
有時(shí)候我們所要爬取的頁面編碼為GBK格式則不能正常顯示,這時(shí)需要進(jìn)行轉(zhuǎn)碼處理
六、登錄成功后,這時(shí)就該cheerio上場了,cheerio操作類似jquery的用法,先將得到的頁面用cheerio進(jìn)行轉(zhuǎn)載,之后對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行處理,取得自己想要的數(shù)據(jù)。
模擬登錄是最基礎(chǔ)也最重要的部分,登錄之后,我們便可以運(yùn)用自己的知識(shí)對(duì)網(wǎng)頁進(jìn)行處理了,比如課表的爬蟲,成績的爬蟲等等,你會(huì)覺得越來越有意思了。
詳細(xì)代碼:https://github.com/luhongchun/blog/tree/master/node_login