架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 238|回复: 7
打印 上一主题 下一主题

[资料] .net/c# 开发fiddler教程[附源码]

[复制链接]
跳转到指定楼层
楼主
发表于 2018-9-29 11:15:56 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
fiddler版本:

Progress Telerik Fiddler Web Debugger
v5.0.20182.28034 for .NET 4.6.1
Built: 2018年6月27日



1:首先,我们用vs2017新建一个.net 4.0的类库项目(这里是错误的,下面会说,需要建4.6.1的项目,否则编译生成会失败),如下图:



由于我的fiddler版本比较高,对.net版本的要求会高一些,在.net 4.0版本编译生成会报错如下:

1>------ 已启动全部重新生成: 项目: fiddler-plugin-demo, 配置: Debug Any CPU ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3274: 未能解析主引用“Fiddler”,因为它是针对“.NETFramework,Version=v4.6.1”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.0”。
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3268: 未能解析主引用“Fiddler”,因为它对框架程序集“System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”有间接依赖关系,而在当前目标框架中未能解析该程序集。“.NETFramework,Version=v4.0”。若要解决此问题,请移除引用“Fiddler”,或将应用程序的目标重新指向包含“System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的框架版本。
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3275: 未能解析主引用“Fiddler”,因为它对程序集“Analytics, Version=1.0.20182.27266, Culture=neutral, PublicKeyToken=2b2cea67609c9510”具有间接依赖关系,而该程序集是针对“.NETFramework,Version=v4.5”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.0”。
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3275: 未能解析主引用“Fiddler”,因为它对程序集“Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”具有间接依赖关系,而该程序集是针对“.NETFramework,Version=v4.5”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.0”。
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3275: 未能解析主引用“Fiddler”,因为它对程序集“GA.Analytics.Monitor, Version=1.0.20182.27266, Culture=neutral, PublicKeyToken=2b2cea67609c9510”具有间接依赖关系,而该程序集是针对“.NETFramework,Version=v4.5”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.0”。
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\Properties\AssemblyInfo.cs(37,12,37,19): error CS0246: 未能找到类型或命名空间名“Fiddler”(是否缺少 using 指令或程序集引用?)
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\DemoExtention.cs(1,7,1,14): error CS0246: 未能找到类型或命名空间名“Fiddler”(是否缺少 using 指令或程序集引用?)
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\DemoExtention.cs(10,34,10,45): error CS0246: 未能找到类型或命名空间名“IAutoTamper”(是否缺少 using 指令或程序集引用?)
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\DemoExtention.cs(19,44,19,51): error CS0246: 未能找到类型或命名空间名“Session”(是否缺少 using 指令或程序集引用?)
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\DemoExtention.cs(24,45,24,52): error CS0246: 未能找到类型或命名空间名“Session”(是否缺少 using 指令或程序集引用?)
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\DemoExtention.cs(29,45,29,52): error CS0246: 未能找到类型或命名空间名“Session”(是否缺少 using 指令或程序集引用?)
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\DemoExtention.cs(34,46,34,53): error CS0246: 未能找到类型或命名空间名“Session”(是否缺少 using 指令或程序集引用?)
1>C:\Users\itsvse_pc\Documents\Visual Studio 2017\Projects\fiddler-plugin-demo\fiddler-plugin-demo\DemoExtention.cs(39,44,39,51): error CS0246: 未能找到类型或命名空间名“Session”(是否缺少 using 指令或程序集引用?)
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========



解决办法就是改成.net 4.6.1的版本即可!

2:在解决方案资源管理器中添加fiddler.exe的引用,我的fiddler安装目录为:C:\Users\itsvse_pc\AppData\Local\Programs\Fiddler,如下图:



3:设置插件所运行的fiddler最低版本

在项目的AssemblyInfo.cs(也可以在你代码的其他任何地方)文件中添加Fiddler.RequiredVersion 特性(Attribute)



4:新建一个fiddler 选项卡ui控件

需要添加 System.Windows.Forms 程序集的引用

首先在项目中添加一个用户控件取名为TestControl.cs(随意),如下图所示:



然后在用户控件上随意放置一个Button控件,并写一行简单的单击事件代码:



  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             MessageBox.Show("我被点击了!!!!");
  4.         }
复制代码
5:新建一个DemoExtention扩展类

DemoExtention类继承IAutoTamper接口,IAutoTamper 接口继承了IFiddlerExtension接口,所有实现了IAutoTamper 接口的插件将会在每一个http/https 请求或响应时被调用,所以可以用来劫持或修改http/https 请求响应数据。

注意:这个接口的方法是在后台被调用,非UI线程,如果想要更新UI,可以使用Invoke 或者 BeginInvoke 方法来更新UI。IAutoTamper 的所有方法可能会在OnLoad事件之前就执行。

代码如下:

  1. using Fiddler;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Windows.Forms;

  7. namespace fiddler_plugin_demo
  8. {
  9.     public class DemoExtention : IAutoTamper
  10.     {
  11.         private TabPage tabPage; //创建插件的选项卡页
  12.         private TestControl testControl; //MyControl自定义控件
  13.         public DemoExtention()
  14.         {
  15.             this.tabPage = new TabPage("Demo测试");//选项卡的名字为Test
  16.             this.testControl = new TestControl();
  17.         }
  18.         public void AutoTamperRequestAfter(Session oSession)
  19.         {
  20.             //throw new NotImplementedException();
  21.         }

  22.         public void AutoTamperRequestBefore(Session oSession)
  23.         {
  24.             //throw new NotImplementedException();
  25.         }

  26.         public void AutoTamperResponseAfter(Session oSession)
  27.         {
  28.             //throw new NotImplementedException();
  29.         }

  30.         public void AutoTamperResponseBefore(Session oSession)
  31.         {
  32.             //throw new NotImplementedException();
  33.         }

  34.         public void OnBeforeReturningError(Session oSession)
  35.         {
  36.             //throw new NotImplementedException();
  37.         }

  38.         public void OnBeforeUnload()
  39.         {
  40.             //throw new NotImplementedException();
  41.         }

  42.         public void OnLoad()
  43.         {
  44.             //将用户控件添加到选项卡中
  45.             this.tabPage.Controls.Add(this.testControl);
  46.             //为选项卡添加icon图标,这里使用Fiddler 自带的
  47.             this.tabPage.ImageIndex = (int)Fiddler.SessionIcons.Timeline;
  48.             //将tabTage选项卡添加到Fidder UI的Tab 页集合中
  49.             FiddlerApplication.UI.tabsViews.TabPages.Add(this.tabPage);
  50.             //throw new NotImplementedException();
  51.         }
  52.     }
  53. }
复制代码


6:Fiddler加载插件

我们编程生成以后,把Debug目录下面的fiddler-plugin-demo.dll和fiddler-plugin-demo.pdb两个文件,复制到我们fiddler安装目录的scrip{过滤}ts文件夹,

我自己的就是:C:\Users\itsvse_pc\AppData\Local\Programs\Fiddler\scrip{过滤}ts 文件夹



最后,我们重启打开fiddler,可以在选项卡上面看到我们的控件了,如下图:



7:使插件自动部署到fiddler插件目录下

我们每次修改插件,需要重新把dll复制到scrip{过滤}ts文件夹太麻烦了,我们可以通过vs的生成事件来解决这个问题,我们重新编译生成,vs会自动把我们的dll复制到scrip{过滤}ts目录下面,在后期生成事件命令行中填写如下命令:

  1. copy "$(TargetPath)" "C:\Users\itsvse_pc\AppData\Local\Programs\Fiddler\scrip{过滤}ts\$(TargetFilename)"
复制代码



如下图:



经测试,可以正常使用。

最后,附上源码:

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





上一篇:hlml教学视频
下一篇:十分发达发达郭德纲的
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
8#
发表于 2018-10-1 16:51:24 | 只看该作者
前来学习·膜拜!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
7#
发表于 2018-9-30 23:56:38 | 只看该作者
不错,不错。。。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复

使用道具 举报

6#
 楼主| 发表于 2018-9-30 21:22:48 | 只看该作者
开启fiddler debug功能

1. 在fiddler命令行工具中开启debug功能


2. 显示错误和异常信息

prefs set fiddler.debug.extensions.showerrors True

3. 显示log信息

prefs set fiddler.debug.extensions.verbose True

开启log显示后,开发者输出的log信息显示在fiddler右侧的log tab的界面中。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
5#
发表于 2018-9-30 10:09:25 | 只看该作者
谢谢分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复

使用道具 举报

地板
发表于 2018-9-30 00:48:21 | 只看该作者
谢谢分享哦
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
板凳
发表于 2018-9-29 17:10:56 | 只看该作者
这个不错,来学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
沙发
发表于 2018-9-29 15:57:45 | 只看该作者
这个很精华·不错!前来学习·膜拜!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

关闭

站点通知上一条 /1 下一条

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

Mail To:help@itsvse.com

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

GMT+8, 2018-10-17 07:34

Powered by Discuz! X3.4

© 2001-2014 Comsenz Inc.

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