Chrome开发者工具关于网络请求的一个隐藏技能

这个隐藏技能的背景是,最近出于学习目的,我写了一个百度贴吧的网络爬虫,专门爬取一些指定主题的贴吧帖子。

抓取帖子用的JavaScript函数如下:

function getPostByAJAX(requestURL){

   var html = $.ajax({

         url: requestURL,

         async: false}).responseText;

         return html;

}

就是一个非常简单的AJAX请求:

传入该函数的输入参数requestURL的值为: http://tieba.baidu.com/i/i/my_tie

上面的url,我直接在浏览器里访问可以正常工作,返回47.2KB大小的数据。

然而当我用AJAX函数访问该url时,在Chrome开发者工具里遇到如下错误:

然而,这个错误没有任何明细信息,我没有线索去排错。

于是,就有了本文这个Chrome开发者工具的隐藏技能的用武之地。

在Chrome地址栏打开: chrome://net-internals

点击Event标签页:

再回到我的百度贴吧爬虫网页,该网页发起AJAX请求,按F5刷新后发送一个新的请求,然后回到Chrome开发者工具。

该AJAX请求的明细就详细显示出来了。找到我关心的url:http://tieba.baidu.com/i/i/my_tie

chrome://net-internals这个界面显示的网络请求的明细比Network标签页里要详细得多:

在响应头字段里发现了引起这个错误的一些线索:

从上面的截图发现,HTTP响应状态字段为302,location字段为 “http://static.tieba.baidu.com/tb/error.html?ErrType=1” 。这两条线索给了我提示:这个错误一定和百度网站的登陆状态处理相关:我使用的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的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木子昭的博客

Python3简单实现多任务(线程/协程篇)线程多任务实现1:直接使用Thread创建线程线程多任务实现2:定义类继承threading.Thread,然后重写run方法(run方法相当于功能函数)协

写在前面 上一篇文章[Python3简单实现多任务(多进程篇)]已经介绍了python多进程实现多任务的简单实现方法; 这次讲一讲python创建多任务另外两种...

3526
来自专栏解Bug之路

解Bug之路-串包Bug

笔者很热衷于解决Bug,同时比较擅长(网络/协议)部分,所以经常被唤去解决一些网络IO方面的Bug。现在就挑一个案例出来,写出分析思路,以飨读者,希望读者在以后...

881
来自专栏维C果糖

详述 IntelliJ IDEA 的使用界面

是否还记得在博文“ IntelliJ IDEA 安装目录的核心文件讲解 ”中,这张充满神秘色彩的图片呢?进入她,让咱们一起感受她的魅力吧! 如上图所示,打开 I...

2058
来自专栏惨绿少年

MongoDB 分片集群技术

---- 在了解分片集群之前,务必要先了解复制集技术! ----  1.1 MongoDB复制集简介   一组Mongodb复制集,就是一组mongod进程,...

5269
来自专栏FreeBuf

LoadLibrary:一款能够允许Linux程序从DLL文件中加载或调用函数的工具

介绍 今天给大家推荐的这个代码库将允许原生Linux程序从一个WindowsDLL文件中加载或调用功能函数。下面是一个简单的演示示例,我将Windows Def...

3268
来自专栏高性能服务器开发

从零学习开源项目系列(二) 最后一战概况

这份代码我也是无意中来自一个朋友,据他说也是来源于互联网,服务器端代码原来是linux版本的,但被厉害的大神修改成可以在Windows上运行。(如果不小心侵犯了...

1782
来自专栏FreeBuf

CVE 2017-0199漏洞利用的新姿势

近日从客户处捕获一枚邮件附件中的可疑word样本,以下是扫描结果,检测率貌似不高。 ? ? 手动分析吧。 文件md5:0b16b255918264667a9f0...

2465
来自专栏我叫刘半仙

高效访问海量地图数据--用OpenLayers访问GeoServer发布的地图

1.1K3
来自专栏极客慕白的成长之路

GifCam – 简单好用的 GIF 动画录制软件

GifCam 是一款小而美的 GIF 录制软件。她拥有一个迷人的特点 —— 通过将软件置顶在所有窗口之上,你可以像相机一样调整录制区域,移动或缩放窗口。

972
来自专栏开发与安全

JSONP存在的JSON Hijacking漏洞以及与csrf/xss漏洞的关系

在实习过程中接触过所谓的JSON Hijacking 漏洞,但最近在写论文时发现理解得不深,好像跟xss与csrf又有点区别与联系,索性深入学习了下JSONP(...

3000

扫码关注云+社区

领取腾讯云代金券