本帖最後由 michael3636 於 2015-5-1 04:55 編輯 Part 4 讓我們繼續我們的征途,相信每一個仔細看完前三篇文章的人.都對XHR對象都有了一定的認識,而不是像以前使用那樣照搬照寫,壓根不知道為啥這麼寫.好了廢話不多說了,進入正題,老規矩,先來點相關知識墊墊底:
好了.進入主題,今天的主題是: 用XHR登陸賬號(3種方法) 注意:本章節只說英文數字類的賬號密碼.不涉及中文或其他字符,因為這涉及到字符編碼問題,是個大話題,不是幾句話能講完的,我會在以後專門講到
以下為本帖隱藏內容 ============================== 頭信息=>來自上傳流的信息: Content-Length 68 Content-Type application/x-www-form-urlencoded 第一個:我們上傳的內容的長度,由於賬號密碼長度的不一樣,可能我們很多人這個數據是不一樣的,這個具體的數字我們可用用len()函數搞定,具體形式是,len(上傳的內容) 第二個:客戶端要告訴服務器的上傳的內容的類型,上面的意思是,應用類的,通過URL編標的,這個不需要去瞭解很深,到時候照搬就行了,這2個內容XHR是不會自動幫我們加到請求頭去的,所以到時候我們得自己加上去 POST=>源代碼 username=我的賬號&password=我的密碼&quickforward=yes&handlekey=ls 這個相信我們只需要關注裡面的紅字即可 響應: /forum.php?mod=forumdisplay&fid=17';]]> 很明顯,這是我們登陸成功後服務器給我的反饋,也就是說,只要我們得到這個反饋.就說明我們登陸成功啦..那麼,登陸失敗的反饋是什麼呢?很簡單啊,退出賬號,故意打錯密碼,然後登陸,我們就能得到登陸失敗的反饋了,這些內容有助於我們判斷是否登陸成功或者除了其他什麼狀況 ============================== /forum.php?mod=forumdisplay&fid=17",這不就是綜合論壇的網址麼.而這些代碼的執行,都是在後台的,我們是看不到的..這不就跟我們看到的實際情況對上號了麼... 對了,還差一個.那就是POST方式提交內容的目標網址: 很簡單的操作,把我們的鼠標放到firebug的目標URL上,按下右鍵,點擊複製網址,我們就得到目標網址了,如下: http://bbs./member.php ... submit=yes&inajax=1 好了,我們需要的消息都得到了.接下來可以寫代碼了,咋寫?很簡單啊..剛學嘛..傻瓜式複製,瀏覽器腫麼做我們就怎麼寫:
開寫,如下:
![]() 等等,問題來了
跟上面的對不上?雖然差不多但是有區別啊.... 贊一下,兄弟或者姐們,你真細心,其實很好解釋的,因為這個對象它的提交header裡默認是不帶"referer"項目的,就是我們在之前說到的來源的,也就是說,這個對象它是不會主公告訴服務器我是從哪個網頁來的,呵呵呵.牛吧..要跟上面一樣也簡單啊.在第二步設置header的地方加一句代碼: http.setrequestheader "Referer","http://bbs./forum.php?mod=forumdisplay&fid=17" 然後再執行.這次是不是對上號了?,當然這是題外話,我們只要成功就行了,至於返回值具體是什麼內容不重要不是麼?在實際應用中這句代碼是多餘的,但是從這我們知道了一個這個對象的特性,它的請求header是不帶"referer"的,假若我們需要的話,我們可以隨意添加進行來源冒充,多好啊...... 進一步思考: 瀏覽器去網頁沒辦法.不然沒法用登陸界面去登陸賬號,XHR沒這問題,是不是可以省了第一步呢?很簡單啊..既然有這想法.市實驗下就行了,把第一部分註釋掉,記得創建XHR哪行代碼別註釋掉啊.........我們再調試,代碼就不貼了. 啊哈...成功啦..我們不需要第一步啦...是啊是啊..萬事貴在嘗試嘛......XHR的優點就開始凸顯了不是麼?雖然寫起來麻煩點不直觀,但是就效率而言,是瀏覽器所根本無法比擬的,多好的技術啊.. 2."GET"方式 以下為本帖隱藏內容 ============================== 在 Part 2 我講到過很多時候"GET"和"POST" 可以互轉的,我們能否用"GET"登陸呢?這還不簡單.能不能的試試不就知道了麼, 截取上面的POST方式的 地址和內容: 提交地址是: http://bbs./member.php ... submit=yes&inajax=1 提交內容是: username=我的賬號&password=我的密碼&quickforward=yes&handlekey=ls 照葫蘆畫瓢我們把內容接到地址裡去,看代碼: ==============================
需要著重說明的是:這個方式是否可以登錄得看服務器短校本代碼是腫麼寫的,你在按鍵成功了不代表你在任何地方能成功,所以得學會嘗試和實踐!!!! 3."Cookie"方式(登錄都省了,帶著cookie直接訪問網頁去!!!!) 以下為本帖隱藏內容 ============================== 按鍵論壇登錄裡有個自動登陸的複選框,相信很多人都隨手點了,派啥用的呢,,,很簡單啊,,你選了.明天一覺醒來來按鍵論壇,你就不用登陸啦,,直接就是在線狀態,為啥啊,綜合我們前面所知道的知識不難推測,cookie是服務器唯一可以讓瀏覽器保存在硬盤裡的東西,瀏覽器能保證是登陸狀態,肯定是cookie搞的鬼,事實也能證明這一點,我們清理下cookie的話...開了瀏覽器,按鍵又問我們要賬號密碼了....那要是我們的XHR帶了cookie去瀏覽網頁的話.會不會?,,,恭喜你,答案是,當然會.現在,就讓我們一步一步見證奇蹟吧: 先瞭解下cookie: cookie是服務器唯一可以放在我們硬盤裡的信息,它是文本(當然是加密的),cookie只有服務器能改變(無恥的js代碼不算),服務器發佈命令,瀏覽器執行命令,從而達到服務器控制cookie的目的. cookie分2種,一種是放在硬盤的,一種是放在內存的,放在內存的,瀏覽器一關就消失啦 cookie是會過期的,過了保質期的cookie瀏覽器會自動刪除的 cookie是鍵值對儲存的:格式是 鍵(項目)=值 ,每一個鍵值之間是用";"分割的 cookie的鍵名是唯一的,通一個網站的cookie裡不可能同時存在兩個a,值是可以改變的,瀏覽器裡 a=5,當某個時候服務器帶來新的a=6的時候,瀏覽器裡的a就會更新為6 服務器是文明的:它在返回頭裡用"SetCookie"來設定每個cookie的鍵值,一個"SetCookie"對應一個鍵值,瀏覽器是粗魯的,他們發送header的是說是用"Cookie",一股腦把所有的鍵值用";"分割扔給服務器 在XHR對象裡(哪個小弟不算啊,,,,,切記),cookie總是在內存的,xhr對象會自動的維護cookie,如果我們需要,我們是可以隨意讓XHR在請求的時候帶上我們想讓它帶的cookie.但是我們無法把cookie放到XHR對象裡面,也就是說:我們需要XHR每次請求都帶上我們需要帶的cookie,我們只能無奈的每次都是用指令添加cookie,而不是這次添了以後,之後的每次都不用管了 ==============================
UmJ_2132_lastact : cookie的鍵(項目的名稱) 1430424271%09forum.py : 對應鍵的值 後面的是針對這條cookie鍵的設置: expires : 設定這個鍵的過期時間,過了這個點瀏覽器就會刪除這個cookie鍵值,如果沒有這個設置,cookie不進硬盤,只存在於內存 有時候大家會看到一個很早以前的日期,這其實是服務器讓瀏覽器刪除cookie的方式,也是唯一的方式,把cookie設置為過去,就能刪除cookie鍵值 path: 代表這個鍵的作用域,這個不需要太過瞭解 httpolny: 如果看到這個,說明這個cookie很重要!!!!這個是告訴瀏覽器,這條代碼不許js看到,防止不良代碼竊取敏感信息,嘿嘿嘿,那麼說的話,,,賬號密碼有關的cookie豈不是帶有這個設定?是啊是啊..很有可能啊, domaim:設定此條cookie鍵值的作用域名,瞭解下即可 關於cookie的屬性設定,大家注意下expires和httpolny屬性即可 準備: 大家打開firebug吧..向之前那樣登陸一次,不過麼,,這次請記得在"自動登陸"上打上鉤,成功後,,來到如圖:找Httpolny相關的屬性 如圖4: 很簡單吧,一下就找到4個標識,其中2個沒有過期時間,標識的是"會話"(就是放在內存的意思),肯定不是!!!,好吧..就剩下的有過期時間的2個貨了,,,寫在代碼試試
本節完了..下節講如何在又長又亂的源文件裡提起我們需要的信息和字符編碼的問題 |
|