使用 FiddlerCore 自定义 HTTP/HTTPS 网络代理

Fiddler 是个很好用的网络请求查看与调试工具,还可以写插件来扩展其功能。

Fiddler 插件开发,使用 WPF 作为 UI 控件 - J.晒太阳的猫 - 博客园

但部分场景下,需要自定义很多网络监控操作,集成到自己的程序中。这时就需要 FiddlerCore 了。

关于 Fiddler的使用,Fiddler插件开发,FiddlerCore 详细的说明,都可以看 《Fiddler权威调试指南》一书,网上可以找到电子版。

FiddlerCore 安装

FiddlerCore 的最新版本是收费版,但 nuget.org 上可以下载到之前版本(最后更新时间:2016-01-01),基础的功能是够用的,不能直接拉取的话,则需要配置本地 Nuget 源,然后把这个 Nuget 包放进去。
并在项目 csproj 文件中,添加:

    <ItemGroup>
        <PackageReference Include="FiddlerCore" Version="4.6.2.0"/>
    </ItemGroup>

FiddlerCore 官网:FiddlerCore - Fiddler Proxy Engine for .NET and .NET Standard - Telerik
FiddlerCore Nuget: NuGet Gallery | FiddlerCore 4.6.2
FiddlerCore Nuget 包(4.6.2) 下载地址:https://pan.baidu.com/s/1ueTCsJ5Jv7wovCeWVN4gDw

FiddlerCore 使用

FiddlerCore 的使用非常简单,主要的就是 1 启动代理,2 监听事件,3 安装证书,4 关闭代理

  • 1 启动代理
FiddlerApplication.Startup(9898, FiddlerCoreStartupFlags.Default | FiddlerCoreStartupFlags.RegisterAsSystemProxy);

这里 FiddlerCoreStartupFlags.RegisterAsSystemProxy 是将你的这个程序(或者说 127.0.0.1:9898)注册为系统代理,所有走系统代理的,都会通过此程序。
如果不设置 FiddlerCoreStartupFlags.RegisterAsSystemProxy ,则被监控的程序,需要手动指定代理到 9898 这个端口。

  • 2 监听事件
FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest;
FiddlerApplication.BeforeResponse += FiddlerApplication_BeforeResponse;

private static void FiddlerApplication_BeforeResponse(Session oSession)
{
}

private static void FiddlerApplication_BeforeRequest(Session oSession)
{
}

通过这两个事件,就可以拿到 FiddlerCore 所截获的请求。然后进行操作或者记录。

  • 3 安装证书

如果需要监听 HTTPS 请求,需要安装证书,安装证书时,会有一个弹窗,让用户同意。

// 安装证书
public static bool InstallCertificate()
{
    if (!CertMaker.rootCertExists())
    {
        if (!CertMaker.createRootCert())
            return false;

        if (!CertMaker.trustRootCert())
            return false;
    }

    return true;
}
// 卸载证书
public static bool UninstallCertificate()
{
    if (CertMaker.rootCertExists())
    {
        if (!CertMaker.removeFiddlerGeneratedCerts(true))
            return false;
    }
    return true;
}

  • 4 关闭代理

这点很重要,因为如果程序结束之后代理不关闭,则无法正常上网。(因为设置了代理,但代理程序关闭了。)

if (FiddlerApplication.IsStarted())
{
    FiddlerApplication.Shutdown();
}

在真正使用的时候,以上这些操作,建议做一层抽象和封装,不然业务和网络监控的代码会耦合的太紧。

更多关于网络测试与监控的实现,可以参考这个项目:
RickStrahl/WestWindWebSurge: Quick and easy URL and Load Testing for your Web applications on Windows

参考资料

原文链接:https://www.cnblogs.com/jasongrass/p/12044321.html

原文地址:https://www.cnblogs.com/jasongrass/p/12044321.html

时间: 2024-10-20 10:47:14

使用 FiddlerCore 自定义 HTTP/HTTPS 网络代理的相关文章

Docker网络代理设置

背景 在一些实验室环境,服务器没有直接连接外网的权限,需要通过网络代理.我们通常会将网络代理直接配置在/etc/environment./etc/profile之类的配置文件中,这对于大部分操作都是可行的.然而,docker命令却使用不了这些代理.比如docker pull时需要从外网下载镜像,就会出现如下错误: $ docker pull hello-world Unable to find image 'hello-world:latest' locally Pulling reposito

Proxy SwitchySharp chrome网络代理【转】

Proxy SwitchySharp chrome网络代理插件概述 SwitchySharp 是 Google Chrome 浏览器上的一个代理管理扩展程序,是一款可以自己设置谷歌浏览器使用方式的chrome谷歌浏览器插件,插件是针对谷歌浏览器而开发的一款代理设置插件,基于"Proxy Switchy!"和 "SwitchyPlus"开发,能够帮助用户轻松快捷的管理和切换多个代理设置,用户可以自定义切换规则,自由畅游互联网的海洋.另外proxy switchysha

自定义PAC文件实现代理自动配置

首先了解什么是PAC文件,点击了解详情. 在了解了PAC文件之后,那么后面的事情就比较简单了. 按照规范编写出适合自己的PAC文件,让网络更为自由(作为开发人员已被逼上不归路了)! 需要的朋友点击下载(下载完后打开文件修改对应的端口值) 代理工具集点击下载 下面以GoAgentX为例说明使用方法: 选择完后,记得点击下面的"Restart PAC Server"按钮进行立即生效: 选择适当的模式: 一般下图的网络配置是自动配置的: 自定义PAC文件实现代理自动配置,布布扣,bubuko

ubuntu linux eclipse 网络代理 无法联网问题

在代理上网的模式下面,给eclipse设置了代理,native manual 几种模式都不行,不设置代理也不行. 1.问题: 在设置了代理模式下面,maven或者 marketplace都连接不上外网.查看报错信息(在eclipse的控制台 Error Log栏)为: ------ System property socksProxyHost is not set but should be 172.15.18.80. ------ 根据这个提示,问题在于,设置网络代理的时候,只设置 HTTP协

3proxy安装及配置网络代理的流程

3proxy安装及配置网络代理的流程 3proxy的官网在:https://3proxy.ru/ ,3proxy可以用来设置各种协议的代理,比如说http,socks等,关于3proxy的详细介绍可以通过搜索来了解,这里就不说了. 安装 3proxy的代码代管在github上面,地址是:https://github.com/z3APA3A/3proxy 安装步骤如下: git clone https://github.com/z3APA3A/3proxy.git,直接通过git把代码复制到本地(

apache https反向代理设置方案

通过设置一台apache服务器完成对  https://10.6.177.66内容的访问,后来经过学习才了解,我们其实就是需要在自己的apache服务器中,创建一个https://10.6.177.66的反向代理.首先介绍一下何为反向代理: 一.反向代理的概念 反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载. Web服务器加速(反向代理)是针对Web服务器提供

Qt之QNetworkProxy(网络代理)

简述 QNetworkProxy类提供了一个网络层代理. QNetworkProxy提供了配置网络层代理支持Qt网络类的方法.目前支持的类有QAbstractSocket.QTcpSocket.QUdpSocket.QTcpServer和QNetworkAccessManager. 简述 介绍 网络请求 设置代理 效果 源码 介绍 代理被设计的尽可能透明.也就是说,你现有的网络应用程序使用下面的代码就会自动支持网络代理. QNetworkProxy proxy; proxy.setType(QN

手头没证书,如何给https做代理?NGINX TCP转发

线上的一个海外充值接口(https)经常因我朝网络问题中断,想借助hk的机器做个https反向代理又没证书. 一开始 一开始想到的办法是借助NGINX的tcp转发进行代理: 编译NGINX时加入 --with-stream选项, upstream backend { server xxxxxx.com:443 ; } server { listen 443; proxy_pass backend; proxy_connect_timeout 15s; proxy_timeout 15s; pro

centos 桥接配置 设置网络代理 lnmp搭建

一.桥接配置 centos设置  编辑->虚拟网络编辑器->桥接模式->还原默认设置 虚拟机->设置->网络适配器->桥接 cd /etc/sysconfig/network-scripts/ 备份一下: cp ifcfg-ens33 ifcfg-ens33.bak 修改: vi ifcfg-ens33 红色修改.蓝色添加 service network restart 重启网卡 二. 设置网络代理 vi /etc/profile 最后加入 export http_pr