2017-09-15 57 views
2

我们使用的是OData Web API CRM 2016 endpoint如何查看本地主机到CRM的流量?

我创建从邮递员流动,到本地主机微服务的请求,然后向CRM:

邮差--->本地主机的microService ---> CRM

我能够查看来自第一部分的流量(邮差 - >本地主机);然而,提琴手跟踪显示什么都没有从LocalHost - > CRM。

提琴手表示从邮差的请求以下数据 - >本地主机

POST https://localhost:19081/..../API/leads HTTP/1.1 
Host: localhost:19081 
Connection: keep-alive 
Content-Length: 84 
Cache-Control: no-cache 
Origin: chrome-extension://aicmkgpgakddgnaphhhpliifpcfhicfo 
MSCRMCallerID: D994D6FF-5531-E711-9422-00155DC0D345 
X-Postman-Interceptor-Id: 84840bba-bc4b-9b06-d3ab-e264045e8918 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 
Content-Type: application/json; charset=UTF-8 
Accept: */* 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8 
Cookie: ai_user=Ka2Xn|2017-05-25T17:30:57.941Z 

{ 
    "subject": "created by mscrmcaller user2: d994d6ff-5531-e711-9422-00155dc0d345" 
} 

但是,没有从本地主机截获 - > CRM

请注意,两条路线都是HTTPS。

绕过本地主机,那么流量是可见的!

的请求,像这样创建:

//Create payload for request 
var content = new StringContent(lead.ToString(), Encoding.UTF8, "application/json"); 
//Create POST request with data from above 
var request = RequestCreator.Create(uri, validHeaders, HttpMethod.Post, content); 
//Issue request 
var postResponse = Client.Instance.SendAsync(request).Result; 

什么是我们做错了什么?

+0

https://stackoverflow.com/questions/4647105/how-to-configure-fiddler-to-listen-to-localhost – OldProgrammer

+1

[如何配置Fiddler来侦听本地主机?](https:// stackoverflow.com/questions/4647105/how-to-configure-fiddler-to-listen-to-localhost) – jasonscript

+0

您是否在使用.net framework,.net core或其他您的微服务? –

回答

8

Fiddler不会跟踪服务器到服务器的流量。您需要将您的“localhost microservice”配置为通过fiddler代理(默认为127.0.0.1:8888)。如果你的“本地主机微服务”是.NET(好像它),你可以添加

<system.net> 
    <defaultProxy> 
    <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" /> 
    </defaultProxy> 
</system.net> 

要么你的web.config(将使用Fiddler作为代理只是为您服务)或machine.config中(将使用Fiddler代理对于任何.NET应用程序)。

机CONFIGS在这里:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config 

参考:http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp

由于您的连接是通过HTTPS,你还需要配置小提琴手解密HTTPS流量(工具 - >选项 - > HTTPS->解密HTTPS流量)。

编辑

此建议假定你会为你的“本地主机微服务”机同一台机器上运行的小提琴手,但几乎任何地方,只要你可以运行小提琴手为8888端口,从你到达“ localhost microservice“机器和提琴手机器可以向最终目标(您的情况下的CRM机器)发出http请求。如果您想在其他地方运行提琴手,只需将proxyaddress配置为不同的IP,例如http://10.0.0.1:8888。在这种情况下,您还需要配置fiddler以允许远程传入流量(工具 - >选项 - >连接 - >允许远程计算机连接)

+0

可以将它添加到app.config中吗?这是一个owin selfhosted应用程序https://lh3.googleusercontent.com/-F97uGlsLFHc/Wb_5g2vLVII/AAAAAAAADvQ/0Ed8ZtKE_Q8sqO4BYZ4AaoZ7hPfHLaL_wCHMYCw/s0/devenv_2017-09-18_11-51-14.png –

+0

所以你建议将system.net等添加到localhost服务上的配置,然后在TARGET机器上启动fiddler并拦截? –

+0

我只是不理解调用的顺序。首先,我用剩下的动词称呼本地服务。那么你说的是本地服务,而不是将请求转发给带有CRM的目标机器,它实际上是将它转发给正在运行的Fiddler的本地实例?那么Fiddler的本地实例会以某种方式将流量转发到预定的目的地? –

2

我使用WireShark(https://www.wireshark.org/)来检查此类流量。
Fiddler像本地代理服务器一样工作,所以您无法找到您的计算机发送或接收的所有数据包。
Windows中的WireShark像流量过滤一样工作。您还可以收听回环流量,流量到您需要的任何服务器,确切的接口流量,并且您可以使用过滤器来查找您需要的数据包。
如果你需要监听SSL流量,WireShark也可以(如果你有两个密钥,服务器和客户端),但是在Fiddler中并不困难。因为Fiddler就像中间人,WireShark需要解密SSL数据包(https://wiki.wireshark.org/SSL)。
要收听回送流量,您需要安装npcap驱动程序而不是WinPcap(https://nmap.org/npcap/)。

2

如果有可能,而不是localhost使用Machine Name,并在IIS Express下运行微服务。这两个操作都会导致通过Fiddler代理发送包。

2

尽管您可以使用Ondrej建议的代理,但说Fiddler无法捕获locahost服务器 - 服务器流量并不准确。

更确切地说,没有该代理Fiddler将只捕获用户身份的流量。

因此,更简单的解决方案是将应用程序池更改为以您的用户身份(而不是服务帐户)运行。

1

只需在您的端点配置中更改localhost - 至 - >localhost.fiddler。如果你想继续使用Fiddler,这将会起到诀窍的作用。