使用Fiddler时,它会要求安装根证书,该证书会自动解密SSL通信。但是它也告知用户,除非是测试系统,否则不应安装它。
我的理解是,由于Fiddler在每台计算机上使用相同的私钥,因此攻击者可以获取此私钥并执行真正的MITM,而用户不知道,因为计算机信任Fiddler的根。
但是,Fiddler网站上的这一行与我的共享私钥理论相矛盾:
如果客户端计算机本身以前曾以HTTPS解密模式运行Fiddler,则所有尝试访问由另一台计算机的Fiddler版本保护的HTTPS页面的尝试都会失败,并出现未指定的证书问题。若要解决此问题,请删除客户端证书存储中的Fiddler根证书。(不匹配的根证书会导致此问题,因为每个Fiddler实例都会生成自己的唯一根)。
我的问题是;为什么Fiddler不按机器创建私钥,这样才安全。如果Fiddler已经在执行此操作,为什么要告诉用户不要安装它,除非它是一个测试系统?
为了清楚起见,我正在谈论此警告:

我已经看到 了几个 关于这个的问题,但没有明确的演练如何捕获到WCF Web服务的SOAP请求.他们只是说"去安装Fiddler2".所有我可以摆脱fiddler的是普通的HTTP请求,但由于某些原因我永远无法获得原始SOAP请求任何人都可以指导我阅读这个特定场景的教程吗?
.NET Web应用程序在WCF Web Service上调用basicHTTP端点.我需要捕获原始SOAP请求.我正在寻找一个完整的演练,因为我不是出于某种原因而想要这个概念.
UPDATE
这是我从Fiddler原始视图中得到的结果:
POST http://vm05/PNSWebTestVB/ HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://vm05/PNSWebTestVB/
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: vm05
Content-Length: 2272
Connection: Keep-Alive
Pragma: no-cache
__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKLTM4MDU0OTMyOQ9kFgICAw9kFgICeQ8WAh4HVmlzaWJsZWcWBgIBDw8WAh4EVGV4dAXKATx0YWJsZSB3aWR0aD0nMTAwJSc%2BPHRyPjx0ZD48c3Ryb25nPlN0YXJ0ZWQ6PC9zdHJvbmc%2BIDg6Mjg6MTguNzA3IEFNPC90ZD48dGQgYWxpZ249J2NlbnRlcic%2BPHN0cm9uZz5FbmRlZDo8L3N0cm9uZz4gODoyODoyMC41ODUgQU08L3RkPjx0ZCBhbGlnbj0ncmlnaHQnPjxzdHJvbmc%2BVG90YWw6PC9zdHJvbmc%2BIDEuODggc2Vjb25kczwvdGQ%2BPC90YWJsZT5kZAIDDw8WAh8BBXk8aDQ%2BQ3JlYXRlIFRyYW5zYWN0aW9uIFNlcnZpY2UgUmV0dXJuPC9oND48Yj5Cb29sZWFuIHJlc3VsdDo8L2I%2BIFRydWU8YnIvPjxiIHN0eWxlPSdjb2xvcjpncmVlbjsnPlRFWFQgUkVTVUxUPC9iPjxicj48YnI%2BZGQCBQ8WAh8AZ2Rkmc4sy89qkfQk3kA8w7SRmIfxUSlxVgFqcNBtkeRIGvY%3D&__EVENTVALIDATION=%2FwEdADckdSulW6vTtuDCsutBCOVBHuYrnCLgzUYcVq885NAgzZBAD6J3MNtrSpGnxWrC%2FWRUrsGtEC0SKq72cYUQj6MHOXVRtuWyUUr8Al4rdtmt%2B8N2xUQitpn6Pknoh%2B5lQf9RKBwWYA7jtXNV6Fyp7wwwYPNRdSlGDjh7ClJg%2F%2FQI%2FsI9IlkxVupeEm%2FDBfOBjmgCFEW5ZOZ3zLZdk8YI6PE6An6aUbI2ZjLPEQsoBH9TOyLW4BJ%2FSTF3Uef4cbjA5Q6oOAbWKMEz9NXGrCaNaN6%2FMpyV5%2F1TvEYWD0yCXnmvyFCW58L34hS5XnYmVzVfcqcUSYbps0k8nVI8D9q4g88Z7oY8IGHKUKDgNd8Kojcr%2FtWV5ox%2FwpXSznh9NtViMcBsMIdnRXtkb14rIvygPErJhFC4ILqjKluJ7FnQqfbUh2wVFAAZqAAVW%2F7QOBwuGJsC4KiUWkyiTt32wEzVgrG55C2gUEtIrhiHZRDanokB6Pjrd%2B6AhBFz9xIwRXGyYSipKDigjvXCrUFe1qtus867Hkdv%2Fmywtqjc8bPQgNMmPZmHMCRBpaSZU%2Fh5766K3e%2FZaAzC5geU%2FGZZrIiHB%2BvOFu3Ip31cWL5V1piWa7JHh4Ck%2FnXjtEEXGp9uhBm0Ym%2Fq%2B8KAFXmT90AD%2FaBcOEqI4c4cQUqoy7AZ1%2BkYVPB39GBt33rofGUZhn9OTmViOoqzzIS3GQPZY9GEdkYtBRCGCBa6y0vMH4d%2BpjEUs1aRMtB7BcOyOKb3MRBTUDqtrd3loN3ma0HbQrCsdBnsAHCSBTq4obkUxHDtJf8dSY2HsN%2BMSiYZt0hmT4kEnnuNAaFBfGj7Oy49XaZ593dhlumGfM%2FFESYlqD233oVLoUueHRunUC66sgsPgZkHYlVHbiQOw0WXZZ5cbdYYXwr661mJ89CqNL7SXM5bHdHZdc8mjZKMhnMRSoTaHKS7nhfvrD%2Fx3IhQquPfSBscM%2BEl0ZjjjtTdVzRZn7DFyWrI8V%2FOY8R04aPRKvp5noI1x8SosQ8JtOO%2BaYKnFL9NCi0aug5qlXDG2aEfC1liIw8tcyTKyO4O3QU2jwgyGg0Cn1uu04sysgxEFpobCcsYBC13vLf00%2BldhvJhee6%2Fsf7z7jMzjigjz9OJ9sLxDWTNf435wga8mfxrwE8QZdUUwumdHowAQUaobtRYmVoJUTgx0Kzlww2Q0Vmf7egxEzjWuWP9tjw%3D&txtProntoID=_CleanInstallSite&txtAuthData=password&txtUsername=apiuser&txtUserPassword=@lph@deV2&ddlProtocol=http%3A%2F%2F&txtDomain=vm05.alphatrust.local&btnCreateTest2=Create+New+Transaction+2&txtTransactionID=&txtParticipantID=&txtDocumentID=&txtMetaDataName=&txtMetaDataValue=&txtTaskID=&txtAttachmentID=
Run Code Online (Sandbox Code Playgroud)
更新2
我甚至不确定Fiddler客户端如何首先看到SOAP.Fiddler(根据我的理解)拦截来自浏览器的客户端流量(这只是一个表单帖子),表单帖子告诉服务器上的应用程序在另一台服务器上(或在同一服务器上)调用WCF应用程序的Web服务在这种情况下服务器)然后WCF将响应数据发送回调用服务器.然后调用服务器只返回客户端的网页.所以,我所看到的只是客户端流量与服务器流量无关(即使客户端,呼叫服务器和WCF服务器在我的测试用例中都是同一台机器).
有没有办法配置这样的链MyApp-> Fiddler-> Web代理*->目标服务器?
* Web代理是该列表中的一个。
PS我知道如何配置MyApp-> Fiddler-> Target Server,但是当用户从异常位置(例如从非洲)登录时,我需要测试与情况相关的一些功能
阅读许多建议设置以下系统属性的文章 -
System.setProperty("proxySet", "true");
System.setProperty("proxyHost", "127.0.0.1");
System.setProperty("proxyPort", "8888");
Run Code Online (Sandbox Code Playgroud)
或者
使用 Java VM 参数“-DproxyHost=127.0.0.1 -DproxyPort=8888”进行设置
这两种方法都不会捕获网络调用:(
我想建立一个代理服务器来处理本地请求.
例如 - 捕获Web浏览器打印请求并将它们发送到适当的LAN打印机.
到目前为止,我的想法是在Windows服务中托管FiddlerCore引擎.
这是我的代码:
private static void Main()
{
FiddlerApplication.OnNotification += (sender, e) => Console.WriteLine("** NotifyUser: " + e.NotifyString);
FiddlerApplication.Log.OnLogString += (sender, e) => Console.WriteLine("** LogString: " + e.LogString);
FiddlerApplication.BeforeRequest += oSession => { Console.WriteLine("Before request for:\t" + oSession.fullUrl); oSession.bBufferResponse = true; ParseRequest(oSession); };
FiddlerApplication.BeforeResponse += oSession => Console.WriteLine("{0}:HTTP {1} for {2}", oSession.id, oSession.responseCode, oSession.fullUrl);
FiddlerApplication.AfterSessionComplete += oSession => Console.WriteLine("Finished session:\t" + oSession.fullUrl);
Console.CancelKeyPress += Console_CancelKeyPress;
Console.WriteLine("Starting FiddlerCore...");
CONFIG.IgnoreServerCertErrors = true;
FiddlerApplication.Startup(8877, true, true);
Console.WriteLine("Hit CTRL+C to end …Run Code Online (Sandbox Code Playgroud) Tomcat在我的localhost上运行在标准的8080端口上.当tomcat调用在同一服务器上运行的服务(soap/rest)时,我想通过fiddler捕获它.
基本上,tomcat发出的任何请求都应该通过Fiddler捕获.目前,它将请求发送到运行相同计算机的另一个服务,该服务又调用Amazon AWS,我也想捕获它.
有人可以帮忙吗?请注意,这与通过代理到服务器的传统Web请求相反.
我对任何其他选择也持开放态度.
我有本地Web API项目,它不通过本地IIS运行.要运行该项目,我在Visual Studio 2013中使用F5.
使用Fiddler,我一直得到:
HTTP/1.1 401 Unauthorized
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom 88 401 HTTP localhost:52787 /api/values 6,180 private text/html; charset=utf-8 fiddler:10724
Run Code Online (Sandbox Code Playgroud)
我知道我应该得到200但我不是.我应该在哪里查看我做错了什么?
这是浏览器的屏幕截图.当我回到Fiddler查看结果时,我得到了这个,我只需输入http://localhost:52787/api/helloapiURL(在浏览器中)并输入:

这是我通过Fiddler手动编写GET时得到的结果:

我有选中自动验证选项.
Fiddler 2或4在我的Windows 10中无法正常工作.我无法捕获任何浏览器的流量.在升级到Windows 10之前它在Windows 8中工作.有些机身有sam问题吗?任何解决方案?
通常,我们通过Fiddler捕获了太多请求,但是使用POST方法的请求最终才是我们想要的。
有什么方法可以使用POST方法提取/过滤/这些请求,换句话说,仅显示POST请求。
我已经阅读了Fiddler Docs上的过滤器部分,但是这种情况没有任何线索。
谢谢。
在配置 TFS vNext 构建代理时,我收到错误消息:
ErrorConnectingToTheServer 发送请求时出错。请求。
我在事件日志或其他任何地方都找不到任何其他错误消息。
请帮忙。
更新 1:SSL (https///tfs)不起作用。但是普通的 http:// 起作用了。
更新 2:我已删除旧代理并尝试配置新代理。这样做时,我收到了 _diag 文件夹中存在的以下错误:
System.Net.WebException:基础连接已关闭:发送时发生意外错误。---> System.IO.IOException: 无法从传输连接读取数据:远程主机强行关闭了现有连接。---> System.Net.Sockets.SocketException:远程主机强行关闭了现有连接.... System.Net.WebException:底层连接已关闭:发送时发生意外错误。---> System.IO.IOException: 无法从传输连接读取数据:远程主机强行关闭了现有连接。---> System.Net.Sockets.SocketException: 一个现有的连接被远程主机强行关闭.... System.IO.IOException: 无法从传输连接读取数据:一个现有的连接被远程主机强行关闭主持人。
更新 3: 我有两台服务器,如下所示:1 是应用程序服务器,其他是 SharePoint 和报告服务器,试图在第三台服务器中配置构建。TFS URL 配置了 SSL 443。
如果我尝试使用http://tfs server/tfs配置代理,它会成功,但在构建时收到错误。当我尝试使用 https 进行配置时,出现上述错误。有趣的是,我曾将这台服务器用于两个代理,在那种情况下,我又多了一台服务器,我发现错误工作正常。