fiddler抓接口显示接口名action怎么操作

下次自動登錄
現在的位置:
& 綜合 & 正文
用.NET代碼擴展Fiddler 【譯文】
如何在.net的代碼中擴展Fiddler
Fiddler2 是一個多方面的通過腳本和.net代碼擴展的。通過擴展的機制,你能夠加到Fiddler的UI上去,不假思索的修改請求和回應,並且自定義觀察使得場景特效表現,手動的修改請求和回應。
預先的準備
給Fiddler2擴展需要vs2005或者2.0以上的Framework命令行編譯。而且必須安裝最新的Fiddler2才可以。如果你從前已經開發過了,你可能需要閱讀下.
設置你的擴展assemblies路徑
Fiddler 的擴展在這個%Program Files%\Fiddler2\Scripts and %USERPROFILE%\My Documents\Fiddler2\Scripts 文件夾讀取DLL.
安裝到%Program Files%位置才能是這個機器的所用用戶使用擴展,%file% 文件加的話就只能是當前的用戶使用了。
設置 Fiddler.RequiredVersion 屬性 在你的AssemblyInfo.cs 文件中 (或者代碼的其它地方), 如下:
// This Assembly requires Fiddler v2.1.0.1 or later because it uses types introduced in v2.1.[assembly: Fiddler.RequiredVersion("2.1.0.1")]
如果Fiddler 發現 RequiredVersion 屬性 that 暗示了需要新的版本, 用戶就必須使用比這個更新的一個Fiddler版本了。Assemblies 沒有包涵一個 RequiredVersion 屬性的話就默認的忽略了.
IFiddlerExtension 接口
Public classes in your assembly that implement the IFiddlerExtension interface will be loaded by Fiddler during startup.
public interface IFiddlerExtension{
// Called when Fiddler User Interface is fully available
void OnLoad();
// Called when Fiddler is shutting down
void OnBeforeUnload();}
OnLoad 函數將要被調用, 當 Fiddler 讀取UI完全OK了之後,這麼看來,你可以安全的加菜單項,記錄項,或者其他的元素到你的UI上面了。
OnBeforeUnload 函數在Fiddler關閉並且卸載了所有的擴展的時候將被調用。
IAutoTamper 接口
實現了IAutoTamper 接口的那些(繼承了IFiddlerExtension 接口) 將被每一個 HTTP/HTTPS 發送和接收請求調用, 可修改, 記錄, 或者其他的操作。
public interface IAutoTamper : IFiddlerExtension{
// Called before the user can edit a request using the Fiddler Inspectors
void AutoTamperRequestBefore(Session oSession);
// Called after the user has had the chance to edit the request using the Fiddler Inspectors, but before the request is sent
void AutoTamperRequestAfter(Session oSession);
// Called before the user can edit a response using the Fiddler Inspectors
void AutoTamperResponseBefore(Session oSession);
// Called before the user can edit a response using the Fiddler Inspectors
void AutoTamperResponseAfter(Session oSession);
// Called Fiddler returns a self-generated HTTP error (for instance DNS lookup failed, etc)
void OnBeforeReturningError(Session oSession);}
IHandleExecAction 接口
實現了IHandleExecAction 接口的擴展會在往寫入指令的時候被調用.
如你你希望你的擴展能夠對指令做出反映的話(並且阻止進一步的擴展處理的話) 從這個方法返回 true
public interface IHandleExecAction{
// return TRUE if handled.
bool OnExecAction(string sCommand); }
注意Fiddler.Utilities 類包括了一個幫助函數, 你會在解釋指令的時候發現他非常的有用[CodeDescription("Tokenize a string into tokens. De Quotation marks are dropped unless preceded by a \ character.")] public static string[] Parameterize(string sCommand)
一步一步學習樣例
這有一個瑣碎個擴展示例。它修改了發送請求的User-Agent字符串。
啟動 Visual Studio 2005.
建立一個Visual C# Class Library
右鍵點擊References 文件夾。
選擇Browse tab 並且在這個文件夾下C:\Program Files\Fiddler2 找到Fiddler.exe.
單擊 Ok 加到引用當中去。
如果你打算增加Fiddler's的UI
再次右鍵點擊 References 屬性文件夾 Solution Explorer again
在.NET tab, 選擇 System.Windows.Winforms.
單擊 Ok 加到引用中去。
在 Solution Explorer, 右鍵點項目選擇屬性。
在 Build Events tab中, 加入如下的事件命令行 Post-build event command line:
copy $(TargetPath) "%userprofile%\My Documents\Fiddler2\Scripts\$(TargetFilename)"
修改默認的class1.cs (活着建立一個新的clsss) 在你的工程中,如下:
using Susing System.Windows.Fusing F
[assembly: Fiddler.RequiredVersion("2.1.8.1")]
public class Violin : IAutoTamper
// Make sure the class is public, or Fiddler won't find it!{
string sUserAgent = "";
public Violin(){
/* NOTE: It's possible that Fiddler UI isn't fully loaded yet, so don't add any UI in the constructor.
But it's also possible that AutoTamper* methods are called before OnLoad (below), so be
sure any needed data structures are initialized to safe values here in this constructor */
string sUserAgent = "Violin";
public void OnLoad(){ /* Load your UI here */ }
public void OnBeforeUnload() { }
public void AutoTamperRequestBefore(Session oSession){
oSession.oRequest["User-Agent"] = sUserA
public void AutoTamperRequestAfter(Session oSession){}
public void AutoTamperResponseBefore(Session oSession){}
public void AutoTamperResponseAfter(Session oSession){}
public void OnBeforeReturningError(Session oSession){}}
在你的Extension's tab加入一個圖標
這些圖標是從ImageList 叫做 imglSessionIcons 的附件中被選出來的到FiddlerApplication.UI.
為了使用一個存在的圖標, 你可以簡單的設置ImageIndex 屬性,如下:
public void OnLoad(){oPage = new TabPage("Timeline");oPage.ImageIndex = (int)Fiddler.SessionIcons.ToView = new TimelineView();oPage.Controls.Add(oView);oView.Dock = DockStyle.FFiddlerApplication.UI.tabsViews.TabPages.Add(oPage); }
如果你希望加上自定義的圖標, 你必須首先加入到imglSessionIcons.
在早期版本的Fiddler中,這個成員並不是公開的, 所以當你在就的版本操作imglSessionIcons的時候會拋出一個visibility異常. 解決的方法如下:
1& 只用在ImageIndex 屬性中存在的, 或者
2& 使用[assembly: Fiddler.RequiredVersion("2.1.3.1")] 屬性去獲取那個用戶更新當前版本的Fiddler。
其他的例子或者是信息
是一個簡單的 IFiddlerExtension 接口 to 為Fiddler's UI加一個tab。
使用IAutoTamper 在URI通信上阻塞。
文檔為擴展建造者提供了有用的信息。
差不多完成了...
&!--[if !supportLists]--&·&!--[endif]--&編譯你的項目。
&!--[if !supportLists]--&·&!--[endif]--&丟掉.DLL 這個 \My Documents\Fiddler2\Scripts 文件加下面的assembly (或者使用\Program Files\Fiddler2\Scripts 這個而文件夾能夠讓所有的用戶使用)
&!--[if !supportLists]--&·&!--[endif]--&重啟 Fiddler2.
如果你需要幫助或者起他信息,email我使用上面的Contact 鏈接。
翻譯的原文:
【上篇】【下篇】您的位置: >>
这个入门文章主要演示在ASP.NET MVC3网站宿主,让各位.NET程序员知道如何构建简单Web API。
  WCF Web API支持多个宿主环境:自宿主(windows服务或者控制台)和IIS宿主(asp.net webform/mvc)。这个入门文章主要演示在ASP.NET MVC3网站宿主:
如何使用NuGet向项目中添加Web Api引用
如何创建一个通过HTTP GET访问的Web Api
如何通过asp.net routes宿主一个Web Api
如何通过浏览器或者Fiddler访问Web Api
如何在Api上启用OData uri查询
  1、创建一个基本的解决方案:使用VS2010新建一个空的ASP.NET MVC 3 Web Application
  设置站点的端口号为9000
  2、向解决方案中加入Web Api的引用
  通过NuGet来添加Web api的程序集引用,右击项目属性,选择Manage NuGet Packages
  在NuGet管理扩展器上查询Online的webapi.all
  选择安装,NuGet就会下载所有所需的软件包,现在可以开始开发Web Api。
  3、创建一个Contacts Api类
  右击项目ContactManager选择添加一个文件夹,取名APIs,然后在APIs文件夹上右击添加类,类名叫做ContactsApi:
using System.ServiceMnamespace ContactManager.APIs{
[ServiceContract]
publicclass ContactsApi
  ContractsApi 加了ServiceContractAttribute表示这是一个WCF 服务,将通过HTTP方式暴露出来。
4、通过asp.net routing注册ContractsApi
Api需要通过asp.net mvc宿主,使用ASP.net Route的MapServiceRoute扩展方法把它注册进去。切换到global.asax.cs文件,添加以下引用
using ContactManager.APIs;using Microsoft.ApplicationServer.Http.A
  在RegisterRoutes方法里加入下述代码
routes.MapServiceRoute&ContactsApi&("api/contacts");
  下面的黄色部分很重要,MVC的默认路由是映射到controller + action
publicstaticvoid RegisterRoutes(RouteCollection routes){
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapServiceRoute&ContactsApi&("api/contacts");
routes.MapRoute(
"Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controller ="Home", action ="Index", id = UrlParameter.Optional } // Parameter defaults
  MapServiceRoute需要一个泛型参数指定服务(API),以及一个将被追加到IIS base url的路径。在这里,我们指定的contacts,也就是宿主为
  5. 通过一个HTTP Get 方法暴露contacts:首先创建一个poco(Plain Old C#)Contract类,代表我们在api上传递的联系人,本质上就是一个DTO(数据传输对象),在HTTP上我们把它作为资源,然后创建一个HTTP Get方法暴露资源。
  右击项目ContactManager项目选择添加新的文件夹Resources,在Resources文件下创建一个新的类Contact。
namespace ContactManager.Resources{
publicclass Contact
publicint ContactId { get; set; }
publicstring Name { get; set; }
  返回到ContactApi类,添加下述引用:
using System.ServiceModel.Wusing ContactManager.R
  添加一个Get方法返回所有的contracts
[WebGet(UriTemplate ="")]public IQueryable&Contact& Get(){
var contacts =new List&Contact&()
new Contact {ContactId =1, Name ="Phil Haack"},
new Contact {ContactId =2, Name ="HongMei Ge"},
new Contact {ContactId =3, Name ="Glenn Block"},
new Contact {ContactId =4, Name ="Howard Dierking"},
new Contact {ContactId =5, Name ="Jeff Handley"},
new Contact {ContactId =6, Name ="Yavor Georgiev"}
return contacts.AsQueryable();}
  Get方法上加了WebGet Attribute表示这是一个HTTP Get。注意这里的UriTemplate被设置为,默认情况下,操作的Uri是方法名Get,在这种情况下,我们是在Route中设置的Uri。
  6、通过浏览器查询Contracts.按F5运行项目,然后再浏览器地址栏中输入
  7、查询返回Json格式的Contracts。HTTP提供了一些内容协商机制 & 当有多个可得的表现形式的时候,对特定的响应选择最好的表现形式的处理过程。
  服务器驱动协商(Server-driven Negotiation)
  如果响应的最好的表现形式的选择是通过服务器上的算法来实现,那么这种方式的协商称做服务器驱动协商。选择是基于响应可得的表现形式(根据不同的维度,响应会不同;例如,语言,内容编码,等等)和请求消息里特定的头域或关于请求的其他信息(如:网络客户端的地址)。
  服务器驱动协商是有优点的,当从可行的表现形式里进行选择的算法对用户代理进行描述是比较困难的时候,或者当服务器期望发送最好的猜测给客户端而只通过一个响应(以避免后续请求的回路(一个请求会返回一个响应)延迟如果此最好的猜测对用户适合的时候)的时候。为了改善服务器的猜测,用户代理应该包含请求头域(Accept,Accept-Language,Accept-Encoding,等等),这些头域能描述它对响应的喜好。
  Web api返回的响应很容易添加一种媒体类型(media types )。
  打开Fiddler,在Request builder栏输入地址http://localhost:9000/api/contacts,然后移动到Request Headers在User-Agent 项下方添加 Accept: application/json
  按下 Exectue按钮,双击左边的Panel查看HTTP的response,切换到RawTab,你可以看到下面的json格式的数据:
  8、启用OData 查询支持
  Web API支持OData协议,接受OData的URI格式查询,当OData 查询到达Web Api, 在返回客户端之前在服务端会进行必要的过滤和排序。查询使用IQueryable 接口,服务端并没有去查询所有的数据,发送过滤和排序到服务端。
return contacts.AsQueryable();
  运行程序,在浏览器里输入
,看到浏览器之返回了按名字排序的top 4个contract
  也可以通过Fidder去查询,具体可参照第7步。
  通过这个Quick start,我们学习到了以下内容
如何使用NuGet向项目中添加Web Api引用
如何创建一个通过HTTP GET访问的Web Api
如何通过asp.net routes宿主一个Web Api
如何通过浏览器或者Fiddler访问Web Api
如何在Api上启用OData uri查询
.NET技术热门文章
.NET技术最新文章Fiddler 脚本对HTTP请求进行处理
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!【转】用fiddler工具做接口测试 - fangfang的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
我的测试人生........
【转】用fiddler工具做接口测试
& 22:24:12
/ 个人分类:
的原理我理解很简单,是你发送数据,看返回数据是否正确,返回值类型是否正常,主要点是多种数据的,返回结果正常  和其他应用程序相同,中需要知道你的参数,字段有哪些,我们就去给他造数据,而先公司是给的一个请求参数和地址,开始之前先说下接口的一些规范:  1.前端请求接口  接口方法:MethodName(string session, int appType, string args, DateTime timestamp, string sign)  调用接口方法的地址为:http://api.m.hzins.com/MethodName  调用接口方法应该POST的数据格式:session=xxx&appType=1&args={json}&timestamp=now&sign=xxx  请求参数说明:  MethodName:需要调用的方法名  session:用户session  appType : 调用的app类型  args:方法调用所需要参数(如果是多个参数,将参数写成json对象进行序列化)  timestamp:为了让签名更加安全增加一个时间因素  sign:签名 根据约定规则对参数进行加密后的字符串  2. 后端接口返回数据规范:  {"State":7508, "Msg":"请求成功", "Data":"Data String"}  返回参数说明:  State: 返回状态码  Msg:返回信息  Data:返回处理数据(Json字符串)  在没有工具帮助的情况下, 需要测试接口测试后台是c#编写的,可以借助两种方式进行接口的测试  一:URL直接请求  Request  接口地址: http://api.m.hzins.com/Insure/GetInsureDetail 请求方式: POST  请求参数:  ProductId:产品id,  PlanId:公司Id  返回数据:{"State":0,"Msg":"操作成功","Data":{"MaxPeople":100, & &//最大投保人数 (目前没什么用)"HaveDestinationCountry":0, & & //是指定旅行目的地(目前木有用到)"ProductAttributeAll":[ & & & //投保属性信息{"Childs":[ & & & &//字段可以选择的项{"BindEntity":"","ControlTypeId":5,"DefaultSelected":false,"DisplayOrder":1,"FieldName":"","Id":4,"InitClass":"","IsRequired":true,"IsSelected":false,"Name":"身份证","ParentId":3,"SettingTypeId":10,"Value":"1"},{"BindEntity":"","ControlTypeId":5,"DefaultSelected":false,"DisplayOrder":2,"FieldName":"","Id":5,"InitClass":"","IsRequired":true,"IsSelected":false,"Name":"护照","ParentId":3,"SettingTypeId":10,"Value":"2"},  1.URL直接请求 gest请求  http://api.m.hzins.com/Product/GetProuductDetailInfo?args={"ProductId":"123","PlanId":"456"},在url后面直接添加参数,这个请求要后台允许这样的方法,成功后返回以上数据  2.利用fiddler发送请求 post请求

我要回帖

更多关于 fiddler接口 的文章

 

随机推荐