Pactester 1.0.8

Pactester is an utility to test proxy auto-configuration (pac) files.
Pactester is an utility to test Proxy Auto-Configuration (PAC) files.

PAC files are used by browsers to determine the 'right' proxy for a URL. Since the PAC file evaluation mechanism is generated inside the browser and cannot be accessed from outside, the only way to tell which proxy your browser will use for a specific URL is manual inspection of the PAC file. But manual inspection doesn't really scale very well. Pactester resolves this problem. It makes use of JavaScript interpreter and Netscape/Mozilla APIs to evaluate the PAC files and automates the whole process.

Pactester reads a PAC file, evaluates it in a JavaScript context and uses this PAC file's logic to determine the proxy for a specific URL.

Usage: ./pactester < -p pacfile > < -u url > [-h host] [-c client_ip]
./pactester < -p pacfile > < -f urlslist > [-c client_ip]

-p pacfile: PAC file to test
-u url: URL to test
-h host: Host part of the URL
-c client_ip: client IP address (defaults to IP address of the machine on which script is running)
-f urlslist: a file containing list of URLs to be tested.

./pactester -p wpad.dat -u
./pactester -p wpad.dat -u -c
./pactester -p wpad.dat -f url_list

How It Works?

It evaluates the PAC file in a Javascript context. To do that it uses the JavaScript::SpiderMonkey perl module, which is a perl interface to Mozilla's C implementation of Javascript- Spidermonkey.

PAC files use certain JavaScript functions. These functions have been defined in pac_utils.js file included with this tool (This file was generated using another file from Mozilla source code). Also, since JavaScript has no DNS resolving capability which is required by the "dnsResolve" and "myIpAddress" functions in the PAC files, these functions have been defined in Perl and then exported to a JavaScript context.

How to use it?

Pactester can be used to determine the proxy for a single URL or a list of URLs.

To determine the proxy for a single URL:

./pactester -p www.pac -u

For a list of URLs :

./pactester -p www.pac -f urllist

where urllist is a file containing the list of URLs separated by newline.

Extending command line web clients:

Pactester can be also be used to extend command line web clients like curl and perl-libwww library.

To use it with curl: Right now, curl doesn't have the functionality to evaluate PAC files to find out proxy for a given URL. However, based on pactester, you can write a wrapper perl script around curl. This perl script will first find out the proxy for the URL, the way that pactester finds out, and then it will call curl with the option '-x "proxy server as returned by pactester method"'.

Similarly, this method can be used inside perl-libwww web clients too.

last updated on:
May 22nd, 2008, 12:56 GMT
developed by:
Manu Garg
license type:
LGPL (GNU Lesser General Public License) 
ROOT \ Internet \ Proxy


In a hurry? Add it to your Download Basket!

user rating 18



Add your review!