C#代理FiddlerCore4
可以使用 FiddlerCore4
版本 4.6.2.0(在nuget网站下载
可以拦截http/https请求(https 需要安装证书
可以多级代理(在 FiddlerApplication_BeforeRequest 中设置 oSession["X-OverrideGateway"] = “IP:Port”
可以本地代理(全局代理
可以服务器代理 (非全局代理,监听指定的端口
使用示例:
//启动Fiddler(代理端口,是否注册为系统代理,解密ssl,是否允许远程请求【作为服务器代理时传true】)
FiddlerApplication.Startup(1234, true, true, true);
ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest;
private static void FiddlerApplication_BeforeRequest(Session oSession)
{
//处理拦截请求,之后继续向目标url 发送,然后传回响应内容
}
坑:
1.需要自己手动管理 session 手动 abort ,如果连接过多,后面请求进不来
2.需要自己手动释放内存,否则会内存泄露 (调用windows api SetProcessWorkingSetSize() 来释放内存
3.https证书这里有一些坑,每次启动程序都会创建新的证书的问题,解决方法:就是删除掉 CertMaker.dll, BCMakeCert.dll 这两个引用,项目中引用关系删除,然后bin文件夹中删除对应文件(https://blog.csdn.net/ReturningProdigal/article/details/108791520
4.如果本地使用服务器上的代理,需要在服务器代理程序安装证书后,把证书导出复制到本地进行安装
5.作为服务器代理时,FiddlerApplication.Startup 第四个参数要传true , 否则收不到请求