Fiddler中script小试牛刀

本文介绍了如何利用Fiddler的Script功能解决HOSTS配置无法匹配特定URL路径的问题,通过在OnBeforeRequest方法中进行条件判断并修改请求地址,实现对非根目录下项目的正确访问。

在上篇文章从,我使用Fiddler的一个简单功能,HOSTS来做转发,调试移动app,可是有的人会问了,HOSTS只能改变HOST,如果有以下情景,我该咋办?

比如,测试服务器地址是:192.168.0.69:8080      部署的项目名称叫做 demo  ,即访问的完整地址:http://192.168.0.69:8080/demo/

而在正式服务器上可能项目直接部署到了根目录: http://aip.demo.com   

这时候如果只是简单的使用HOSTS,起不到效果,因为本地部署的项目不在根目录下 ,提示找不到资源。怎么办呢?总不能为了测试把项目部署到根目录吧,这样可能会影响其他项目呢?


好吧,其实这时候使用HOSTS真的无能为力了,应该使用fiddler的另外一个更加强大的功能:script

在fiddler界面,点击右侧的FiddlerScript标签,进入FiddlerScript编辑器(如果没安装,Fiddler会提示安装)

在标签下有个 Go to 选择框,这里可以快速定位到script里相应的方法。这里我们要改变请求的地址,所以定位到的方法肯定是 OnBeforeRequest方法:

在OnBeforeRequest方法里面加入如下:

        if(oSession.uriContains("www.baidu.com")){
            oSession.url = oSession.url.Replace("www.baidu.com","news.sina.com.cn/society/");                   
        }

这里呢,我们将百度替换成了新浪新闻的社会版页面,效果如下:


如图所示,我们访问的是百度,但是fiddler却跳到了新浪新闻的社会版页面,这正好解决了上一篇中HOSTS的不足。

FiddlerScript的功能十分的强大,这里我只是小试牛刀,算是抛砖引玉,大家有兴趣的,可以仔细研究一下啦

FiddlerScript 中使用 `BeginInvoke` 实现异步调用,需要理解其底层基于 JScript.NET 的语言特性。与 C# 不同,JScript.NET 不支持直接构造委托实例(如 `new Action(...)`),但可以通过函数引用的方式调用 `BeginInvoke` 来实现异步执行。 ### 使用函数引用调用 `BeginInvoke` FiddlerScript 支持将函数作为对象进行异步调用。可以定义一个函数用于执行耗时操作,然后通过 `BeginInvoke` 异步触发该函数的执行: ```javascript function WriteToFileAsync(url) { var writer = function() { try { File.AppendAllText("C:\\fiddler_async_log.txt", url + "\n"); } catch (e) { Console.WriteLine("Write failed: " + e.message); } }; writer.BeginInvoke(null, null); // 异步调用 } ``` 在请求拦截逻辑中,例如 `OnBeforeRequest` 函数中调用 `WriteToFileAsync` 方法即可完成非阻塞的日志记录操作: ```javascript function OnBeforeRequest(oSession: Session) { if (oSession.uriContains("example.com")) { WriteToFileAsync(oSession.fullUrl); } } ``` 这种方式利用了 JScript.NET 对函数类型的异步调用能力,避免了显式构造委托对象的问题[^1]。 ### 注意事项 - 调用 `BeginInvoke` 时,必须传入两个参数:第一个是 `IAsyncResult` 的回调函数(可为 `null`),第二个是状态对象(也可为 `null`)。 - 在异步执行体中应加入异常捕获逻辑,防止未处理异常导致脚本崩溃。 - 多线程写入文件时需考虑同步问题,建议采用原子操作或加锁机制确保线程安全。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值