网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

时间:2022-04-03 00:49:24

1 引言

  在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)和回复(response)进行分析,寻找其中的规律,然后才能通过网络爬虫进行模拟。浏览器大多也自带有调试工具可以进行抓包分析,但是浏览器自带的工具比较轻量,复杂的抓包并不支持。且有时候需要编写手机APP爬虫,这时候就必须需要用到其他的专业抓包工具,例如本篇介绍的Fiddler。

2 Fiddler简介

  Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

当然,除了Fiddler之外,抓包工具还有Firebug、Wireshark、Httpwatch等,为什么我们要选择fiddler呢?原因如下:

  (1)Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。

  (2)Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用,总有一点杀鸡用牛刀的感觉。

  (3)Httpwatch也是比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力,而Fiddler 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。

3 Fiddler界面介绍

  Fiddler界面如下:

网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  Fiddler界面左侧的小窗口列表展示的是所有Fiddler抓取的包,各个包每个字段还有图标的含义如下表所示:

名称

含义

#

抓取HTTP Request的顺序,从1开始,以此递增

Result

HTTP状态码

Protocol

请求使用的协议,如HTTP/HTTPS/FTP等

Host

请求地址的主机名

URL

请求资源的位置

Body

该请求的大小

Caching

请求的缓存过期时间或者缓存控制值

Content-Type

请求响应的类型

Process

发送此请求的进程:进程ID

Comments

允许用户为此回话添加备注

Custom

允许用户设置自定义值

  数据包属性第一列的图标含义如下表所示:

图标

含义

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

请求已经发往服务器

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

已从服务器下载响应结果

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

请求从断点处暂停

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应从断点处暂停

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

请求使用 HTTP 的 HEAD 方法,即响应没有内容(Body)

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

请求使用 HTTP 的 POST 方法

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是 HTML 格式

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是一张图片

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是脚本格式

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是 CSS 格式

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是 XML 格式

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是 JSON 格式

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是一个音频文件

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是一个视频文件

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是一个 SilverLight

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是一个 FLASH

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是一个字体

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

普通响应成功

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是 HTTP/300、301、302、303 或 307 重定向

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应是 HTTP/304(无变更):使用缓存文件

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

响应需要客户端证书验证

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

服务端错误

 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

会话被客户端、Fiddler 或者服务端终止

  Fiddler界面右侧是用来显示选中数据报的详细信息,上半部分显示的是数据报的请求信息,下半部分显示的是回复信息:

网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

4 PC端网页会话数据包捕获

4.1 HTTP会话数据包捕获

  Fiddler打开后,会自动将浏览器代理设置为“127.0.0.1:8888”,关闭时自动修改为原来的代理,这一点上Fiddler还是比较方便的。当然你也可以手动设置浏览器代理。开始抓包是必须确保猜到了file下的Capture Traffic是勾选上的,当然也可以通过下方的Capturing按钮开启或关闭。

网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  打开后,Fiddler会自动捕获所有HTTP会话信息。

4.2 HTTPS会话数据包捕获

  完成上述设置之后可以捕获HTTP协议下的会话信息,但现在的很多网站都采用HTTPS协议,用Fiddler不会就会出问题。百度首页采用的就是HTTPS协议,如下图所示,当我们尝试使用Fiddler不会访问百度首页时,出现捕获失败: 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  所以,若是要捕获HTTPS协议会话信息,要进行进一步的配置。配置过程如下:

  第一步:打开Tools – Options,然后将弹出窗口内HTTPS选项下的所有可选项都勾选上。

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  有的网上教程说到此点击OK就可以了,但事实证明,如果就设置到这一步,打开HTTPS网页会失败,出现警告“您的连接并不安全”,如下图所示。所以还要进行第二步操作。

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  第二步:还是在第一步中打开的弹出窗口内,点击action,然后选择第二项,将证书到处到桌面。

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  第三步:打开firefox浏览器,选项-隐私与安全,在最下面找到证书设置项,点击“查看证书”,导入在第二步中到处到桌面的证书,勾选两个信任之后确认退出。

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  此时,再次打开百度首页,查看Fiddler捕获的信息,发现可以正常访问百度,且Fiddler没有报警报信息,且成功捕获如下所示: 网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

5 手机端APP会话信息采集

  除了采集电脑浏览器的网页会话外,Fiddler还能采集手机APP的会话信息。当然,这还是需要经过一番设置才行。步骤如下:

  第一步:用电脑开启一个无线网(360WiFi、猎豹wifi等都可以实现),然后让手机通过电脑开启的无线网上网。

  第二步:依次点击打开Tools-Options-Connections,然后勾选第二项“Allow remote compute to connect”。

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  第三步:到手机中将手机的网络代理改为电脑的fiddler。首先查看电脑的ip地址,然后在手机中一次打开“设置-无线和网络-wlan”,连接上电脑上刚创建的无线网,然后长按该无线网,依次点击“修改网络-显示高级设置-代理-手动”,将服务器主机名设置为电脑的ip地址,端口设置为8888。如下图所示:

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

  设置好后,我们Fiddler就可以成功捕获手机APP的会话信息了。

6 会话过滤功能

  当我们打开Fiddler进行会话捕获时,在默认情况下,Fiddler会不会所有的会话,这样就造成不会的会话过多,不利于我们分析,这时候我们可以用到Filters功能进行会话过滤。Filters三种过滤模式供选择:

  •   No Host Filter:不设置域名过滤;
  •   Hide the following Hosts:设置的这些域名相关会话将在左侧会话列表中被隐藏;
  •   Show only the following Hosts:只在会话列表中显示与设置的这些域名相关的会话;
  •   Flag the following Hosts:与设置的域名相关会话将在左侧会话列表中高亮想显示。

  如果要设置多个域名,域名之间用分号分开。切记,选好后要点击Actions按钮,然后点击Runfiltersets now让设置生效。如果我们只想显示百度和CSDN的会话信息,设置过程如下图所示:

  网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包

7 总结

  Fiddler是一个功能强大的网络抓包工具,本文对如何用Fiddler抓取HTTP、HTTPS、手机APP会话数据报介绍了,另外还补充介绍了数据包过滤的功能。当然,Fiddler的功能远不止这些,不过本文介绍的操作用于一般的网络爬虫数据包分析足以。

网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包的更多相关文章

  1. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  2. PHP网络爬虫实践:抓取百度搜索结果,并分析数据结构

    百度的搜索引擎有反爬虫机制,我先直接用guzzle试试水.代码如下: <?php /** * Created by Benjiemin * Date: 2020/3/5 * Time: 14:5 ...

  3. 『言善信』Fiddler工具 — 16、使用Fiddler抓取移动端App请求

    目录 1.抓取Android移动端App请求 2.抓取IOS移动端App请求 3.总结: 1.抓取Android移动端App请求 前提: 因为Fiddler抓包的原理就是通过代理,所以确保被测终端要和 ...

  4. 爬虫之Fiddler抓取HTTPS设置

    Fiddler抓取HTTPS设置 启动Fiddler,打开菜单栏中的 Tools > Telerik Fiddler Options,打开“Fiddler Options”对话框. 对Fiddl ...

  5. 有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取

    点这里 阅读目录 用 AngularJS(以及其它 JavaScript 框架)开发的 Web 站点不支持爬虫的抓取 解决方案 为什么公开我们的解决方案 实现 AngularJS 服务 结论   Pr ...

  6. 网络爬虫Java实现抓取网页内容

    package 抓取网页; import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream; ...

  7. Fiddler 抓取 ios 端数据包

    前提条件: 1. Fiddler 工具安装完成,并授权成功,可以完成网页的http 协议拦截. 2. iphone X 一部 ☺ 3. 360wifi 一个[同一局域网内,任何wifi都可以设置,其他 ...

  8. 读书笔记--用Python写网络爬虫02--数据抓取

    抓取(scraping)---爬虫从网页中抽取一些数据用以实现某些用途. 三种抽取网页数据的方法:正则表达式.Beautiful Soup和lxml. 2.1 分析网页 通过浏览器自带选项,查看网页源 ...

  9. Python 网络爬虫实战:爬取 B站《全职高手》20万条评论数据

    本周我们的目标是:B站(哔哩哔哩弹幕网 https://www.bilibili.com )视频评论数据. 我们都知道,B站有很多号称“镇站之宝”的视频,拥有着数量极其恐怖的评论和弹幕.所以这次我们的 ...

随机推荐

  1. &lbrack;Machine Learning&rsqb; 机器学习常见算法分类汇总

    声明:本篇博文根据http://www.ctocio.com/hotnews/15919.html整理,原作者张萌,尊重原创. 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多 ...

  2. 自己动手制作CSharp编译器

    在你喜欢的位置(如F盘根目录)新建一个文件夹,并命名为“CSharp开发环境”.找到或下载C#编译器组件(csc.exe和cscui.exe),并放在先前建立的文件夹中.该组件的一般位置在C盘的.NE ...

  3. iOS 开发--多线程

    前面在<Bison眼中的iOS开发多线程是这样的(二)>一文中讲完了多线程的NSThread,不难发现这种方式的多线程实现起来非常的复杂,为了简化多线程的开发,iOS提供了GCD来实现多线 ...

  4. Altium Designer中默认取消重复画线的选项

  5. jQuery ajax&lpar;&rpar; 参数&comma;回调函数,数据类型,发送数据到服务器,高级选项

    $.ajax({ options:/*类型:Object;  可选.AJAX 请求设置.所有选项都是可选的.*/ async:/*类型:Boolean; 默认值: true.默认设置下,所有请求均为异 ...

  6. MySQL密码重置&lpar;root用户&rpar;

    分别在Windows下和Linux下重置了MYSQL的root的密码: 在windows下: 1:进入cmd,停止mysql服务:Net stop mysql 到mysql的安装路径启动mysql,在 ...

  7. Android上下文菜单ContentView详解

    ContentView介绍 上下文菜单继承了android.view.Menu,因此我们可以像操作Options Menu那样给上下文菜单增加菜单项.上下文菜单与Options Menu最大的不同在于 ...

  8. sqlserver 学习之分离与附加数据库

    在学习sqlserver数据库的过程中,我们会学习到有关一些听起来比较陌生的专用名词,比如说分离与附加这两个专有名词,对于我来说就是比较陌生的.好的,下面我们一起来学习一下吧.为了讲的通俗一点,下面以 ...

  9. 10&lowbar;常见的get和post请求&lowbar;路由器&lowbar;ejs服务器渲染模板引擎

    1. 常见的 get 和 post 请求有哪些? 常见的发送 get 请求方式: 在浏览器地址栏输入 url 地址访问 所有的标签默认发送的是 get 请求:如 script link img a f ...

  10. 【C&num;】取整函数Math&period;Round、Math&period;Ceiling和Math&period;Floor区别

    Math.Round 原则: 四舍六入五取偶. 也就是说 0.1-0.4为0 0.5为0 0.6-0.9为1 1.5为2 Math.Ceiling 原则: 有小数就加1 0.1 = 1 Math.Fl ...