Can Fiddler monitor traffic other than HTTP - fiddler

I have developed a Client/Server type application. XML data is passed between the client and server. I want to simulate how it would run on a very slow network (i.e. radio # 9.6kps). I understand Fiddler can be used in simulate modem speeds mode. But no matter what I do I cannot configure Fiddler to accept traffic from the client and redirect it to the server. And I have also tried a "reverse proxy" too.
Does Fiddler work with protocols other than HTTP?

Related

Fiddler capturing XML-RPC

I was trying to capture xml-rpc calls to a localhost web site using Fiddler. I have yet to see xml rpc traffic.
Specifically, I was using Windows Live Writer which relies on xml-rpc to update blog/story information with underlying metaweblog api. I am able to connect Windows Live Writer to my code/local host but I want to see that traffic in fiddler.
Any ideas as to why I am not seeing it?
The resolution for me was to use the machine name instead of localhost or 127.0.0.1
Once I started using the pc name I was able to view/capture traffic via xmlrpc.
Reference: http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/MonitorLocalTraffic

How can I monitor HTTP traffic from BlueStacks?

I want monitor HTTP traffic from BlueStacks so that I can debug web analytics tracking - any idea how?
For example, my application calles my server. I want to know what actual API my application actually called during testing.
I do not see any HTTP requests in Fidller even when using the BlueStacks.
I thought fiddler capture all internet request done by any software.
Actually you can use fiddler. You see, fiddler configures the winINET proxy to go through it (the one used by internet explorer and all other microsoft software, but sometimes even third pary software uses winINET proxy config - that is why some programs just magically work with fiddle). Some programs ignore wininet config completly and have their own method of setting a proxy (like firefox, chrome). And other programs, like bluestacks, have no support for proxy at all.
But you can force BlueStacks to go through the fiddler proxy. A tool which can do that, and which has a tutorial on this, is ProxyCap:
http://www.proxycap.com/bluestacks.html
Just use 127.0.0.1 as server and 8888 as port number in configuration of the proxies in proxycap. You must also add HD-Agent and HD-Frontend executables in the rules, as specified in the last part of the step-by-step guide.
Unfortunately, proxycap is a 30 day trial. You can use free proxifiers out there. Find something that supports http.
http://en.wikipedia.org/wiki/Comparison_of_proxifiers
I did manage to make this work with proxyCap myself and haven't tried anything else yet.
I think this is better for http traffic sniffing than wireshark which is for lower level network sniffing
Use ProxyCap to let Fiddler capture the trafic.
ProxyCap forwards all Bluestack communication to HTTP proxy (in this case our proxy is Fiddler).
The full step-by-step guide, how to redirect the Bluestack application traffic through proxy, is HERE.
Use 127.0.0.1:8888 as proxy address. That is the address of Fiddler on the local computer.
Today I tried Fiddler - ProxyCap - BlueStacks. It didn't work at first. After I added "HD-Plus-Service.exe" everything was Okay. It seems like new bluestacks versions don't use HD-Network.exe? Anyway my program list includes:
HD-Service.exe
HD-Agent.exe
HD-Frontend.exe
HD-Network.exe
HD-Plus-Service.exe
HD-LogRotatorService.exe
In 2019, Fiddler has been updated to support Proxy, just set up your BlueStacks to use Fiddler's proxy and you can capture all HTTP/HTTPS traffic going out from it.
In addition, for latest Bluestacks3 version here are the list of apps you need to add to your both program lists:
HD-Agent.exe ( from "C:\Program Files\Bluestacks\" )
HD-Player.exe ( from "C:\Program Files\Bluestacks\" )
Bluestacks.exe ( from where you installed Bluestacks )
Fiddler has a documentation regarding how to capture traffic of Android devices: https://docs.telerik.com/fiddler/configure-fiddler/tasks/ConfigureForAndroid. You can use the same config for bluestack

Fiddler for website running on remote machine

I need to monitor a http request and response for web site running on remote web server. The web server makes lot of web service call and would like to trace them.
If the web site was running locally, Fiddler traces every web service call request and provides me with a report. Could someone please help me with how the same is possible
*e.g.
If the web application is running locally and calls two web services fiddler shows the total time on statistics. However, if the web application is running on web server hosted on different web server hosted internally (intranet) and I ran fiddler on my machine, I don't get the statistics for each web service call. All I can see is the total time for the aspx page.*
So question is how (if possible) can I trace the statistics of each web services invoked by web application that's running on different machine and fiddler is running on my machine.
Thanks.
You could always use WireShark http://www.wireshark.org/ to catch all the packets, if you are on the same network as the server, that is.
Say you're running a website on port 80 of a machine named WEBSERVER. You're connecting to the website using Internet Explorer Mobile Edition on a Windows SmartPhone device for which you cannot configure the web proxy. You want to capture the traffic from the phone and the server's response.
0.)Start Fiddler on the WEBSERVER machine, running on the default port of 8888.
1.)Click Tools | Fiddler Options, and ensure the "Allow remote clients to connect" checkbox is checked. Restart if needed.
2.)Choose Rules | Customize Rules.
3.)Inside the OnBeforeRequest handler, add a new line of code:
if (oSession.host.toLowerCase() == "webserver:8888") oSession.host = "webserver:80";
5.) navigate to http://webserver:8888
Requests from the SmartPhone will appear in Fiddler. The requests are forwarded from port 8888 to port 80 where the webserver is running. The responses are sent back through Fiddler to the SmartPhone, which has no idea that the content originally came from port 80.
You can setup Fiddler in your machine and set it as a proxy in the web application you want trace. Easy inside a network, not so easy accross the interwebs.

How to deploy a WebSocket server?

When deploying a web application running on a traditional web server, you usually restart the web server after the code updates. Due to the nature of HTTP, this is not a problem for the users. On the next request they will get the latest updates.
But what about a WebSocket server? If I restart or kill the old process all connected users will get disconnected. So my question is, what kind of strategy have you used to deploy a WebSocket server smoothly?
You're right, every connected user will be disconnected if the server restarts.
I think the less bad solution is to tell to the client to reconnect in the onClose method of the client.
WebSockets is just a transport mechanism. Libraries like socket.io exist to build on that transport -- and provide heartbeats, browser fallbacks, graceful reconnects and handle other edge-cases found in real-time applications.
In our WebSocket-enabled application, socket.io is central to ensuring our continuous deployment setup doesn't break users' active socket connections.
If clients are connected directly to sever that does all sockets networking and application logic, then yes - they will be disconnected, due to TCP layer that holds connection.
If you have gateway that clients will be connecting to, and that gateway application is running on another server, but will communicate and forward messages to logical server, then logical server will send them back and gateway will send back to client responses. With such infrastructure, you have to implement stacking of packets on gateway until it will re-establish connection with logical server. Logical server might notify gateway server before restart. That way client will have connection, it will just wont receive any responses.
Or you can implement on client side reconnection.
With HTTP, every time you navigate away, browser actually is creating socket connection to server, transmits all data and closes it (in most cases). And then all website data is local, until you navigate away.
With WebSockets it is continuous connection, and there is no reconnection on requests. Thats why you have to implement simple mechanics when WebSockets getting closing event, you will try to reconnect periodically on client side.
It is more based on your specific needs.

Debugging iPhone traffic using Charles Proxy Socks feature?

I'm trying to use Charles Proxy in order to debug some performance issues on my iPhone. I got it all working using the "http proxy mode", but fail to do so with the "socks proxy mode". Since iOS exhibits different behavior under http proxy than in real life (see http://www.charlesproxy.com/documentation/configuration/proxy-settings/), I would really like to make the socks proxy work.
After configuring the socks proxy on my iPhone, I fail to connect to any site, and sniffing on the machine that runs Charles shows that I get a reset whenever I'm trying to connect. What step am I missing?
An explanation on how to make it work on either Mac or Windows would be much appreciated!
Setting up a Socks Proxy for iOS with a PAC file
Fire up the Apache server on your Mac or somewhere on the net (A raw gist would work). Create a simple PAC file.
proxy.pac
function FindProxyForURL(url, host) {
return "SOCKS <Address of Charles-The-Proxy>:<SOCKS port>";
}
Then point your iPhones proxy settings under the network connection to HTTP Proxy-> Auto-> http://<addressOfWebServer>/proxy.pac
Final note
Don't forget to undo your proxy settings when you're done.
According to charles documentation: https://www.charlesproxy.com/documentation/configuration/browser-and-system-configuration/
Auto configuration
You can also supply an auto-configuration URL instead of entering manual configuration. This approach will enable your device to first try to use Charles, but then to fallback to using a direct connection if Charles isn't running. This is an experimental approach!
For the auto-configuration URL enter:
https://chls.pro/X.X.X.X.pac
Where you replace X.X.X.X with the IP address of your computer running Charles. This defaults to port 8888. If you use a different port, just include that, e.g. https://chls.pro/X.X.X.X:XXXX.pac
You can also use Charles in SOCKS proxy mode from iOS using an autoconfiguration rule, in spite of this not being available as a manual setting. Enter the auto-configuration URL as follows:
https://chls.pro/X.X.X.X:XXXX.socks.pac