架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 206798|回复: 55

[控制台程序] .NET/C# 使用 FiddlerCore4 拦截和修改 HTTP 请求

  [复制链接]
发表于 2020-12-20 13:39:53 | 显示全部楼层 |阅读模式
最新的FiddlerCoreAPIFreeSetup,抓包新dll文件,安装后使用,Fiddler提供的http自定义拦截处理库,FiddlerCore目前作为.NET类库提供,可供任何.NET应用程序使用。FiddlerCore设计用于在没有用户界面(例如测试自动化)的情况下运行的专用应用程序,或者专门用于Fiddler Addon不适合的UI(例如WPF流量可视化)的UI。

FiddlerCore现在已经转为收费了,但在收费之前出过几个针对.net standard的新版本的测试版,这些版本是可以正常使用的,也没有30天的限制。完整的SDK和Demo都有。下载地址如下:

FiddlerCoreAPIFree_4_6_20191_7809.zip下载
超链接登录可见。

新建一个 .NET 4.6.2 的控制台项目:HttpCapture,引用 FiddlerCore45.dll 类库,可以通过如上下载获得。

Fiddler 事件如下:

//
        // 摘要:
        //     This event fires when a session has been completed
        public static event SessionStateHandler AfterSessionComplete;
        //
        // 摘要:
        //     This event fires when Fiddler captures a WebSocket message
        public static event EventHandler<WebSocketMessageEventArgs> OnWebSocketMessage;
        [CodeDescription("This event fires a HTTPS certificate is validated.")]
        public static event EventHandler<ValidateServerCertificateEventArgs> OnValidateServerCertificate;
        //
        // 摘要:
        //     This event fires when Response Headers are available
        public static event SessionStateHandler ResponseHeadersAvailable;
        //
        // 摘要:
        //     This event fires when Request Headers are available
        public static event SessionStateHandler RequestHeadersAvailable;
        //
        // 摘要:
        //     This event fires when a server response is received by Fiddler
        public static event SessionStateHandler BeforeResponse;
        //
        // 摘要:
        //     This event fires when a client request is received by Fiddler
        public static event SessionStateHandler BeforeRequest;
        //
        // 摘要:
        //     This event fires each time FiddlerCore reads data from network for the client's
        //     request. Note that this data is not formatted in any way, and must be parsed
        //     by the recipient.
        public static event EventHandler<RawReadEventArgs> OnReadRequestBuffer;
        //
        // 摘要:
        //     This event fires each time FiddlerCore reads data from network for the server's
        //     response. Note that this data is not formatted in any way, and must be parsed
        //     by the recipient.
        public static event EventHandler<RawReadEventArgs> OnReadResponseBuffer;
        [CodeDescription("This event fires when the user instructs Fiddler to clear the cache or cookies.")]
        public static event EventHandler<CacheClearEventArgs> OnClearCache;
        //
        // 摘要:
        //     Sync this event to be notified when FiddlerCore has attached as the system proxy.")]
        [CodeDescription("Sync this event to be notified when FiddlerCore has attached as the system proxy.")]
        [Obsolete("Please, use the Telerik.NetworkConnections.NetworkConnectionsManager.")]
        public static event SimpleEventHandler FiddlerAttach;
        //
        // 摘要:
        //     Sync this event to be notified when FiddlerCore has detached as the system proxy.
        [CodeDescription("Sync this event to be notified when FiddlerCore has detached as the system proxy.")]
        [Obsolete("Please, use the Telerik.NetworkConnections.NetworkConnectionsManager.")]
        public static event SimpleEventHandler FiddlerDetach;
        [CodeDescription("This event fires when a user notification would be shown. See CONFIG.QuietMode property.")]
        public static event EventHandler<NotificationEventArgs> OnNotification;
        //
        // 摘要:
        //     This event fires when an error response is generated by Fiddler
        public static event SessionStateHandler BeforeReturningError;
        //
        // 摘要:
        //     Fired each time Fiddler successfully accepts a TCP/IP connection
        public static event EventHandler<ConnectionEventArgs> AfterSocketAccept;
        //
        // 摘要:
        //     Fired each time Fiddler successfully establishes a TCP/IP connection
        public static event EventHandler<ConnectionEventArgs> AfterSocketConnect;

常用的就 BeforeRequest(请求之前)、BeforeResponse(响应之前)、AfterSessionComplete(请求会话完成) 事件。

如果想拦截 HTTPS 请求,需要安装证书,代码如下:

附上判断证书是否存在的代码:

我们实现的效果如下:

1.拦截 www.itsvse.com 站点请求,直接返回一段 json 内容。
2.拦截 down.itsvse.com 站点,在响应之后,替换字符串“上传者”为“Uploaded by(替换之后名称)”

代码如下:

然后手动设置 ie 代理 127.0.0.1:9099,也可以使用代码设置,如下:

使用 .NET/C# 设置系统 IE 代理
https://www.itsvse.com/thread-9495-1-1.html

效果图如下:

http.gif

注意:在修改响应之后的内容的时候,需要在 BeforeRequest 事件设置会话 session.bBufferResponse = true; ,否则无法修改响应内容!

源码下载:

游客,如果您要查看本帖隐藏内容请回复


(完)





上一篇:ASP.NET MVC 在线反编译当前网站源码
下一篇:因 URL 意外地以“/itsvse”结束,请求格式无法识别。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-6-30 20:07:39 | 显示全部楼层
关于证书

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-3-6 10:33:30 | 显示全部楼层
很不错                       
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-6-28 17:11:09 | 显示全部楼层
解决fiddler无法抓取本地localhost、127.0.0.1网络请求问题
https://www.itsvse.com/thread-9137-1-1.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2020-12-23 20:51:15 | 显示全部楼层
在修改响应之后的内容的时候
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-2-25 19:39:28 | 显示全部楼层

在修改响应之后的内容的时候
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-3-1 13:03:56 | 显示全部楼层
FiddlerCoreStartupSettingsBuilder的命名空间
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-3-13 15:15:48 | 显示全部楼层
学习源码
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-3-31 17:15:20 | 显示全部楼层
研究一下看看看
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-4-7 18:09:31 | 显示全部楼层
找了一整天,终于找到符合我需求的了
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-5-5 16:28:11 | 显示全部楼层
动设置 ie 代理 127.0.0.1:9099,也可以
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-6-4 11:27:23 | 显示全部楼层
333333333333333333
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-6-21 00:33:29 | 显示全部楼层
session.bBufferResponse = true;是必须要设置的嘛?
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-7-6 08:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表