Fiddler(一)

Posted on 2018-10-13 15:34  eilinge  阅读(176)  评论(0编辑  收藏  举报

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压缩包,保存到“我的文档\Fiddler2\Captures”目录下    
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 Files\Fiddler"--进入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证书