Parsing Proxy Auto-Config files

One thing I’ve always been wanting to be able to do was parse a [proxy auto-config]( file from the command line.

I only recently found the [pacparser]( library but found it limiting because it isn’t easy to install and use. So I decided to write a rubygem that would parse a pac file.

I started using the [`execjs` gem]( but one thing I quickly figured out is that you cannot implement all of the pac functions in pure JavaScript. Most notably is the `dnsResolve(host)` function which you cannot write in JavaScript because it lacks a way to make DNS queries.

So I took the code from execjs that deals with the four native runtimes and modified it to make ruby methods available in the JavaScript runtime. And now it’s available in the [`pac` gem](

You will need a JavaScript runtime installed to be able to use the `pac` gem, I recommend [`therubyracer`]( gem for ruby and [`therubyrhino`]( for jruby. [`johnson`]( only works with ruby 1.8 and [`mustang`]( requires the `v8` library to be installed.

gem install therubyracer pac

And now you can use the `parsepac` executable.


Or in ruby.

require “rubygems”
require “pac”

pac = PAC.load(“”)
pac.find(“”) # => “DIRECT”

pac =“sample.pac”)

pac = PAC.source <<-JS function FindProxyForURL(url, host) { return "DIRECT"; } JS

Leave a Reply

Your email address will not be published. Required fields are marked *