Fiddler(一)

摘要:
Fiddler:学习scrapy,不只是满足于网页上爬去信息的成功乐趣,现在开始接触爬去手机信息了,不好解决,知道过程不会轻松,但自己想去尝试。Fiddler可以抓取支持http代理的任意程序的数据包,如果要抓取https会话,要先安装证书。HTTP协议要分析Fiddler抓取的数据包,我们首先要熟悉HTTP协议。用户可以加入一个Inspector插件对象,来使用.net下的任何语言来编写Fiddler扩展。

Fiddler:学习scrapy,不只是满足于网页上爬去信息的成功乐趣,现在开始接触爬去手机信息了,不好解决,知道过程不会轻松,但自己想去尝试。QAQ

写这篇博客是基于以下的几位大神学习笔记,我只是做下总结,里面会有具体的图片信息:

https://blog.csdn.net/playstudy/article/details/18921967
https://blog.csdn.net/a877415861/article/details/79447440
https://www.cnblogs.com/miantest/p/7289694.html

Fiddler:基础知识

Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。

代理就是在客户端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进行拦截,代理服务器再冒充客户端发送数据到服务器;
同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。

Fiddler可以抓取支持http代理的任意程序的数据包,如果要抓取https会话,要先安装证书。

HTTP协议

要分析Fiddler抓取的数据包,我们首先要熟悉HTTP协议。HTTP即超文本传输协议,是一个基于请求与响应模式的、无状态的、应用层的协议,绝大多数的Web开发,
都是构建在HTTP协议之上的Web应用。

HTTP的工作过程:当我们请求一个超链接时,HTTP就开始工作了,客户端先发送一个请求到服务器,请求内容包括:协议版本号、请求地址、请求方式、请求头和请求参数;
服务器收到请求后做相应的处理,并将响应数据返回到客户端,响应内容包括:协议版本号、状态码和响应数据。前端根据响应数据做相应的处理,就是最终我们看到的内容

Fiddler的安装

1.下载安装包:"http://www.downza.cn/soft/234727.html"
2.下载.net framework 4.6.2 x64(Fiddler Orachestra Beta会需要):"https://www.fixdown.com/soft/3178.html"

Fiddler的配置(手机和电脑连接同一网络)

1)Fiddler, Tools-> Fiddler Options
    HTTPS:
        1.选中"Fiddler, Tools-> Fiddler Options"——Fiddler就可以截获HTTPS请求
        2.选中"Ignore server certificate errors". 
    Connections
        1.选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来
2)查看本机Ip
    ipconfig(192.168.5.147) 
3)IPhone设置代理
    设置 -> 无线局域网 -> 已连接网络旁边的蓝色感叹号 -> 设置代理
        服务器:192.168.5.147
        端口:8888
4)打开IPhone 的Safari, 访问 http://192.168.5.147:8888,点"FiddlerRoot certificate" 然后安装证书
5)检查是否设置成功
    Iphone:Safari输入:"http://www.cr173.com/z/qvodplayer/."查看Fiddler能否捕获

Fiddler使用

Fiddler支持断点调试技术,当你在软件的菜单—rules—automatic breakpoints选项选择before request,或者当这些请求或响应属性能够跟目标的标准相匹配,
Fiddler就能够暂停Http通讯,并且允许修改请求和响应。这种功能对于安全测试是非常有用的,当然也可以用来做一般的功能测试,因为所有的代码路径都可以用来演习。 通过显示所有的Http通讯,Fiddler可以轻松地演示哪些用来生成一个页面,通过统计页面(就是Fiddler左边的那个大框)用户可以很轻松地使用多选, 来得到一个WEB页面的“总重量”(页面文件以及相关js,css等)你也可以很轻松地看到你请求的某个页面,总共被请求了多少次,以及多少字节被转化了。 用户可以加入一个Inspector插件对象,来使用.net下的任何语言来编写Fiddler扩展。
RequestInspectors 和 ResponseInspectors提供一个格式规范的,或者是被指定的(用户自定义)Http请求和响应视图。

Fiddler软件信息栏

基本信息:
    #:顺序号,按照抓包的顺序从1递增
    Result:HTTP状态码      
    Protocol:请求使用的协议,如HTTP/HTTPS/FTP等
    HOST:请求地址的主机名或域名
    URL:请求资源的位置
    Body:请求大小
    Caching:请求的缓存过期时间或者缓存控制值
    Content-Type:请求响应的类型
    Process:发送此请求的进程ID
    Comments:备注 
    Custom:自定义值

Fiddler的QuickExec的简单使用

1、cls
    cls清屏命令,输入该命令可以清空会话列表中所有会话cls清屏命令,输入该命令可以清空会话列表中所有会话
2、select
    通过select命令可以选择出某一类型HTTP会话的功能。 
    比如选择出所有的html类型的HTTP会话,命令:select html 
    比如选择出所有的图片类型的HTTP会话,命令:select image
3、?
    ?命令可以查找出网址中包含某些字符的会话信息,比如“?baidu”可以查找出网址中包含“baidu”字符串的会话信息。
4、help
    执行该命令可以打开Fiddler官方使用手册。
5、>,<请求body大小的范围
6、=
    匹配HTTP返回码(=200)
7、@
    @后面跟Host,可以匹配域名(@www.baidu.com)
8、dump
    将所有请求打包成saz压缩包,保存到“我的文档Fiddler2Captures”目录下    
9、start
    开始监听请求    
10、stop
    停止监听请求

Insepector:请求(即客户端发出的数据)和响应(服务器返回的数据)

HTTP Request Headers:
    请求方式:GET
    协议: HTTP/1.1
    Client 头域:
    Accept: text/html, application/xhtml+xml, image/jxr, */*                             ---------浏览器端可以接受的媒体类型
    Accept-Encoding: gzip, deflate                                                                  ---------压缩方法
    Accept-Language: zh-CN                                                                          ---------语言类型
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
---------客户端使用的操作系统和浏览器的名称和版本 COOKIE头域:将cookie值发送给服务器 Transport 头域: Connection:当网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接是否关闭。keep-alive表示不会关闭, 客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;close表示关闭,客户端再次访问这个服务器上的网页,需要重新建立连接。 HOST:主机名或域名,若没有指定端口,表示使用默认端口80. HTTP Response Headers: 协议:HTTP/1.1 状态码:200 Cache头域: Cache-Control: private ---------此响应消息不能被共享缓存处理,对于其他用户的请求无效 Date: Sat, 05 Aug 2017 04:37:43 GMT ---------生成消息的具体时间和日期 Expires: Sat, 05 Aug 2017 04:37:42 GMT ---------浏览器会在指定过期时间内使用本地缓存 Cookie/Login 头域: Set-Cookie: BDSVRTM=264; path=/ ---------把cookie发送到客户端 Set-Cookie: BD_HOME=1; path=/ Set-Cookie: H_PS_PSSID=1425_21097_22157; path=/; domain=.baidu.com Entity头域 Content-Length: 202740 ---------正文长度 Content-Type: text/html;charset=utf-8 ---------告知客户端服务器本身响应的对象的类型和字符集 Miscellaneous 头域: Bdpagetype: 2 Bdqid: 0x99791efd00036253 Bduserid: 2577220064 Server: BWS/1.1 ---------指明HTTP服务器的软件信息 X-Ua-Compatible: IE=Edge,chrome=1 Security头域: Strict-Transport-Security: max-age=172800 ---------基于安全考虑而需要发送的参数:http://www.freebuf.com/articles/web/66827.html Transport头域: Connection: Keep-Alive 6)TextView:显示请求或响应的数据。 7)WebForms:请求部分以表单形式显示所有的请求参数和参数值;响应部分与TextView内容是一样的。 8)Auth:显示认证信息,如Authorization 9)Cookies:显示所有cookies 10)Raw:显示Headers和Body数据 11)JSON:若请求或响应数据是json格式,以json形式显示请求或响应内容 12)XML:若请求或响应数据是xml格式,以xml形式显示请求或响应内容 13)上面是以百度主页为例,百度主页采用的是GET请求,在TextView中没有请求body,我们再以无忧行网站登录接口为例,它是一个POST请求,除了请求头外,在TextView中多了请求数据。 GET请求是将请求参数放在url中,而POST请求一般是将请求参数放在请求body中。

Fiddler断点功能

通信过程中,在传递信息的中间进行修改后在传递,那么就可以使用Fiddler的断点功能。
1、使用Fiddler的断点,可以实现的功能:
    拦截响应数据,并进行相应修改。
    修改请求数据中的头信息,实现相应功能,比如模拟用户请求等功能。
    构建请求数据,随意进行数据提交。
2、Fiddler断点功能分为两种类型:
    响应时断点 Response断点
    请求时断点 Resquest断点
    
设置响应断点方法有两种:
通过可视化操作设置
- Before Requests:拦截所有发送给服务器的请求
- After Responses:拦截所有服务器返回的session
- Disabled :取消断点
    1.中断设置
        单击Fiddler中的Rules–>Automatic Breakpoints–>After Responses 
    2.取消响应中断设置 
        单击Fiddler中的Rules–>Automatic Breakpoints–>Disabled
        
通过命令去设置。
    1.响应断点
        bpafter www.baidu.com  对www.baidu.com进行响应断点
        bpafter                取消响应断点
    2.请求断点
        bpu  www.baidu.com      对www.baidu.com进行请求断点
        bpu                     取消请求断点

遇到的问题:

1)执行fiddler文件下fiddler.exe 提示下载.net framework 
2)解决Fiddler "creation of the root certificate was not successful”
    1.cd "d:Program FilesFiddler"--进入Fiddler所在文件
    2.makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" 
-sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2020(大于当前时间) 3)配置浏览器代理:(开启fiddler时,该程序会自动配置浏览器代理,导致无法无法上网) 1.chrome -> 设置 -> 高级 -> 打开代理设置 -> 连接 -> 局域网设置 -> 代理服务器:不勾选"为LAN使用代理服务器" 地址:192.168.5.147 端口:8888 2.Fiddler软件会提示"The system proxy was changed.Click to reenable capturing",点击之后,Fiddler会设置浏览器代理 4)只能捕获HTTP,而不能捕获HTTPS的解决办法 1. 先把IPhone上所有的Fiddler证书删除 (拿出IPhone,点”设置“->“通用”->"描述文件") 2. 安装上面的方法,重新安装Fiddler证书

免责声明:文章转载自《Fiddler(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Google浏览器做真机页面调试[Win10应用开发] 如何使用Windows通知下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

循序渐进Linux 2:Linux的常用命令及使用技巧

一、Shell   shell本身是一个以C语言编写的程序,是用户和操作系统内核之间通信的桥梁。shell既是一种命令解释程序,又是一种功能强大的解释型程序设计语言。shell解释用户输入的命令,提交到内核处理,最后返回结果给用户。 1. shell命令语法分析 command [option] -[arguments] 2. shell的通配符 bash...

论软件体系架构之质量属性

论软件体系架构之质量属性 徐怀建 (石家庄铁道大学,河北省石家庄市,050000) 摘 要:软件架构(及软件架构设计师)重点关注的是质量属性。文章从常见的六个质量属性,即可用性、可修改性、性能、安全性、可测试性、易用性写起,使读者对其有初步的认识和了解。解决了在具体的软件开发环境中的质量属性是什么,怎么用,如何用好的问题。只用遵循质量属性的原则,才能有好...

最全的 Charles 抓包工具详解

0. 前言不管是移动开发者还是测试者,于抓包工具对于我们的工作都是非常有帮助的,而Charles是一款非常优秀的抓包工具 Charles不仅可以帮助我们抓取服务器返回的数据,还可以修改请求参数,修改响应体 基本上HTTP能修改的东西,Charles都能帮我们修改 所以当我们接口在Mock阶段时我们可以通过Charles设置我们本地的JSON数据,加速我们的...

Windows环境Jenkins配置免密登录Linux

Windows免密登录可以提供很多便利,如Jenkins连接Linux等,批量启动集群等 1.首先,Windows机器安装ssh组件: 官网https://www.mls-software.com/opensshd.html下载,一路安装就行 安装可参考https://blog.csdn.net/wm609972715/article/details/83...

利用Fiddler拦截接口请求并篡改数据

拦截HTTP请求 使用Fiddler进行HTTP断点调试是fiddler一强大和实用的工具之一。通过设置断点,Fiddler可以做到: ①修改HTTP请求头信息。例如修改请求头的UA,Cookie,Referer信息,通过“伪造”相应信息达到相应的目的(调试,模拟用户真实请求等)。 ②构造请求数据,突破表单的限制,随意提交数据。避免页面js和表单限制影响相...

定时任务 Crontab命令 详解

前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是 要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需...