phpのcurlで認証が必要なプロキシ経由でアクセスする方法

phpでは全てのプロキシ認証方式を取り扱えるわけではない。

このパターンではプロキシをベーシック認証で構築する。

 

phpのソース

$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, $url);
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, implode('&',$postdata));
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($connection, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($connection, CURLOPT_PROXY, 'proxy_ip');
curl_setopt($connection, CURLOPT_PROXYPORT, 'proxy_port');
curl_setopt($connection, CURLOPT_PROXYUSERPWD, 'proxy_user:proxy_pass');
$response = curl_exec($connection);
curl_close($connection);

squid.confの設定

先に

#htpasswd -c /etc/squid/.htpasswd ユーザ名

でパスワードファイルを作っておく

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/.htpasswd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl pauth proxy_auth REQUIRED
http_access allow pauth