Hello there,
I know every time you install Fiddler in a different machine and enable it to decrypt HTTPS it generates a new certificate that is different for each machine and you need to install it in client devices so the decryption can happen. I thought I had find a way around this until today it didn't work for me anymore but just want to ask in case something can still be done :-).
I built a cloud server and installed Fiddler and set it up to decrypt HTTPS then configured a bunch of devices to accept the certificate and everything was fine. Once finished my testing since cloud servers cost money and I didn't wanna pay for it while idle I created an image and deleted the server in hopes next time I would have all the configuration and it seemed to work fine. I recreated the server from the image a bunch of times and every time I was able to connect the devices and do my testing no problem... well, until today when I just did the same again and I'm getting the … "!SecureClientPipeDirect failed: System.ComponentModel.Win32Exception The credentials supplied to the package were not recognized for pipe (CN=*.somerandomdomain.com, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com)" .. which basically means if I'm correct I need to generate a new certificate which then I need to install in all the clients :-\ .. I tried just downloading the certificate again from the fiddler proxy URL but it is the same of course and if I do a binary compare using "fc.exe /b" I can confirm they're identical so it seems my only way would be to generate a new one … before I give up to that, is there anything else I could do to avoid having to do it? my main issue is I don't have all the devices on hand and now I'd have to reach to every user and explain one by one how to do this and some of them are not that tech savvy :-(
Cheers,
Carlos.
Hi,
I am using FiddlerCore with PuppeteerSharp browser automation tests in order to get performance metrics (thanks to FiddlerCore) like page loading time, DOM loading time, TTFB, HTTPs handshake time, ns lookup...etc.
I am facing a problem trying to access some website like: https://outlook.office.com which redirects to to Microsoft login portal. I have the impression that I am missing some configuration in my code but I cannot figure out what the problem is. The code I am use is the following:
internal class FiddlerProxy : IDisposable{ public string Uri { get; private set; } public Proxy ProxyEndpoint { get; private set; } public int SessionCount { get; private set; } internal FiddlerProxy(string uri) { Uri = uri; ProxyEndpoint = null; SessionCount = 1; } public void Start() { // Register for the FiddlerCore events FiddlerApplication.AfterSessionComplete += OnAfterSessionComplete; FiddlerApplication.BeforeRequest += OnBeforeRequest; FiddlerApplication.OnNotification += delegate (object sender, NotificationEventArgs oNEA) { Console.WriteLine("** NotifyUser: " + oNEA.NotifyString); }; FiddlerApplication.Log.OnLogString += delegate (object sender, LogEventArgs oLEA) { Console.WriteLine("** LogString: " + oLEA.LogString); }; // Create an HTTPs certificate and Start the proxy if (!InstallCertificate()) throw new InvalidOperationException("Creating a certiicate failed. Https traffic cannot be captured."); if (FiddlerApplication.IsStarted()) Stop(); FiddlerApplication.Startup(0, FiddlerCoreStartupFlags.Default & ~FiddlerCoreStartupFlags.RegisterAsSystemProxy); ProxyEndpoint = FiddlerApplication.CreateProxyEndpoint(FiddlerApplication.oProxy.ListenPort, true, "localhost"); } public static bool InstallCertificate() { if (!CertMaker.rootCertExists()) { if (!CertMaker.createRootCert()) return false; if (!CertMaker.trustRootCert()) return false; } return true; } private void OnBeforeRequest(Session session) { if (!ShouldProcess(session)) return; else { // Do something } } private void OnAfterSessionComplete(Session session) { if (!ShouldProcess(session)) return; Console.WriteLine($"Session no. {SessionCount++} coming from :{session.fullUrl}:"); Console.WriteLine(session.Timers.ToString(true)); } private bool ShouldProcess(Session session) { if (session.RequestMethod.Equals("CONNECT", StringComparison.InvariantCultureIgnoreCase)) return false; if (session.fullUrl.Contains(Uri)) return true; else return false; } public void Stop() { if (ProxyEndpoint != null) { ProxyEndpoint.Detach(); ProxyEndpoint.Dispose(); } FiddlerApplication.AfterSessionComplete -= OnAfterSessionComplete; if (FiddlerApplication.IsStarted()) { FiddlerApplication.Shutdown(); } } public void Dispose() { Stop(); }}Then I use FiddlerProxy class in Main() method in Program.cs as follows:
static void Main(string[] args){ var uriToMonitor = "https://outlook.office.com"; using (var fiddlerProxy = new FiddlerProxy(uriToMonitor)) { fiddlerProxy.Start(); LoadPageUsingPuppeteerSharp(uriToMonitor, fiddlerProxy.ProxyEndpoint.ListenPort).Wait(); } Console.ReadLine();}public static async Task LoadPageUsingPuppeteerSharp(string uri, int proxyPort){ var launchOptions = new LaunchOptions { ExecutablePath = @".\chrome-win\chrome.exe", Headless = false, IgnoreHTTPSErrors = true, Args = new[] { $"--proxy-server=127.0.0.1:{proxyPort}", "--no-sandbox", "--disable-infobars", "--disable-setuid-sandbox", "--ignore-certificate-errors" } }; using (var browser = await Puppeteer.LaunchAsync(launchOptions)) { var context = await browser.CreateIncognitoBrowserContextAsync(); using (var page = await context.NewPageAsync()) { await page.SetUserAgentAsync("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3563.0 Safari/537.36"); await page.SetViewportAsync(new ViewPortOptions { Width = 1500, Height = 800 }); await page.GoToAsync(uri); } }}
Attached are the console output that I get when running my program, and two screenshots of my chrome browser.
One last question, is it possible to configure an HTTP Proxy (some proxy that we have in our organisation) through which FiddlerCore can send requests?
Thank you in advance for your help.
Adel
I'm using the latest Fiddler version and O365 extension, but I'm still unable to get through the authentication process when using Oauth. I've been trying with EWS editor, and both Oauth and basic fail. Outlook fails to connect to an Exchange Online mailbox. Using Chrome and IE can't get to outlook on the web, or google.com for that matter. It seems to be having a problem with SSL, but I'm not clear on that.
EWS editor error using basic:
Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()
Exception details: Message: The request failed. The underlying connection was closed: An unexpected error occurred on a send.
Type: Microsoft.Exchange.WebServices.Data.ServiceRequestException
Source: Microsoft.Exchange.WebServices
EWS editor error using Oauth:
System.Threading.Tasks.Task`1.get_Result()
Exception details:
Message: One or more errors occurred.
Type: System.AggregateException
Source: mscorlib
Installing Fiddler, downloaded from the "only" Download link for Win. I have a Win7 VM (not native Win), which didn't have any .NET installed. I had 4.5.2 available, so I installed that. Then installed Fiddler, which failed with error on start. Analysing the error, I found out that installer had given me Fiddler v2.6.3.49793. Tried to install .NET v2, but it didn't go in. Tried to install .NET v4.0 but that refused to install as well. I needed to uninstall .NET 4.5.2, and then install .NET 4.0 (a lot of boots and struggle there). Finally with .NET v4.0 I uninstalled Fiddler and re-installed, to get v4 of Fiddler. Then it worked.
Just wanted to share - if somebody else stumbles upon the same problem.
The error Fiddler 2 gave was: "Type: System.ArgumentException, Source: mscorlib...."
Is this how you wanted it to behave like ?
When using O365 extension and trying ws-fed auth to O365 fiddler chrashes, fiddler works alright when disabling extension
---------------------------
Uncaught Exception in Session #387
---------------------------
Fiddler has encountered an unexpected problem. If you believe this is a bug in Fiddler, please copy this message by hitting CTRL+C, and submit a bug report at http://www.telerik.com/forums/fiddler.
Length cannot be less than zero.
Parameter name: length
Type: System.ArgumentOutOfRangeException
Source: mscorlib
at System.String.Substring(Int32 startIndex, Int32 length)
at EXOFiddlerInspector.SessionProcessor.SetAuthentication(Session session)
at EXOFiddlerInspector.Services.ActivationService.AutoTamperResponseAfter(Session _session)
at Fiddler.FiddlerExtensions.(Session ) in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Application\Extensions.cs:line 866
at Fiddler.Session.() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\Session.cs:line 4073
at Fiddler.ServerChatter.() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\ServerChatter.cs:line 1520
at Fiddler.ServerChatter.() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\ServerChatter.cs:line 1474
at Fiddler.Session.() in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\Session.cs:line 3751
at Fiddler.Session.(Object ) in C:\Jenkins\Fiddler_Windows\workspace\Fiddler2\Common\Core\Session.cs:line 3526
Fiddler v5.0.20194.41348 (x64 AMD64) [.NET 4.0.30319.42000 on Microsoft Windows NT 10.0.18363.0]
---------------------------
OK
---------------------------
16:48:19:9974 fiddler.network.https> HTTPS handshake to <> failed. System.IO.IOException Received an unexpected EOF or 0 bytes from the transport stream.I downloaded the "fiddler...dmg" and installed it. When I try to run it, I get this error "“Progress Telerik Fiddler” can’t be opened because Apple cannot check it for malicious software.".
Is this ready for MacOS at this point. I can't disable the verification in a corporate environment.
Now what?
I had trouble using Fiddler for iOS in localhost env.
( PC browser(IE) and Android are OK !)
A heavy request posts to server in iOS,
but Fuddler capture request twice.
dose anyone some idea?
like this:
-------------------------------------------
# Result Protocol Host URL
↓ HTTPS AAA test/RestAAA
200 HTTP Tunnel to AAA:443
500 HTTPS AAA test/RestAAA ←not expectation
-------------------------------------------
after , first HTTPS request is return 200,and Collect Json Data.
:)
I'm trying to parse some data from a socket in C#. The socket uses the Permessage-Deflate extension. While the packet types are all text, some of the packets show illegible characters.
If I select a packet and go to the HexView tab, I can right-click the packet, choose Copy/Copy as Base64, paste it into the TextWizard and then transform it from DeflatedSAML. This parsed the packet perfectly.
What is being done here in terms of encodings etc in C# equivalent code? I can't seem to go from a string received as a packet in C# to getting the same result as those steps in Fiddler, no matter what options in terms of encoding or decompression I cycle through. . .
Is there a 'flag' byte at the start of a packet that indicates whether a packet contains plain text or compressed data, out of interest?
I'd appreciate any pointers at all on this.