免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
掌控POST(4)
 本帖最後由 michael3636 於 2015-5-1 04:55 編輯

Part 4




讓我們繼續(xù)我們的征途,相信每一個(gè)仔細(xì)看完前三篇文章的人.都對(duì)XHR對(duì)象都有了一定的認(rèn)識(shí),而不是像以前使用那樣照搬照寫,壓根不知道為啥這麼寫.好了廢話不多說了,進(jìn)入正題,老規(guī)矩,先來點(diǎn)相關(guān)知識(shí)墊墊底:




  • 網(wǎng)頁上的時(shí)間: 玩網(wǎng)頁的時(shí)候,我們一般會(huì)碰上2種形式的時(shí)間:

  • Thu, 30 Apr 2015 12:05:28 GMT :這種類型的,這是個(gè)js格式的時(shí)間顯示模式,一般出現(xiàn)在服務(wù)器的返回頭部,雖然平時(shí)不常見,但是我們一看就能認(rèn)識(shí),處理也簡(jiǎn)單,用Mid() Cdate() 函數(shù)我們就能很好的得到我們常用的vbs時(shí)間格式
  • 時(shí)間戳: 一般出現(xiàn)在"POST"的請(qǐng)求內(nèi)容或者"GET"的查詢字符串裡,一般看到一串很長(zhǎng)的以"14"開頭的數(shù)字,我們就得考慮它是否代表時(shí)間,其實(shí)就是時(shí)間的純數(shù)字表現(xiàn)形式:定義是從1970年1月1日0點(diǎn)到目前為止的秒數(shù),它包含了年/月/日/時(shí)/分/秒的所有信息(js的時(shí)間格式的本質(zhì)就是從時(shí)間戳數(shù)字格式化而來的),根據(jù)定義我們很簡(jiǎn)單的就能用按鍵寫出我們按鍵版的時(shí)間戳:
  1. t = datediff("s", "1970-1-1", now) - 3600 * 8
  2. //我們是8時(shí)區(qū)的,為了跟服務(wù)器時(shí)區(qū)統(tǒng)一,我們的減去8小時(shí)的秒數(shù)
複製代碼



好了.進(jìn)入主題,今天的主題是: 用XHR登陸賬號(hào)(3種方法)

注意:本章節(jié)只說英文數(shù)字類的賬號(hào)密碼.不涉及中文或其他字符,因?yàn)檫@涉及到字符編碼問題,是個(gè)大話題,不是幾句話能講完的,我會(huì)在以後專門講到


  • POST方式(本質(zhì)是拷貝瀏覽器的登陸方式)

  • 我們打開火狐,進(jìn)入按鍵綜合論壇版塊"http://bbs.anjian.com/forum.php?mod=forumdisplay&fid=17",如果賬號(hào)已經(jīng)登陸,請(qǐng)先退出賬號(hào).填好我們的賬號(hào)和密碼,然後打開firebug.如圖1然後,點(diǎn)一下清除按鈕,確保firebug很乾淨(jìng),然後按下登陸按鈕,等待網(wǎng)頁載入完成.
  • 我了個(gè)去..firebug裡好大一坨,呵呵呵,不用管,拉到最上面,有一個(gè)"[新]綜合討論"文字,前面還有"+",點(diǎn)開這個(gè)"+",圖2
  • 現(xiàn)在我把我們需要用到的內(nèi)容摘入如下:


以下為本帖隱藏內(nèi)容

==============================

頭信息=>來自上傳流的信息:
Content-Length 68
Content-Type application/x-www-form-urlencoded
第一個(gè):我們上傳的內(nèi)容的長(zhǎng)度,由於賬號(hào)密碼長(zhǎng)度的不一樣,可能我們很多人這個(gè)數(shù)據(jù)是不一樣的,這個(gè)具體的數(shù)字我們可用用len()函數(shù)搞定,具體形式是,len(上傳的內(nèi)容)
第二個(gè):客戶端要告訴服務(wù)器的上傳的內(nèi)容的類型,上面的意思是,應(yīng)用類的,通過URL編標(biāo)的,這個(gè)不需要去瞭解很深,到時(shí)候照搬就行了,這2個(gè)內(nèi)容XHR是不會(huì)自動(dòng)幫我們加到請(qǐng)求頭去的,所以到時(shí)候我們得自己加上去

POST=>源代碼
username=我的賬號(hào)&password=我的密碼&quickforward=yes&handlekey=ls
這個(gè)相信我們只需要關(guān)注裡面的紅字即可

響應(yīng):

window.location.,這不就是綜合論壇的網(wǎng)址麼.而這些代碼的執(zhí)行,都是在後臺(tái)的,我們是看不到的..這不就跟我們看到的實(shí)際情況對(duì)上號(hào)了麼...

對(duì)了,還差一個(gè).那就是POST方式提交內(nèi)容的目標(biāo)網(wǎng)址:
很簡(jiǎn)單的操作,把我們的鼠標(biāo)放到firebug的目標(biāo)URL上,按下右鍵,點(diǎn)擊複製網(wǎng)址,我們就得到目標(biāo)網(wǎng)址了,如下:
http://bbs.anjian.com/member.php ... submit=yes&inajax=1

好了,我們需要的消息都得到了.接下來可以寫代碼了,咋寫?很簡(jiǎn)單啊..剛學(xué)嘛..傻瓜式複製,瀏覽器腫麼做我們就怎麼寫:

  • 去按鍵綜合論壇,綜合之前學(xué)到的知識(shí),我們知道這個(gè)應(yīng)該是"GET"方式
  • 用POST方式登錄
  • 瀏覽器成功後回到綜合論壇了,XHR可不會(huì)執(zhí)行代碼..我們手動(dòng)去唄,"GET"方式,


開寫,如下:
  1. //第一步:GET方式去綜合版塊
  2. Set http = CreateObject("WinHttp.WinHttpRequest.5.1")//創(chuàng)建XHR對(duì)象
  3. URL="http://bbs.anjian.com/forum.php?mod=forumdisplay&fid=17"
  4. http.open "GET", URL, false
  5. http.send
  6. If Not isEmpty(http.responsetext) Then
  7. MessageBox "第1步成功!!!"
  8. Else MessageBox "第1步失敗失敗"
  9. End If


  10. //第二步:POST方式登錄
  11. URL = "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"
  12. str = "username=Mic_test&password=password1&quickforward=yes&handlekey=ls"
  13. //上面的str是我們要發(fā)送的內(nèi)容,其中:mic_test是賬號(hào),大家可以換成自己的,password1是密碼,大家可以換成自己的
  14. http.open "POST", URL, False
  15. http.setrequestheader "Content-Type","application/x-www-form-urlencoded" //加上2個(gè)header
  16. http.setrequestheader "Content-Length",len(str) //用函數(shù)取字符串長(zhǎng)度
  17. http.send str//發(fā)送請(qǐng)求,帶著內(nèi)容
  18. If Not isEmpty(http.responsetext) Then
  19. MessageBox http.responsetext //看看返回的內(nèi)容是不是對(duì)得上
  20. Else MessageBox "第2步失敗失敗"
  21. End If


  22. //第三步:瀏覽器會(huì)自動(dòng)去,我們...手動(dòng)去,,
  23. URL="http://bbs.anjian.com/forum.php?mod=forumdisplay&fid=17"
  24. http.open "GET", URL, false
  25. http.send
  26. If Not isEmpty(http.responsetext) Then
  27. MessageBox "第3步成功!!!,扔進(jìn)剪貼板"
  28. Plugin.Sys.SetCLB http.responsetext
  29. Else MessageBox "第1步失敗失敗"
  30. End If
複製代碼
啊哈.....看看剪貼板的內(nèi)容,圖3,成功啦....



等等,問題來了

  • 為啥我得到返回值:

window.location.Referer","http://bbs.anjian.com/forum.php?mod=forumdisplay&fid=17"
然後再執(zhí)行.這次是不是對(duì)上號(hào)了?,當(dāng)然這是題外話,我們只要成功就行了,至於返回值具體是什麼內(nèi)容不重要不是麼?在實(shí)際應(yīng)用中這句代碼是多餘的,但是從這我們知道了一個(gè)這個(gè)對(duì)象的特性,它的請(qǐng)求header是不帶"referer"的,假若我們需要的話,我們可以隨意添加進(jìn)行來源冒充,多好啊......



進(jìn)一步思考:
瀏覽器去網(wǎng)頁沒辦法.不然沒法用登陸界面去登陸賬號(hào),XHR沒這問題,是不是可以省了第一步呢?很簡(jiǎn)單啊..既然有這想法.市實(shí)驗(yàn)下就行了,把第一部分註釋掉,記得創(chuàng)建XHR哪行代碼別註釋掉啊.........我們?cè)僬{(diào)試,代碼就不貼了.
啊哈...成功啦..我們不需要第一步啦...是啊是啊..萬事貴在嘗試嘛......XHR的優(yōu)點(diǎn)就開始凸顯了不是麼?雖然寫起來麻煩點(diǎn)不直觀,但是就效率而言,是瀏覽器所根本無法比擬的,多好的技術(shù)啊..

2."GET"方式


以下為本帖隱藏內(nèi)容

==============================

在 Part 2 我講到過很多時(shí)候"GET"和"POST" 可以互轉(zhuǎn)的,我們能否用"GET"登陸呢?這還不簡(jiǎn)單.能不能的試試不就知道了麼,
截取上面的POST方式的 地址和內(nèi)容:
提交地址是: http://bbs.anjian.com/member.php ... submit=yes&inajax=1
提交內(nèi)容是: username=我的賬號(hào)&password=我的密碼&quickforward=yes&handlekey=ls
照葫蘆畫瓢我們把內(nèi)容接到地址裡去,看代碼:

==============================
  1. //"GET"登陸
  2. Set http = CreateObject("WinHttp.WinHttpRequest.5.1")//創(chuàng)建XHR對(duì)象
  3. //原來的地址
  4. URLold = "http://bbs.anjian.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"
  5. //原來的請(qǐng)求內(nèi)容
  6. str = "username=Mic_test&password=password1&quickforward=yes&handlekey=ls"
  7. URL=URLold & "&" & str //把2者連起來,看格式可以知道每個(gè)參數(shù)是用"&",連接的,所以我們?cè)?2者之間加個(gè)"&"
  8. //上面的str是我們要發(fā)送的內(nèi)容,其中:mic_test是賬號(hào),大家可以換成自己的,password1是密碼,大家可以換成自己的
  9. http.open "GET", URL, False
  10. http.send //發(fā)送請(qǐng)求,"get"不需要內(nèi)容,而且不需要設(shè)置header 多方便啊.保佑成功啊....
  11. If Not isEmpty(http.responsetext) Then
  12. MessageBox http.responsetext //看看返回的內(nèi)容是否登陸成功了...
  13. Else MessageBox "失敗"
  14. End If


  15. //去網(wǎng)址再次確認(rèn)看看是不是真的登陸了
  16. URL="http://bbs.anjian.com/forum.php?mod=forumdisplay&fid=17"
  17. http.open "GET", URL, false
  18. http.send
  19. If Not isEmpty(http.responsetext) Then
  20. MessageBox "成功!!!,扔進(jìn)剪貼板"
  21. Plugin.Sys.SetCLB http.responsetext
  22. Else MessageBox "失敗"
  23. End If
複製代碼
哈哈哈,激動(dòng)吧.事實(shí)證明你成功了,,,,呵呵呵

需要著重說明的是:這個(gè)方式是否可以登錄得看服務(wù)器短校本代碼是腫麼寫的,你在按鍵成功了不代表你在任何地方能成功,所以得學(xué)會(huì)嘗試和實(shí)踐!!!!

3."Cookie"方式(登錄都省了,帶著cookie直接訪問網(wǎng)頁去!!!!)


以下為本帖隱藏內(nèi)容

==============================

按鍵論壇登錄裡有個(gè)自動(dòng)登陸的複選框,相信很多人都隨手點(diǎn)了,派啥用的呢,,,很簡(jiǎn)單啊,,你選了.明天一覺醒來來按鍵論壇,你就不用登陸啦,,直接就是在線狀態(tài),為啥啊,綜合我們前面所知道的知識(shí)不難推測(cè),cookie是服務(wù)器唯一可以讓瀏覽器保存在硬盤裡的東西,瀏覽器能保證是登陸狀態(tài),肯定是cookie搞的鬼,事實(shí)也能證明這一點(diǎn),我們清理下cookie的話...開了瀏覽器,按鍵又問我們要賬號(hào)密碼了....那要是我們的XHR帶了cookie去瀏覽網(wǎng)頁的話.會(huì)不會(huì)?,,,恭喜你,答案是,當(dāng)然會(huì).現(xiàn)在,就讓我們一步一步見證奇蹟吧:
先瞭解下cookie:
cookie是服務(wù)器唯一可以放在我們硬盤裡的信息,它是文本(當(dāng)然是加密的),cookie只有服務(wù)器能改變(無恥的js代碼不算),服務(wù)器發(fā)佈命令,瀏覽器執(zhí)行命令,從而達(dá)到服務(wù)器控制cookie的目的.
cookie分2種,一種是放在硬盤的,一種是放在內(nèi)存的,放在內(nèi)存的,瀏覽器一關(guān)就消失啦
cookie是會(huì)過期的,過了保質(zhì)期的cookie瀏覽器會(huì)自動(dòng)刪除的
cookie是鍵值對(duì)儲(chǔ)存的:格式是 鍵(項(xiàng)目)=值 ,每一個(gè)鍵值之間是用";"分割的
cookie的鍵名是唯一的,通一個(gè)網(wǎng)站的cookie裡不可能同時(shí)存在兩個(gè)a,值是可以改變的,瀏覽器裡 a=5,當(dāng)某個(gè)時(shí)候服務(wù)器帶來新的a=6的時(shí)候,瀏覽器裡的a就會(huì)更新為6
服務(wù)器是文明的:它在返回頭裡用"SetCookie"來設(shè)定每個(gè)cookie的鍵值,一個(gè)"SetCookie"對(duì)應(yīng)一個(gè)鍵值,瀏覽器是粗魯?shù)?他們發(fā)送header的是說是用"Cookie",一股腦把所有的鍵值用";"分割扔給服務(wù)器

在XHR對(duì)象裡(哪個(gè)小弟不算啊,,,,,切記),cookie總是在內(nèi)存的,xhr對(duì)象會(huì)自動(dòng)的維護(hù)cookie,如果我們需要,我們是可以隨意讓XHR在請(qǐng)求的時(shí)候帶上我們想讓它帶的cookie.但是我們無法把cookie放到XHR對(duì)象裡面,也就是說:我們需要XHR每次請(qǐng)求都帶上我們需要帶的cookie,我們只能無奈的每次都是用指令添加cookie,而不是這次添了以後,之後的每次都不用管了

==============================
詳細(xì)看cookie:

  • 服務(wù)器給瀏覽器的cookie:例子
Set-Cookieg :UmJ_2132_lastact=1430424271%09forum.py; expires=Fri, 01-May-2015 20:04:31 GMT; path=/

UmJ_2132_lastact : cookie的鍵(項(xiàng)目的名稱)
1430424271%09forum.py : 對(duì)應(yīng)鍵的值

後面的是針對(duì)這條cookie鍵的設(shè)置:
expires : 設(shè)定這個(gè)鍵的過期時(shí)間,過了這個(gè)點(diǎn)瀏覽器就會(huì)刪除這個(gè)cookie鍵值,如果沒有這個(gè)設(shè)置,cookie不進(jìn)硬盤,只存在於內(nèi)存
有時(shí)候大家會(huì)看到一個(gè)很早以前的日期,這其實(shí)是服務(wù)器讓瀏覽器刪除cookie的方式,也是唯一的方式,把cookie設(shè)置為過去,就能刪除cookie鍵值
path: 代表這個(gè)鍵的作用域,這個(gè)不需要太過瞭解
httpolny: 如果看到這個(gè),說明這個(gè)cookie很重要!!!!這個(gè)是告訴瀏覽器,這條代碼不許js看到,防止不良代碼竊取敏感信息,嘿嘿嘿,那麼說的話,,,賬號(hào)密碼有關(guān)的cookie豈不是帶有這個(gè)設(shè)定?是啊是啊..很有可能啊,
domaim:設(shè)定此條cookie鍵值的作用域名,瞭解下即可
關(guān)於cookie的屬性設(shè)定,大家注意下expires和httpolny屬性即可


準(zhǔn)備:
大家打開firebug吧..向之前那樣登陸一次,不過麼,,這次請(qǐng)記得在"自動(dòng)登陸"上打上鉤,成功後,,來到如圖:找Httpolny相關(guān)的屬性
圖4:
很簡(jiǎn)單吧,一下就找到4個(gè)標(biāo)識(shí),其中2個(gè)沒有過期時(shí)間,標(biāo)識(shí)的是"會(huì)話"(就是放在內(nèi)存的意思),肯定不是!!!,好吧..就剩下的有過期時(shí)間的2個(gè)貨了,,,寫在代碼試試
  1. Set http = CreateObject("WinHttp.WinHttpRequest.5.1")//創(chuàng)建XHR對(duì)象
  2. URL="http://bbs.anjian.com/forum.php?mod=forumdisplay&fid=17" //綜合版塊網(wǎng)址
  3. http.open "GET", URL, False
  4. //下面是設(shè)置請(qǐng)求頭的Cookie,記住.瀏覽器是粗魯?shù)?把兩條cookie寫在一起就行,只要鍵值,不要設(shè)置,cookie之間用";"分隔
  5. http.setrequestheader "Cookie","gUmJ_2132_saltkey=UQZSGyJs;gUmJ_2132_auth=9ec68C%2Bc5BTgrB2VemTNWm6%2B8NrVUZsayPnJaEmnf0WMs9pU4Ymw9cFhvQpilKkX3%2Bo28QVtcRiVP4pLVw1W53QmLTPu;"
  6. http.send //發(fā)送請(qǐng)求
  7. If Not isEmpty(http.responsetext) Then
  8. Plugin.Sys.SetCLB http.responsetext //扔進(jìn)剪貼板,看看返回的內(nèi)容是否登陸成功了...
  9. Else MessageBox "失敗"
  10. End If
複製代碼
啊哈..成功啦...太無恥了..哈哈哈...只不過大家得切記.用這個(gè)方式必須得每次請(qǐng)求都寫上請(qǐng)求頭,至少在按鍵論壇是這樣的!!!

本節(jié)完了..下節(jié)講如何在又長(zhǎng)又亂的源文件裡提起我們需要的信息和字符編碼的問題 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服