多くのプロキシサーバーが設定している値を取得する。
ただし合法的なプロキシサーバーのみ。
検証
getValueByProxy()関数のダンプ
array(1) {
["REMOTE_HOST"]=>
string(49) "ec2-3-135-190-107.us-east-2.compute.amazonaws.com"
}
getValueByProxy()関数のソースコード
$data=getValueByProxy();
var_dump($data);
/**
* Proxyが設定した値を取得する。
*
* 正規のプロキシサーバーにのみ対応。
* webProxyはminiProxyで確認。
*
* @return Proxy設定したと思われる値の配列。空配列の場合、Proxy未使用か、より違法性の高いProxyサーバー。
*
*/
function getValueByProxy(){
$data=array();//Proxy設定データ
//多くのプロキシサーバーソフトが設定しているキーのリスト
$keys=array(
'HTTP_SP_HOST',
'HTTP_VIA',
'HTTP_CLIENT_IP',
'HTTP_FORWARDED',
'HTTP_X_FORWARDED_FOR',
'HTTP_FROM',
'REMOTE_HOST'//webProxy用
);
foreach($keys as $key){
if(isset($_SERVER[$key])){
$data[$key]=$_SERVER[$key];
}
}
if(preg_match('/via|squid|gate|httpd|proxy|cache|gateway|www|anonymous|keeper/i', $_SERVER['HTTP_USER_AGENT']) ){
$data['HTTP_USER_AGENT']=$_SERVER['HTTP_USER_AGENT'];
}
return $data;
}