fiddler使用指南

fiddler 设置

如果要手机抓包的话,需要设置fiddler, 允许远程设备连接 tools/fiddler options/connection/allow remote computers to connect

监控http通讯

开启/停止监控

  • F12
  • file/Capture traffic
  • quickExec box start/stop

选择会话

  • ctrl + click 多选
  • shift + click 选择连续的会话
  • ctrl + up/down 向上/向下选择
  • ctrl + i 反选会话 //焦点先定位到 session list
  • P 选择当前会话的父会话 //对前端而言,比如选择一个js, 按P,就会定位到html文件
  • C 选择子会话 //选择html文件,按C, 定位所有由该html发起的请求, 其实很有用

查找会话

  • ctrl + f
  • quickExec box ? keyword , select image, @targetHostnmae, =304

会话对比

选择两个会话,点击右键-compare(需安装对比工具winMerge), 这很有用(两个请求,1个成功返回, 1个报错或被重定向了,这时可以对比两个session)

删除会话

  • delete 删除选中会话
  • shift + delete 删除未选中会话

    这个其实蛮实用,比如我选中了 所有的图片session(select image) 然后想删掉其余的session, 减少干扰, shift + delete就很方便了(当然也可以先反选再delete)。
  • ctrl + x 删除所有会话
  • quickExec box cls/clear 删除所有会话

会话列表添加列

  • quickExec cols add accept @request.Accept
  • 在列标题点击右键, 选择 custom column

构造http请求

  • compose面板中,完全手动创建
  • 拖一个session到compose面板中,修改并发送改请求
  • 按住shift, 点击 execute按钮 , 会在请求发出前断点,允许再次修改

autoResponder自动响应

从左侧拖一个session到autoresponder中,默认会自动创建规则 精确匹配(EXACT:the-url),响应为该session的response(*200-SESSION-6) 如果什么都不改,就是replay的效果;可以在rule list中选择该rule, 按enter编辑响应内容, 非常实用的说

自动响应的规则定义

  • 普通字符串 hello.com // 匹配url包含 hello.com 的
  • 通配符 * // 匹配所有url
  • NOT: hello // 匹配url不包含hello的
  • EXACT: http://localhost/test.php?foo=BAR //精确匹配 包括大小写
  • 正则 regex:(?inxs)http://localhost/\w+\.php

    如: regex:.+, regex:.+jpg, regex:.+(gif|png|jpg)$

    正则支持修饰符 inxs

    • i ignore case 忽略大小写
    • n requires explicit capture groups 要求明确的捕获组
    • s enables single-line syntax 单行
    • x enables comments after the #character 支持#后加注释

自动响应的内容

  • 本地文件
  • http://targetUrl 重定向到目标url(原来的请求参数并无带过去)
  • *redir:http://targetUrl
  • *bpu 请求前断点
  • *bpafter 响应前断点
  • *delay: Xms 延迟发出请求
  • *header: hi=hello 修改/新增请求头
  • *CORSPreflightAllow 返回允许跨域的header
  • *reset Reset the client connection
  • *drop close the client connection
  • *exit 该规则什么都不做,让后续规则处理

实例: 将正则规则捕获到的参数,应用到目标url

rule: regex:youdao\.com(.\*)
action: http://localhost/test.php$1

quickExec

聚焦到quickExec box上: ctrl + alt + f 显示fiddler, alt + q 光标定位到quickExec, 此时如果session list中有选中,ctrl + i 可将选中会话的url粘贴到命令行中.

  • ? hello 搜索url包含 hello 的会话
  • > 2000 查询 content-length > 2kb的会话, 同 >2k
  • < 2000
  • =301 查询 statusCode=301的会话
  • =get 查询 method=get的会话
  • @localhost 查询hostname=localhost的会话
  • bold hello 若后续的session的url包含hello,则加粗显示 很实用
  • bold 不带参数 则清除之前的设定
  • bpafter api/get/user 在匹配的session响应前断点
  • bpafter 清除之前bpafter的断点
  • bps 302 若session的statusCode=302 则断点 bps 清除断点
  • bpu hello 若请求的url包含hello,则断点; bpu 清除断点
  • bpm post 若method为post, 则请求前断点; 同 bpv post bpm 清除断点
  • cls or clear 清除session列表
  • g or go 继续执行断点
  • help 打开帮助网页
  • urlreplace findstr replacestr 在url中找到匹配字符串,则替换;似乎不支持正则
  • start 开始监听http请求
  • stop 停止监听http请求
  • select image 查询content-type,匹配关键字则选中响应session, select html select javascript
  • select ui-comments hello
  • select @Request.Accept html
  • select @Response.set-cookie domain
  • allbut htmlkeeponly html 只保留content-type匹配html的会话 实用
  • quit 退出fiddler
  • !dns www.hello.com 发起dns解析请求

fiddlerScript

添加请求头部

function OnBeforeRequest(oSession) {
oSession.oRequest['x-hi'] = 'hello';
}

将请求重定向到其他主机

function OnBeforeRequest(oSession) {
if(oSession.HostnameIs('test.com')) {
// test.com:90/foo/bar -> localhost:90/foo/bar
oSession.hostname = 'localhost';
} if(oSession.host == 'foo.com:90') {
oSession.host = 'bar.com:9012';
}
}

将一个url重定向到另外的url

function OnBeforeRequest(oSession) {
if(oSession.url == 'example.com/test.js') {
oSession.url = 'localhost.com/mock-test.js';
}
}

取消发送cookie

function OnBeforeRequest(oSession) {
oSession.oRequest.headers.Remove('Cookie');
}

替换html文件的内容

function OnBeforeResponse(oSession) {
if(oSession.HostnameIs('www.test.com') && oSession.oResponse.headers.ExistsAndContains('Content-type', 'text/html')) {
oSession.utilDecodeResponse();
oSession.utilReplaceInResponse('<b>', '<u>');
} if(oSession.utilFindInResponse('hello-world', false) > -1) {
oSession['ui-color'] = 'red';
} if(oSession.oResponse.headers.ExistsAndContains('Content-Type', 'text/html')) {
oSession.utilDecodeResponse();
var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyByte);
oBody.replace(/<div>.*?</div>/, '');
oSession.setResponseBody(oBody);
}
}

网速模拟

function OnBeforeRequest(oSession) {
oSession['request-trickle-delay'] = 300; // delay 300ms to request
oSession['response-trickle-delay'] = 500; // delay 500ms to response
}

手机安装fiddler证书

浏览器访问 http://ipv4.fiddler:8888/, 然后下载证书

fiddler使用指南的更多相关文章

  1. fiddler抓手机报文的配置指南

    前言 1.fiddler大名鼎鼎的抓包工具,而且支持重发,自动解码报文之类. 2.做爬虫时经常遇到需要抓移动端(手机/pad等)报文的情况. 网上各种资料比较,下面这篇是最准确的,转载自csdn:ht ...

  2. 【转】Fiddler抓包指南:结合Proxifier工具

    本文转自:https://blog.csdn.net/china_jeffery/article/details/93000824 本文介绍如何使用Fiddler抓取HTTP和HTTPS协议的包,同时 ...

  3. Fiddler抓包工具使用指南|手机安装Fiddler的安全证书

    Fiddler 4 1.设置: Tools ->  Telerik Fiddler Options 勾选远程 手机安装证书 ->使用Android手机的浏览器打开:http://10.2. ...

  4. Fiddler手机抓包配置指南

    前言: 对于开发.测试而言,抓包工具绝对是我们日常测试找bug的必备神器.今天主要介绍的是如何配置Fiddler抓取移动端app请求.首先Fiddler是一个http协议调试代理工具,它能够记录并检查 ...

  5. 企业IT管理员IE11升级指南【16】—— 使用Compat Inspector快速定位IE兼容性问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  6. Chrome开发者工具不完全指南(六、插件篇)

    本篇是Chrome开发者工具的结尾篇,最后为大家介绍几款功能强大的插件.在chrome商店里面有很多插件,没事建议大家去逛逛.不过需要FQ,所以诸位请自备神器.一.皮肤插件 首先是大家期盼已久,翘首以 ...

  7. 写给 Android 开发的小程序布局指南,Flex 布局!

    一.序 Hi,大家好,我是承香墨影! 最近在做小程序,验证一些方向,开发效率确实很快,就是各种微信的审核有点费劲,但是总归是有办法解决的. 想要开发一款小程序,其实和我们正常写一款 App 类似,你需 ...

  8. Jmeter:性能测试指南(转)

    http://yukinami.github.io/2015/11/26/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E6%8C%87%E5%8D%97/ 性能测试指南 ...

  9. 网络抓包神器-Charles使用指南

    http://blog.csdn.net/liulanghk/article/details/46342205 目录 概述 安装 显示模式 PC端抓包 移动应用抓包 其他技能 charles使用问题汇 ...

随机推荐

  1. redis(五)

    发布订阅 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的 ...

  2. python系统编程(十)

    多线程-非共享数据 对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生 1. 非全局变量是否要加锁呢? #coding=utf-8 import threading import ti ...

  3. C++学习笔记54:关联容器,函数对象

    关联容器的特点 1.每个关联容器都有一个键(key) 2.可以根据键高效查找元素 集合set 集合用来存储一组无重复的元素,由于集合的元素本身是有序的,可以高效地查找元素,也可以方便地指定大小范围的元 ...

  4. Python 调用图像融合API

    Python 调用图像融合API 本文记录使用Python,调用腾讯AI开放平台的图像融合API.官网给出的Demo用的是PHP,博主作为Python的粉丝,自然想用它来和『最好的』的语言一较高下,顺 ...

  5. Mac下hadoop运行word count的坑

    Mac下hadoop运行word count的坑 Word count体现了Map Reduce的经典思想,是分布式计算中中的hello world.然而博主很幸运地遇到了Mac下特有的问题Mkdir ...

  6. 关于不执行整个大项目而是执行其中一部分独立文件夹的时候的python运行方法

    这是项目的整个目录,如果是点击右键运行ic_kw_ks_func.py的话是会报ic_kw_ks_func.py里面import的那些其他路径下的类和函数找不到.而我们发现有个-m的python命令能 ...

  7. Listener(1)—基础知识

    一.监听器 1.概念: 专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听的对象状态发生情况时,立即采取相应的 行动.Servlet规范为每种事件监听器都定义了相应的接口,w ...

  8. 28、初识socket(subprocess模块)

    经过近一个半月的学习我们已经度过了python基础的阶段,今天我们开始学习python网络编程,没有难以理解的逻辑,更注重的是记忆. 本篇导航: 客户端/服务器架构 scoket与网络协议 套接字 基 ...

  9. R12.2.4 ORA-01017: invalid username/password; logon denied

    sqlplus / as sysdba ORA-01017: invalid username/password; logon denied [oracle@ebs 11.2.0]$ source / ...

  10. Unity3D性能优化最佳实践(四)资源审查

    Asset auditing - 资源审查 许多项目发生效能问题的真正原因只是由于人员操作不当或是试东试西,而不小心改到导入设定影响到导入的资源.(例如最近的gitlab惨案) 对于较大规模的项目,最 ...