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

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