Skip to content

Instantly share code, notes, and snippets.

@binux
Created January 6, 2012 15:49
Show Gist options
  • Save binux/1571137 to your computer and use it in GitHub Desktop.
Save binux/1571137 to your computer and use it in GitHub Desktop.
请求信息输出
<html>
<head>
<title>CS_ProxyJudge ver 1.0</title>
</head>
<body bgcolor="#808080">
<font color="#FFFFFF"><B>
<PRE>
<?
//=======================================================================
// 修改记录:
// 2006-09-26 去掉Referer的判断,避免代理通过统计屏蔽代理验证通过
// 2006-10-13 增加读取IP的方式
// 2006-11-28 增加对代理国家的判断
//=======================================================================
$HTTPHeaderArray[0] ="_PROXY";
$HTTPHeaderArray[1] ="FORWARDED";
$HTTPHeaderArray[2] ="HTTP_CACHE_CONTROL";
$HTTPHeaderArray[3] ="HTTP_CLIENT_IP";
$HTTPHeaderArray[4] ="HTTP_FORM";
$HTTPHeaderArray[5] ="HTTP_FORWARDED";
$HTTPHeaderArray[6] ="HTTP_MAX_FORWARDS";
$HTTPHeaderArray[7] ="HTTP_PRAGMA";
$HTTPHeaderArray[8] ="HTTP_PROXY";
$HTTPHeaderArray[9] ="HTTP_PROXY_CONNECTION";
$HTTPHeaderArray[10] ="HTTP_VIA";
$HTTPHeaderArray[11] ="HTTP_X";
$HTTPHeaderArray[12] ="HTTP_X_BLUECOAT_VIA";
$HTTPHeaderArray[13] ="HTTP_X_FORWARDED_FOR";
$HTTPHeaderArray[14] ="HTTP_X_HOST";
$HTTPHeaderArray[15] ="HTTP_X_REFERER";
$HTTPHeaderArray[16] ="HTTP_X_SERVER_HOSTNAME";
$HTTPHeaderArray[17] ="PROXY_";
$HTTPHeaderArray[18] ="PROXY_HOST";
$HTTPHeaderArray[19] ="PROXY_PORT";
$HTTPHeaderArray[20] ="PROXY_REQUEST";
$HTTPHeaderArray[21] ="REMOTE_IDENT";
$HTTPHeaderArray[22] ="REMOTE_USER";
$HTTPHeaderArray[23] ="HTTP_ACCEPT";
$HTTPHeaderArray[24] ="HTTP_ACCEPT_LANGUAGE";
$HTTPHeaderArray[25] ="HTTP_ACCEPT_ENCODING";
$HTTPHeaderArray[26] ="HTTP_USER_AGENT";
$HTTPHeaderArray[27] ="HTTP_CONNECTION";
$HTTPHeaderArray[28] ="REMOTE_PORT";
$HTTPHeaderArray[29] ="HTTP_REFERER";
$HTTPHeaderArray[30] ="HTTP_X_CLIENT_IP";
function VerifyerProxyLevel()
{
global $GLOBALS;
if (($GLOBALS["REMOTE_IDENT"]=="")
and ($GLOBALS["REMOTE_USER"]=="")
and ($GLOBALS["HTTP_PRAGMA"]=="")
and ($GLOBALS["HTTP_VIA"]=="")
and ($GLOBALS["HTTP_FORM"]=="")
and ($GLOBALS["HTTP_CLIENT_IP"]=="")
and ($GLOBALS["FORWARDED"]=="")
and ($GLOBALS["HTTP_FORWARDED"]=="")
and ($GLOBALS["HTTP_MAX_FORWARDS"]=="")
and ($GLOBALS["HTTP_X"]=="")
and ($GLOBALS["HTTP_X_FORWARDED_FOR"]=="")
and ($GLOBALS["HTTP_X_BLUECOAT_VIA"]=="")
and ($GLOBALS["HTTP_X_HOST"]=="")
and ($GLOBALS["HTTP_X_REFERER"]=="")
and ($GLOBALS["HTTP_X_SERVER_HOSTNAME"]=="")
and ($GLOBALS["HTTP_X_BLUECOAT_VIA"]=="")
and ($GLOBALS["HTTP_PROXY"]=="")
and ($GLOBALS["HTTP_PROXY_CONNECTION"]=="")
and ($GLOBALS["_PROXY"]=="")
and ($GLOBALS["PROXY_"]=="")
and ($GLOBALS["PROXY_HOST"]=="")
and ($GLOBALS["PROXY_PORT"]=="")
and ($GLOBALS["PROXY_REQUEST"]=="")
and ($GLOBALS["HTTP_CACHE_CONTROL"]=="")
){
return HIGH_ANONYMITY; //超级代理
}
if (($GLOBALS["HTTP_CLIENT_IP"]=="")
and ($GLOBALS["HTTP_X_CLIENT_IP"]=="")
and ($GLOBALS["FORWARDED"]=="")
and ($GLOBALS["HTTP_FORWARDED"]=="")
and ($GLOBALS["HTTP_MAX_FORWARDS"]=="")
and ($GLOBALS["HTTP_X"]=="")
and ($GLOBALS["HTTP_X_FORWARDED_FOR"]=="")
and ($GLOBALS["HTTP_X_BLUECOAT_VIA"]=="")
and ($GLOBALS["HTTP_X_HOST"]=="")
and ($GLOBALS["HTTP_X_REFERER"]=="")
and ($GLOBALS["HTTP_X_SERVER_HOSTNAME"]=="")
and ($GLOBALS["HTTP_X_BLUECOAT_VIA"]=="")
){
return ANONYMOUS; //匿名代理
}else{
return TRANSPARENT_PROXY; //透明代理
}
}
//取出所有HTTP提交的变量
//while ( list( $key, $val ) = each( $GLOBALS ) ) {
// echo $key."=".$val."\n";
//}
echo "----------------------------------------\n";
for ($i=0;$i<Count($HTTPHeaderArray);$i++){
if ($GLOBALS[$HTTPHeaderArray[$i]]!="")
echo $HTTPHeaderArray[$i]."=".$GLOBALS[$HTTPHeaderArray[$i]]."\n";
}
$szRemoteHost = $GLOBALS['REMOTE_HOST'];
$szRemoteAddr = $GLOBALS['REMOTE_ADDR'];
if ($szRemoteAddr=="")$szRemoteAddr=$_SERVER["REMOTE_ADDR"];
if( $szRemoteHost == $szRemoteAddr || $szRemoteHost == '' ) {
$szRemoteHost = gethostbyaddr($szRemoteAddr);
if( $szRemoteHost == '' ) $szRemoteHost = $szRemoteAddr ;
}
echo "\n";
echo "REMOTE_HOST=".$szRemoteHost."\n";
echo "REMOTE_ADDR=".$szRemoteAddr."\n";
$ProxyLevel =VerifyerProxyLevel();
//如果为超级代理,判断HOST是否与ADDR相同(是否全是IP格式地址)
if ($ProxyLevel=="HIGH_ANONYMITY"){
if ($szRemoteHost!=$szRemoteAddr){
$ProxyLevel="ANONYMOUS";
}
}
//有的代理提交的USER_AGENT可能修改为空,直接可判断是通过代理来的,该种代理建议少用
if ($GLOBALS["HTTP_USER_AGENT"]==""){ $ProxyLevel="TRANSPARENT_PROXY"; }
echo "----------------------------------------\n";
echo "CS_ProxyJudge Result=$ProxyLevel\n";
echo "----------------------------------------\n";
echo "\n\n";
?>
</PRE>
</B>
<font>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment