Using Fiddler as a Https Reverse Proxy


The Problem
To help debug and monitor http request between the java application and the remote server, I configure Fiddler in machineA as a reverse proxy which forwards request to  http://machineA:8888 to http://remoteServer:8080. This is easy: follow the guide: Use Fiddler as a Reverse Proxy
Ensure Allow remote clients to connect is checked.
Click Rules > Customize Rules, Inside the OnBeforeRequest handler*, add a new line of code:
static function OnBeforeRequest(oSession: Session) {
if (oSession.host.toLowerCase() == "machineA:8888") 
{  
 oSession.host = "remoteServer:8080";
}

But today, I need pointer to one remote server which uses https: https://remoteServerB.

The Solution

The solution is almost same as http reverse proxy, we just need change http to https additionally.
Click Rules > Customize Rules, Inside the OnBeforeRequest handler, add a new line of code:
static function OnBeforeRequest(oSession: Session) {
if (oSession.host.toLowerCase() == "machineA:8888") 
{  
   oSession.host = "remoteServerB";
   oSession.oRequest.headers.UriScheme = "https";
}

One additional bonus is that due to the additional proxy layer, the complexity of https protocol, such as https handshake is hidden. We can raw decrypted request and response between the application and remote https://remoteServerB.

Resource
Use Fiddler as a Reverse Proxy

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)