最经开发的一个项目,由于服务器部署环境十分复杂,要想在搭建一个本地环境十分困难,很自然的,用上了fiddler的AutoResponse作文件映射,一切都那么美好。由于页面中引入的js文件有几十个,在作文件映射时浪费了很多时间(即使直接修改mydocument/fiddler2/AutoResponder.xml也需要大量的时间),这十分不痛快,这些js在本地的目录结构和服务器上的目录结构完全一样,难道fiddler不能将URL某个目录直接映射到硬盘上的某个目录吗?在网上找了很多资料,没有找到现成的解决方法,看来只有自己用script写一个规则了。
按ctrl+R 或者在菜单上 Rules -->customize rules打开fiddler ScriptEditor.封装了两个方法,分别是整个目录替换和单个文件替换的。(单文件替换用fiddler自带的AutoResponse功能更强大,这里我为了不打开fiddler的AutoResponse功能就自己写了一个方法来满足我简单的需求)
在文件最后添加以下代码:
PLAIN TEXT
JAVASCRIPT:
/************************* custom rules *************************/
/**
* 按目录替换
*
* @param oSession {Session} Fiddler Session Object
* @param domain {String} 需要替换的为本地文件的URL前缀(以斜杠结束)
* @param folder {String} 本地文件目录的物理路径(两个反斜杠表示一个反斜杠,以反斜杠结束)
*/
static function AutoResponseFolder ( oSession: Session, domain:String, folder:String ) {
// 获取当前对话的完整URL
var fullUrl:String = oSession. fullUrl
if ( fullUrl. StartsWith ( domain ) ) {
var localPath:String = fullUrl. replace (domain, folder )
//set back color
oSession [ 'ui-backcolor' ] = 'seashell'
//set delay
//oSession['response-trickle-delay'] = 2000
//replace server file
oSession [ 'x-replywithfile' ] = localPath
//write log
//FiddlerObject.log(localPath)
}
}
/**
* 单文件替换
*
* @param oSession {Session} Fiddler Session Object
* @param found {String} 需要替换的URL包含的关键字
* @param replacement {String} 本地文件目录的物理路径(两个反斜杠表示一个反斜杠)
*/
static function AutoResponse ( oSession: Session, found:String, replacement:String ) {
if ( oSession. uriContains ( found ) ) {
//set back color
oSession [ 'ui-backcolor' ] = 'lightgreen'
//set color
oSession [ 'ui-color' ] = 'black'
//replace server file
oSession [ 'x-replywithfile' ] = replacement
//write log
//FiddlerObject.log(localPath)
}
}
/**
* 添加一个我自己的规则,
* 映射了两个文件test04.html和core.js
* 映射了一个目录news/
*/
static function AddRules ( oSession: Session ) {
// 路径和替换规则根据各项目实际情况替换
var webroot:String = 'c: \\ test \\ '
AutoResponse ( oSession, 'search_noitem/?create=1', webroot + 'aaa \\ test04.html' )
AutoResponse ( oSession, 'editor/core.js' , webroot + 'bbb \\ core.js' )
// 需要替换的为本地文件的URL前缀(以斜杠结束)
var domain:String = 'http://local.test.com/'
// 本地文件目录的物理路径(两个反斜杠表示一个反斜杠,以反斜杠结束)
var folder:String = webroot + 'news \\ '
AutoResponseFolder ( oSession, domain, folder )
}
在OnBeforeRequest函数中调用AddRules,让fiddler在发起请求之前使用刚才添加的规则。
ctrl+S保存,无需重启fiddler,直接刷新页面就能看到规则已经生效了,为了醒目,我将目录映射的请求的背景色设置成红色,将单文件映射请求的背景设置成了绿色(fiddler AutoResponse代理的请求默认背景是灰色)。
抓包开关:
默认处于抓包状态,左下角点击capturing,可以禁止抓包。再次点击实现抓包的状态切换。
数据查看:
数据包列表:展示请求的结果码,协议,主机,url等简要信息。
数据包详情:
编辑请求:
1. 从请求列表中拖过来一个请求到composer页签中,如序号为35的请求:
2. 对请求的header或body等进行编辑,
3. 点击execute,发送编辑后请求
4. 可在请求列表中查看发送的新请求
断点调试:
▲ Rules-automatic breakpoints:
Before requests:agent拦截下请求数据,可以查看、编辑请求数据
After response:agent拦截响应数据,可以查看、编辑响应数据
Disable:不进行调试
获取响应后中断,运行直到结束
自动响应:
即Mock server,模拟server返回一个响应数据
1. 勾选enable rules开关,并设置不匹配内容直接通过
2. 设置规则,可以选择精确匹配或正则匹配
3. 设置响应内容,并保存
4. 清除缓存,发送请求,查看结果
抓https包设置:
1. 安装证书生成器:fiddlercertmaker.exe,直接安装即可,重启fiddler
2. Fiddler设置:
▲ tools-options-https:
第一次 *** 作时,有提示信息,点击确认即可
3. Fiddler导出证书:
信任证书:Tools-Options-HTTPS-Actions-Trust root certificate
导出证书:Tools-Options-HTTPS-Actions-Export certificate to desktop
4. 浏览器中导入证书,不同浏览器 *** 作不尽相同
5. 重启fiddler
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)