Perlから、https(SSL)のコンテンツをProxy経由で取得するメモ
環境
- OS
- Red Hat Enterprise Linux ES4
- Squidバージョン
- 2.4.STABLE7
- perlバージョン
- 5.8.5
- その他モジュール
- Crypt-SSLeay-0.53 , openssl-0.9.7a-43.10
ソース
#!/usr/local/bin/perl use strict; use warnings; use LWP::UserAgent; my $proxy_url = "http://〜proxy〜:〜port〜"; $ENV{HTTPS_PROXY} = $proxy_url; # Crypt::SSLeay のproxy設定で'https'を使う # 最後にスラッシュ('/')を入れるとエラー my $url = "https://〜URL〜"; my $ua = LWP::UserAgent->new(); $ua->proxy('http', $proxy_url); # LWP::UserAgent のproxy設定は'http'のみ my $response = $ua->get($url); print $response->content;
Squid は https通信では CONNECTメソッド を使う方法を期待しているので、LWP::UserAgent のproxyの仕組みでは https は×。http のみ使用。Crypt::SSLeay で https の設定を行う。
どちらかで一緒にできればすっきりするのだが、そうはいかないようです。
ちなみに perldoc Crypt::SSLeay には
と書かれているけど、私の環境ではエラーになってしまいました。