I recently had an issue where an application which supports proxies but doesn’t prompt for credentials needed to use a proxy server to communicate with the internet. The solution? Use Fiddler and its built in scripting language as a secondary proxy chained to the primary, forcibly sending a valid authentication header to the proxies.
How does one this? Here’s how, which is a bit more detailed writeup than what’s found here at Stack Overflow. Note that this presumes basic familiarity with Fiddler:
- Use Fiddler to watch a session that uses Basic authentication to the proxy. Look at one of the requests headers after successful authentication and find the line which contains
Proxy-Authorization: Basic
. Copy this value to the clipboard. (Example line:Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQxMg==
) - In Fiddler, click Rules → Customize Rules to open
CustomRules.js
in an editor. - Locate the function
OnBeforeRequst
. The line beginning this will read something likestatic function OnBeforeRequest(oSession: Session)
and is line 159 in the rulset that ships with Fiddler v4.4.9.2 (latest as of November 6, 2014). - Below this, add a line as follows, with the secondary part being the string that was copied in step 1. In this example the bolded portion is what we’ve added:
[...]
static function OnBeforeRequest(oSession: Session) {
// Inject a Basic authentication header
oSession.oRequest["Proxy-Authorization"] = "Basic Yno5eWw1Oldyb25nLmdvLldheSsyNDA=";
// Sample noRule: Color ASPX requests in RED
// if (oSession.uriContains(".aspx")) { oSession["ui-color"] = "red"; }
[...]
- Save and close
CustomRules.js
. Fiddler will now begin using this modified ruleset. You can observe that this header is now included with every request. - Ensure that your application using Fiddler as its proxy. If the application is local to the computer on which Fiddler is running and uses WinINET then this is likely automatic. If not, it will need to be manually pointed to the local proxy. Fiddler can also accept connections from computers elsewhere on a network (Tools → Fiddler Options… → Connections), but configuration of this is beyond the scope of this article. See the Fiddler documentation for more information.