プロクシ認証をバイパスする (ように見せる)

たとえば社外ネットワークにアクセスするのにプロクシ認証がいるような場合、ブラウザを開くたびにユーザー ID とパスワードが聞かれる。ブラウザーに覚えさせれば ENTER キーだけでいいけど、それすら面倒になってきたのでどうにかできないかなぁと。

で、書いてみたのが以下。足りないモジュールは適宜 CPAN

#!/usr/bin/perl -w --

use strict;
use warnings;

use HTTP::Proxy;
use LWP::UserAgent;
use MIME::Base64;

my $NAME   = 'hoge';
my $PASS   = 'piyo';
my $PROXY  = 'http://proxy.example.com:8080/';
my @SCHEME = ('http', 'https', 'ftp');

my $agent = new LWP::UserAgent(agent => "Mozilla/4.0 (compatible)");
$agent->default_header('Proxy-Authorization' => 'Basic ' . encode_base64("$NAME:$PASS"));
$agent->proxy(\@SCHEME, $PROXY);

my $proxy = new HTTP::Proxy(port => 8080);
$proxy->agent($agent);
$proxy->start();

原理は、実際のプロクシの前に、応答ヘッダに認証情報を自動で追加するローカルプロクシを挟むだけ。ただし、認証方式が Basic 認証じゃないと使えないし、認証情報が決め打ちなので複数ユーザーで共有できない。それと、なぜか cygrunsrv ではうまく動かなかった。その辺は要分析だけど、まぁいいか。