C# 使用FiddlerCore捕获原始HTTPS请求和响应
我有一个task crate tracer,它将在localhost和SOAP API之间存储原始HTTP通信,并带有头和正文。我发现解决这个问题的好办法是提琴。应用程序只能使用HTTPS。目前我只收到我的请求。但我们希望看到SOAP API的响应C# 使用FiddlerCore捕获原始HTTPS请求和响应,c#,fiddler,fiddlercore,C#,Fiddler,Fiddlercore,我有一个task crate tracer,它将在localhost和SOAP API之间存储原始HTTP通信,并带有头和正文。我发现解决这个问题的好办法是提琴。应用程序只能使用HTTPS。目前我只收到我的请求。但我们希望看到SOAP API的响应 var resHeaders = sess.oResponse.headers.ToString(); var resBody = sess.GetResponseBodyAsString(); 我在应用程序启动时初始化Folder
var resHeaders = sess.oResponse.headers.ToString();
var resBody = sess.GetResponseBodyAsString();
我在应用程序启动时初始化FolderCore代理:
CONFIG.bCaptureCONNECT = true;
CONFIG.IgnoreServerCertErrors = false;
FiddlerApplication.Prefs.SetStringPref("fiddler.config.path.makecert", @"c:\Program Files (x86)\Fiddler2\Makecert.exe");
FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete;
if (!CertMaker.rootCertExists())
{
if (!CertMaker.createRootCert())
{
throw new Exception("Unable to create cert for FiddlerCore.");
}
X509Store certStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
certStore.Open(OpenFlags.ReadWrite);
try
{
certStore.Add(CertMaker.GetRootCertificate());
}
finally
{
certStore.Close();
}
}
var resHeaders = sess.oResponse.headers.ToString();
var resBody = sess.GetResponseBodyAsString();
完成后的方法:
private void FiddlerApplication_AfterSessionComplete(Session sess)
{
// Ignore HTTPS connect requests
if (sess.RequestMethod == "CONNECT")
{
return;
}
if (sess == null || sess.oRequest == null || sess.oRequest.headers == null)
{
return;
}
// Request
string headers = sess.oRequest.headers.ToString();
var reqBody = sess.GetRequestBodyAsString();
// Response
var resHeaders = sess.oResponse.headers.ToString();
var resBody = sess.GetResponseBodyAsString();
// if you wanted to capture the response
//string respHeaders = session.oResponse.headers.ToString();
//var respBody = session.GetResponseBodyAsString();
// replace the HTTP line to inject full URL
string firstLine = sess.RequestMethod + " " + sess.fullUrl + " " + sess.oRequest.headers.HTTPVersion;
int at = headers.IndexOf("\r\n");
if (at < 0)
return;
headers = firstLine + "\r\n" + headers.Substring(at + 1);
string output = headers + "\r\n" +
(!string.IsNullOrEmpty(reqBody) ? reqBody + "\r\n" : string.Empty) + "\r\n\r\n";
}
var resHeaders = sess.oResponse.headers.ToString();
var resBody = sess.GetResponseBodyAsString();
在web.config中添加:
<defaultProxy>
<proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
</defaultProxy>
var resHeaders = sess.oResponse.headers.ToString();
var resBody = sess.GetResponseBodyAsString();
这非常容易。为此使用了sess.oResponse.headers和sess.GetResponseBodyAsString
var resHeaders = sess.oResponse.headers.ToString();
var resBody = sess.GetResponseBodyAsString();
你的标题是指HTTPS,但你的问题明确排除了HTTPS。请编辑您的标题以从HTTPS中删除S。