目錄
一,輪詢(xún)和長(zhǎng)輪詢(xún)
二,分析web端微信
三,爬蟲(chóng)套路
?
一,輪詢(xún)和長(zhǎng)輪詢(xún)
短輪詢(xún) 的基本思路就是瀏覽器每隔一段時(shí)間向?yàn)g覽器發(fā)送http請(qǐng)求,服務(wù)器端在收到請(qǐng)求后,不論是否有數(shù)據(jù)更新,都直接進(jìn)行響應(yīng)。這種方式實(shí)現(xiàn)的即時(shí)通信,本質(zhì)上還是瀏覽器發(fā)送請(qǐng)求,服務(wù)器接受請(qǐng)求的一個(gè)過(guò)程,通過(guò)讓客戶(hù)端不斷的進(jìn)行請(qǐng)求,使得客戶(hù)端能夠模擬實(shí)時(shí)地收到服務(wù)器端的數(shù)據(jù)的變化。
這種方式的 優(yōu)點(diǎn) 是比較簡(jiǎn)單,易于理解,實(shí)現(xiàn)起來(lái)也沒(méi)有什么技術(shù)難點(diǎn)。 缺點(diǎn) 是顯而易見(jiàn)的,這種方式由于需要不斷的建立http連接,嚴(yán)重浪費(fèi)了服務(wù)器端和客戶(hù)端的資源。尤其是在客戶(hù)端,距離來(lái)說(shuō),如果有數(shù)量級(jí)想對(duì)比較大的人同時(shí)位于基于短輪詢(xún)的應(yīng)用中,那么每一個(gè)用戶(hù)的客戶(hù)端都會(huì)瘋狂的向服務(wù)器端發(fā)送http請(qǐng)求,而且不會(huì)間斷。人數(shù)越多,服務(wù)器端壓力越大,這是很不合理的。
因此短輪詢(xún)不適用于那些同時(shí)在線(xiàn)用戶(hù)數(shù)量比較大,并且很注重性能的Web應(yīng)用。
var xhr = new XMLHttpRequest();
setInterval(function(){
xhr.open('GET','/user');
xhr.onreadystatechange = function(){
};
xhr.send();
},1000)
長(zhǎng)輪詢(xún) ajax實(shí)現(xiàn)當(dāng)服務(wù)器收到客戶(hù)端發(fā)來(lái)的請(qǐng)求后,服務(wù)器端不會(huì)直接進(jìn)行響應(yīng),而是先將這個(gè)請(qǐng)求掛起,然后判斷服務(wù)器端數(shù)據(jù)是否有更新。如果有更新,則進(jìn)行響應(yīng),如果一直沒(méi)有數(shù)據(jù),則到達(dá)一定的時(shí)間限制(服務(wù)器端設(shè)置)才返回。?。 客戶(hù)端JavaScript響應(yīng)處理函數(shù)會(huì)在處理完服務(wù)器返回的信息后,再次發(fā)出請(qǐng)求,重新建立連接。
長(zhǎng)輪詢(xún)和短輪詢(xún)比起來(lái),明顯減少了很多不必要的http請(qǐng)求次數(shù),相比之下節(jié)約了資源。長(zhǎng)輪詢(xún)的缺點(diǎn)在于,連接掛起也會(huì)導(dǎo)致資源的浪費(fèi)。
function ajax(){
var xhr = new XMLHttpRequest();
xhr.open('GET','/user');
xhr.onreadystatechange = function(){
ajax();
};
xhr.send();
}
輪詢(xún)與長(zhǎng)輪詢(xún)都是基于HTTP的,兩者本身存在著缺陷:輪詢(xún)需要更快的處理速度;長(zhǎng)輪詢(xún)則更要求處理并發(fā)的能力;兩者都是“被動(dòng)型服務(wù)器”的體現(xiàn):服務(wù)器不會(huì)主動(dòng)推送信息,而是在客戶(hù)端發(fā)送ajax請(qǐng)求后進(jìn)行返回的響應(yīng)。而理想的模型是"在服務(wù)器端數(shù)據(jù)有了變化后,可以主動(dòng)推送給客戶(hù)端",這種"主動(dòng)型"服務(wù)器是解決這類(lèi)問(wèn)題的很好的方案。Web Sockets就是這樣的方案。
二,分析web端微信
請(qǐng)求路徑 :?https://wx.qq.com/?
代碼地址:https://github.com/duanlei123/wechat.git?有詳細(xì)注釋....
三,爬蟲(chóng)套路
1,GET
2,POST
3,Cookies
4,Headers
依次注意-考慮以上4點(diǎn),便可成功爬取任何你想的....
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
