項目5 模擬登錄-登錄某企業(yè)官網(wǎng)_第1頁
項目5 模擬登錄-登錄某企業(yè)官網(wǎng)_第2頁
項目5 模擬登錄-登錄某企業(yè)官網(wǎng)_第3頁
項目5 模擬登錄-登錄某企業(yè)官網(wǎng)_第4頁
項目5 模擬登錄-登錄某企業(yè)官網(wǎng)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

模擬登錄—登錄某企業(yè)官網(wǎng)1使用Cookie登錄方法實現(xiàn)模擬登錄目錄使用表單登錄方法實現(xiàn)模擬登錄2表單登錄是指通過編寫程序模擬瀏覽器向服務(wù)器端發(fā)送POST請求,提交登錄需要的表單數(shù)據(jù),獲得服務(wù)器端認(rèn)可,返回需要的結(jié)果,從而實現(xiàn)模擬登錄。本任務(wù)使用表單登錄的方法模擬登錄人民郵電出版社官網(wǎng),其網(wǎng)址為“/”。任務(wù)描述使用Chrome開發(fā)者工具,查找表單數(shù)據(jù)的提交入口。使用Chrome開發(fā)者工具,查找需要提交的表單數(shù)據(jù)。獲取驗證碼圖片,進行人工識別驗證碼。使用POST請求方法登錄。任務(wù)分析查找提交入口提交入口指的是登錄網(wǎng)頁(如圖所示)的表單數(shù)據(jù)(如用戶名、密碼、驗證碼等)的真實提交地址,它不一定是登錄網(wǎng)頁的地址,出于安全需要它可能會被設(shè)計成其他地址。找到表單數(shù)據(jù)的提交入口是實現(xiàn)表單登錄的前提。查找提交入口提交入口的請求方法大多數(shù)情況下是POST。由于用戶的登錄數(shù)據(jù)屬于敏感數(shù)據(jù),所以使用POST請求方法能夠避免用戶提交的登錄數(shù)據(jù)在瀏覽器端被泄露,從而保障數(shù)據(jù)的安全。因此,請求方法是否為POST,可以作為判斷是否為提交入口的依據(jù)。使用Chrome開發(fā)者工具查找網(wǎng)頁“/login”的提交入口,步驟如下。查找提交入口打開人民郵電出版社官網(wǎng),單擊頁面上方中間的“登錄”按鈕,進入登錄頁面,如圖所示。查找提交入口在登錄頁面右擊,在彈出的快捷菜單中,選擇“檢查”選項,如圖所示。查找提交入口也可以在Chrome瀏覽器右上角的菜單中,單擊地址欄最右側(cè)的按鈕,選擇“更多工具”下的“開發(fā)者工具”選項,打開開發(fā)者工具,如圖所示。此外,用戶還可以通過“F12”鍵或“Ctrl+Shift+I”組合鍵打開開發(fā)者工具。查找提交入口打開Chrome開發(fā)者工具后,打開“網(wǎng)絡(luò)”面板,勾選“保留日志”復(fù)選框,按“F5”鍵刷新網(wǎng)頁顯示各項資源,如圖所示。查找提交入口在登錄頁面輸入賬號(用戶名/手機號)、密碼、驗證碼,如圖所示,單擊“登錄”按鈕,提交表單數(shù)據(jù),此時會加載新的資源。查找提交入口觀察Chrome開發(fā)者工具左側(cè)的資源,找到“l(fā)ogin”資源并單擊,觀察右側(cè)的“標(biāo)頭”標(biāo)簽下的“常規(guī)”信息,如下圖所示。可以發(fā)現(xiàn)“請求方法”的信息為“POST”,即請求方法為POST,可以判斷“請求網(wǎng)址”的信息即提交入口。查找并獲取需要提交的表單數(shù)據(jù)登錄網(wǎng)頁一般最少需要兩個內(nèi)容:賬號和密碼。除此之外,有很多網(wǎng)頁還需要用戶填寫驗證碼,自動生成認(rèn)證信息,然后把認(rèn)證信息提交給服務(wù)器。注意:具體需要提交什么數(shù)據(jù),需要先查找提交表單時所需要的表單數(shù)據(jù)。查找并獲取需要提交的表單數(shù)據(jù)需要提交的表單數(shù)據(jù)是指向提交入口(代表服務(wù)器端)發(fā)送登錄請求時,服務(wù)器端要求提交的表單數(shù)據(jù),一般包括但不限于賬號、密碼、驗證碼。需要提交的表單數(shù)據(jù)一般多于登錄網(wǎng)頁要求輸入的表單數(shù)據(jù),由于某些需要提交的表單數(shù)據(jù)是在用戶登錄時自動生成并提交的,所以在登錄網(wǎng)頁是看不到的。需要注意的是,與爬取無須登錄的網(wǎng)頁相同,爬取需要登錄的網(wǎng)頁時,如果要向服務(wù)器端提交請求,那么必須帶上請求頭信息,偽裝成瀏覽器進行提交,否則服務(wù)器端會拒絕該請求。除了常規(guī)的User-Agent信息外,一些網(wǎng)站可能出于安全需要,強制客戶端必須帶上某些指定的請求頭信息,這就需要模擬登錄時帶上這些請求頭信息。1.查找需要的表單數(shù)據(jù)查找并獲取需要提交的表單數(shù)據(jù)在5.1.1小節(jié)中,使用Chrome開發(fā)者工具獲取了提交入口,在“載荷”標(biāo)簽中,“表單數(shù)據(jù)”信息為服務(wù)器端獲取到的表單數(shù)據(jù),如圖所示。其中,“username”表示賬號,“password”表示密碼,“verifyCode”表示驗證碼。查找并獲取需要提交的表單數(shù)據(jù)當(dāng)測試表單登錄時,要判斷哪些信息必須提交,只能通過實際測試來判斷;一般賬號、密碼、驗證碼是必須提交的。如果某些信息在每次請求時,都會發(fā)生變化,那么這些信息通常也是需要提交的。對于需要提交且每次登錄都不會改變的數(shù)據(jù),直接提交即可。但對于需要提交且每次登錄都會改變的數(shù)據(jù),必須想方設(shè)法獲取。例如,在本小節(jié)中,“verifyCode”信息的值每次登錄都會改變,且該信息是必須要提交的,所以用戶在模擬登錄時需要獲取到它的值。查找并獲取需要提交的表單數(shù)據(jù)驗證碼(CAPTCHA)的目的是區(qū)分人類和機器的操作,能夠有效防止非人類的用戶惡意注冊網(wǎng)站等,防止黑客對某一個特定注冊用戶用特定程序暴力破解的方式進行不斷登錄嘗試,因此也成了反爬蟲的一種技術(shù)手段。為此,驗證碼成為表單登錄的主要障礙,要實現(xiàn)表單模擬登錄,必須先獲取驗證碼圖片,而后識別驗證碼。當(dāng)然,隨著技術(shù)的發(fā)展,驗證碼的形式也比較多,有字符驗證碼、點選驗證碼、滑塊驗證碼等。在模擬登錄的過程中,識別驗證碼的方法主要有3種:人工識別、編寫程序自動識別、使用打碼接口識別。編寫程序自動識別驗證碼的方法涉及圖像處理相關(guān)知識,難度較高且原理復(fù)雜,故本書不涉及;而使用打碼接口識別驗證碼需支付一定的費用。因此,本小節(jié)主要介紹人工識別驗證碼的方法,其操作簡單且無須支付額外費用。2.處理驗證碼查找并獲取需要提交的表單數(shù)據(jù)人工識別驗證碼分為3個步驟:獲取驗證碼圖片的地址;將驗證碼圖片下載到本地;識別驗證碼。其中,獲取驗證碼圖片的地址最為關(guān)鍵,需要借助Chrome開發(fā)者工具。需要注意的是,有時獲取的地址并不是驗證碼圖片的直接地址,可能是驗證碼接口,若獲取的是驗證碼接口,則需要進一步從接口中獲取圖片。獲取驗證碼圖片的地址的步驟如下。打開網(wǎng)站,進入登錄頁面,若已登錄需先退出。打開Chrome開發(fā)者工具后打開“網(wǎng)絡(luò)”面板,按“F5”鍵刷新得到新網(wǎng)頁。查找并獲取需要提交的表單數(shù)據(jù)觀察Chrome開發(fā)者工具左側(cè)的資源,找到“kaptcha.jpg?v=0.7038940961211786”資源并單擊,觀察右側(cè)的“預(yù)覽”標(biāo)簽,若顯示驗證碼圖片,如左圖所示,則“kaptcha.jpg?v=0.7038940961211786”資源下“標(biāo)頭”標(biāo)簽的“請求網(wǎng)址”信息即驗證碼圖片的地址,如右圖所示。查找并獲取需要提交的表單數(shù)據(jù)獲取驗證碼圖片的地址后,需要對圖片對應(yīng)的地址發(fā)送請求,將圖片下載到本地,最后人工打開圖片識別驗證碼。使用PIL庫的Image模塊可以自動調(diào)用本機的圖片查看程序打開驗證碼圖片,效率更高。Image模塊自動打開圖片分為兩步:使用open函數(shù)創(chuàng)建一個Image對象;使用show()方法顯示圖片。open函數(shù)和show()方法的基本語法格式如下。Image.open(fp,mode='r')Image.show(title=None,command=None)查找并獲取需要提交的表單數(shù)據(jù)open函數(shù)和show()方法的常用參數(shù)及其說明如表所示。函數(shù)/方法參數(shù)名稱說明openfp接收str。表示圖片路徑。無默認(rèn)值mode接收str。表示圖片打開的模式。默認(rèn)為'r'show()title接收str。表示圖片標(biāo)題。默認(rèn)為Nonecommand接收str。表示顯示圖像的命令。默認(rèn)為None使用POST請求方法登錄POST請求方法能夠保障用戶提交數(shù)據(jù)的安全,因此它一般被需要登錄的網(wǎng)站所采用。Requests庫的post函數(shù)能夠以POST請求方法向服務(wù)器端發(fā)送請求,它會返回一個Response<Response>對象。post函數(shù)的基本語法格式如下。requests.post(url,headers=None,data=None,json=None,**kwargs)使用POST請求方法登錄post函數(shù)的常用參數(shù)及其說明如表所示。參數(shù)名稱說明url接收str。表示提交入口。無默認(rèn)值headers接收dict。表示請求的請求頭。默認(rèn)為Nonedata接收dict。表示需要提交的表單數(shù)據(jù)。默認(rèn)為Nonejson接收J(rèn)SON數(shù)據(jù),表示請求數(shù)據(jù)中的JSON數(shù)據(jù)。默認(rèn)為None使用POST請求方法登錄使用post函數(shù)向人民郵電出版社官網(wǎng)的登錄頁面發(fā)送請求,即向網(wǎng)頁“/login”發(fā)送請求。使用POST請求方法登錄需要注意的是,若某些需要提交的表單數(shù)據(jù)是通過請求的方式獲得的,則發(fā)送此請求的客戶端與最后發(fā)送POST請求的客戶端必須是同一個,否則將會導(dǎo)致最后表單登錄的請求失敗。這是因為當(dāng)客戶端不同時,請求得到的表單數(shù)據(jù)和最后發(fā)送POST請求時服務(wù)器端要求的表單數(shù)據(jù)是不匹配的。使用POST請求方法登錄Cookie可用于服務(wù)器端識別客戶端,當(dāng)發(fā)送請求的客戶端使用同樣的Cookie時,即可認(rèn)定客戶端是同一個。Requests庫的會話對象Session能夠跨請求地保持某些參數(shù)。例如,它令發(fā)送請求的客戶端享有相同的Cookie,從而保證表單數(shù)據(jù)的匹配。以POST請求方法為例,通過Session對象發(fā)送POST請求的基本語法格式如下。s=requests.Session()s.post(url,data=None,json=None,**kwargs)使用POST請求方法登錄使用Session對象向人民郵電出版社官網(wǎng)的登錄頁面“/login”發(fā)送請求。使用POST請求方法登錄模擬登錄是為了爬取需要登錄才能訪問的網(wǎng)頁。當(dāng)進行模擬登錄操作后,若對原先需要登錄才能訪問的網(wǎng)頁發(fā)送請求能夠返回需要的信息(一般是源代碼),則證明模擬登錄成功。需要注意的是,返回狀態(tài)碼200并不能證明登錄成功,它只能表明表單數(shù)據(jù)被成功發(fā)送出去。針對人民郵電出版社官網(wǎng)“”,用戶只有登錄以后才能訪問會員中心,其登錄網(wǎng)址為“/login”。在模擬登錄后,若向該網(wǎng)址發(fā)送請求能夠返回需要的信息,則證明登錄成功,否則失敗。以此作為是否成功登錄的判斷標(biāo)準(zhǔn)較為準(zhǔn)確,但稍顯麻煩。使用POST請求方法登錄經(jīng)測試發(fā)現(xiàn),訪問模擬登錄后返回的Response對象的url屬性(格式如r.url),若返回的URL為“/”,則也可證明登錄成功,其原因為它是在成功登錄后返回的網(wǎng)址,否則返回的是提交入口URL“/login”。需要注意的是,每個網(wǎng)頁判斷登錄成功的方法均不一樣,但最終標(biāo)準(zhǔn)只有一個,即能夠從需要登錄的網(wǎng)頁返回需要的信息。使用Requests庫中的post函數(shù),結(jié)合5.1.1小節(jié)和5.1.2小節(jié)已經(jīng)實現(xiàn)的步驟,模擬登錄人民郵電出版社官網(wǎng)“”。若最后返回的網(wǎng)址為“/”,則說明登錄成功。使用表單登錄方法模擬登錄網(wǎng)頁“/”。1使用Cookie登錄方法實現(xiàn)模擬登錄目錄使用表單登錄方法實現(xiàn)模擬登錄2Cookie登錄是指攜帶已經(jīng)成功登錄的客戶端的Cookie向服務(wù)器端發(fā)送請求,此時服務(wù)器端會認(rèn)定發(fā)送請求的客戶端已經(jīng)成功登錄,會返回客戶端需要的結(jié)果。表單登錄是獲得成功登錄的Cookie的手段之一,相對于表單登錄,Cookie登錄的好處是節(jié)約時間。Cookie登錄無須再向提交入口發(fā)送POST請求,因此也無須輸入驗證碼,實現(xiàn)難度也較小。本任務(wù)使用Cookie登錄的方法模擬登錄人民郵電出版社官網(wǎng)“/”。任務(wù)描述使用Chrome開發(fā)者工具獲取瀏覽器的Cookie,實現(xiàn)模擬登錄。加載已經(jīng)保存的表單登錄后的Cookie,實現(xiàn)模擬登錄。任務(wù)分析使用瀏覽器Cookie登錄Cookie保存在發(fā)起請求的客戶端(如瀏覽器)中,服務(wù)器端使用Cookie來區(qū)分不同的客戶端。Cookie是服務(wù)器端識別客戶端身份,保存客戶端信息(如登錄狀態(tài))的重要工具。這意味著,只要獲得某客戶端的Cookie,便可模仿它與服務(wù)器進行“對話”,獲得服務(wù)器端的認(rèn)可,從而實現(xiàn)模擬登錄的目的。需要注意的是,Cookie具有時效性,失效的Cookie會導(dǎo)致登錄失敗,此外,原客戶端退出登錄,也會導(dǎo)致登錄失敗。使用瀏覽器Cookie登錄是指使用從瀏覽器(客戶端)獲取到的成功登錄的Cookie來模擬登錄,可以分為以下兩個步驟。使用瀏覽器Cookie登錄獲取Cookie可分以下兩個步驟進行。登錄網(wǎng)站。輸入賬號、密碼、驗證碼,保證成功登錄網(wǎng)站。保存登錄成功后返回的網(wǎng)頁地址的Cookie,步驟如下。1.獲取Cookie使用瀏覽器Cookie登錄打開Chrome開發(fā)者工具后打開“網(wǎng)絡(luò)”面板,按“F5”鍵刷新網(wǎng)頁,找到左側(cè)的“/”資源,它代表的是本網(wǎng)頁地址,可以看到“請求網(wǎng)址”的信息與本網(wǎng)頁地址相吻合,如圖所示。使用瀏覽器Cookie登錄觀察“標(biāo)頭”標(biāo)簽,找到“Cookie”信息,即登錄成功后的Cookie,將其復(fù)制并保存下來,如圖512所示。使用瀏覽器Cookie登錄使用Requests庫的get()方法設(shè)置發(fā)送請求,攜帶Cookie的參數(shù)是cookies,它接收dict。從瀏覽器獲取的Cookie為str類型,需要將其處理成dict類型。攜帶瀏覽器的Cookie發(fā)送請求,模擬登錄人民郵電出版社官網(wǎng)“/”。由于網(wǎng)站的網(wǎng)頁結(jié)構(gòu)比較特殊,為了驗證是否登錄成功,所以向“/login/getUserName”發(fā)送請求。若登錄成功,則顯示“用戶已登錄!”;若登錄不成功,則會顯示“獲取用戶信息失??!”。2.?dāng)y帶Cookie發(fā)送請求基于表單登錄的Cookie登錄實現(xiàn)第一次表單登錄后,可以將Cookie保存下來以便下次直接使用。相較于使用瀏覽器Cookie登錄的方法,表單登錄后的Cookie無須處理。此外,Cookie失效后再次進行表單登錄即可獲得最新的Cookie?;诒韱蔚卿浀腃ookie登錄,首先需要存儲首次登錄后的Cookie,然后加載已保存的Cookie,具體實現(xiàn)步驟如下?;诒韱蔚卿浀腃ookie登錄存儲和加載Cookie需要用到http包的cookiejar模塊,它提供了可存儲Cookie的對象。cookiejar模塊下的FileCookieJar類用于將Cookie保存到本地磁盤以及從本地磁盤加載Cookie文件。LWPCookieJar是FileCookieJar的子類。LWPCookieJar對象存儲和加載的Cookie文件格式為Set-Cookie3,是比較常用的一種。創(chuàng)建LWPCookieJar對象的類是LWPCookieJar,其基本語法格式如下。classhttp.cookiejar.LWPCookieJar(filename,delayload=None,policy=None)1.存儲Cookie基于表單登錄的Cookie登錄LWPCookieJar類的常用參數(shù)及其說明如表所示。參數(shù)名稱說明filename接收str。表示需要打開或保存的文件名。無默認(rèn)值delayload接收str。表示從磁盤加載Cookie。默認(rèn)為Nonepolicy接收str。表示實現(xiàn)了CookiePolicy接口的一個對象。默認(rèn)為None基于表單登錄的Cookie登錄LWPCookieJar對象的save()方法可用于保存Cookie,其基本語法格式如下。http.cookiejar.LWPCookieJar.save(filename=None,ignore_discard=False,ignore_expires=False)save()方法的常用參數(shù)及其說明如表所示。參數(shù)名稱說明filename接收str。表示需要打開或保存的文件名。默認(rèn)為Noneignore_discard接收bool。表示即使Cookie將被丟棄也要將它保存下來。默認(rèn)為Falseignore_expires接收bool。表示如果在該文件中Cookie已經(jīng)存在,那么覆蓋原文件寫入。默認(rèn)為False基于表單登錄的Cookie登錄使用save()方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論