Chrome開發者工具關於網路請求的一個隱藏技能
這個隱藏技能的背景是,最近出於學習目的,我寫了一個百度貼吧的網路爬蟲,專門爬取一些指定主題的貼吧帖子。
抓取帖子用的JavaScript函式如下:
function getPostByAJAX(requestURL){ var html = $.ajax({ url: requestURL, async: false}).responseText; return html; }
就是一個非常簡單的AJAX請求:
上面的url,我直接在瀏覽器裡訪問可以正常工作,返回47.2KB大小的資料。
然而當我用AJAX函式訪問該url時,在Chrome開發者工具裡遇到如下錯誤:
然而,這個錯誤沒有任何明細資訊,我沒有線索去排錯。
於是,就有了本文這個Chrome開發者工具的隱藏技能的用武之地。
在Chrome位址列開啟: chrome://net-internals
點選Event標籤頁:
再回到我的百度貼吧爬蟲網頁,該網頁發起AJAX請求,按F5重新整理後傳送一個新的請求,然後回到Chrome開發者工具。
chrome://net-internals 這個介面顯示的網路請求的明細比Network標籤頁裡要詳細得多:
在響應頭欄位裡發現了引起這個錯誤的一些線索:
從上面的截圖發現,HTTP響應狀態欄位為302,location欄位為 “ ” 。這兩條線索給了我提示:這個錯誤一定和百度網站的登陸狀態處理相關:我使用的url不支援匿名訪問。
我在瀏覽器裡訪問該url能夠成功,因為我的Cookie在起作用。
Goole了一下,發現瞭解決方案。在AJAX的請求引數中新增:
xhrFields:{ withCredentials: true}
如此一來,可以將我的cookie和AJAX請求一齊傳送給百度伺服器。
加上該引數後,請求就能夠得到期望的響應了。
使用Chrome開發者工具這個隱藏技能,我們還能觀察到一些其他的平時很難發現的細節。
比如我的AJAX請求透過本地的jQuery庫檔案發出,我的HTML程式碼裡直接引用了本地檔案jquery1.7.1.js。在執行時,這個jquery1.7.1.js檔案需要被載入到記憶體中。
使用這個隱藏技能,我現在能觀察到jquery1.7.1.js是透過分塊的方式被讀入到記憶體中的,參考現在URL_REQUEST_JOB_BYTES_READ的引數:byte_count = 32768。總共分了8塊讀取,最後1塊因為尺寸不滿32768,只讀了剩下的22285位元組。
這8塊的總位元組數251661正好是jquery1.7.1.js的位元組數。由此再次證明, chrome://net-internals 提供的功能比Network標籤頁裡的要強大。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2214339/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Chrome開發者工具裡的一個隱藏技能:chrome://net-internalsChrome
- 分析關於木馬隱藏一個的新方法(轉)
- 關於對小程式網路請求的封裝(詳盡版)封裝
- Funter for Mac(一鍵開關檔案隱藏工具)Mac
- 收藏 | 關於Mac Dock的10 個隱藏終端命令Mac
- Chrome 開發者工具無法顯示伺服器正常返回的 HTTP 請求的原因分析Chrome伺服器HTTP
- 多個網路請求的介面設計
- 推薦一個 PHP 網路請求外掛 GuzzlePHP
- Android網路請求(終) 網路請求框架RetrofitAndroid框架
- Android網路請求(3) 網路請求框架OkHttpAndroid框架HTTP
- chrome開發者工具Chrome
- 執行緒安全-一個VC下多個網路請求執行緒
- DevOps 高手的九項隱藏技能dev
- 關於兩次http請求,後一次請求影響前一次請求的問題HTTP
- Android網路請求(4) 網路請求框架VolleyAndroid框架
- chrome開發者工具的使用Chrome
- Chrome 開發者工具的技巧Chrome
- 關於UIStatusBar隱藏的小探究UI
- 網路請求了
- 網路請求優化之取消請求優化
- Flutter | 定義一個通用的多功能網路請求 WidgetFlutter
- 使用chrome開發者工具中的network皮膚測量網站網路效能Chrome網站
- node學習之路(一)—— 網路請求
- 深入探索Chrome開發者工具:開發者的利器Chrome
- 適用於開發者的最佳 Chrome 擴充套件工具Chrome套件
- chrome開發者工具使用Chrome
- 關於macOS 選單欄的隱藏操作技巧Mac
- 基於FutureBuilder通用網路請求介面封裝Rebuild封裝
- jQuery隱藏一個div元素jQuery
- css如何隱藏一個元素CSS
- Chrome 開發者工具 workspace 的概念Chrome
- Chrome開發者工具的小技巧Chrome
- 關於linux的網路管理(請教網路高人)(轉)Linux
- 關於一些類病毒隱藏技術的設想 (轉)
- .net core基於HttpClient實現的網路請求庫HTTPclient
- go 中 defer 的一個隱藏功能Go
- HTTP網路請求原理HTTP
- iOS原生網路請求iOS