/*
* 反 CC 攻撃は死ぬほど憂鬱になります、不滅のバージョン。
*
※1秒間に2回以上更新されると、5秒ほどアクセスが遅くなります。
*/
$cc_min_nums = '1' //回数、更新回数 ;
$cc_url_time = '5' //秒、遅延時間 ;
//$cc_log = 'cc_log.txt' //この動作ログを有効化します ;
$cc_forward = 'http://localhost' //URLにリリース ;
//-----------------------------------------------
//戻りURL
$cc_uri = $_SERVER['REQUEST_URI']?$_SERVER['REQUEST_URI']:($_SERVER['PHP_SELF']?$_SERVER['PHP_SELF']:$_SERVER['SCRIPT_NAME']);
$site_url = 'http://'.$_SERVER ['HTTP_HOST'].$cc_uri;
//セッションを有効にする
if( !isset( $_SESSION ) ) session_start();
$_SESSION["訪問者"] = true;
if ($_SESSION["訪問者"] <> true){
echo "<script>setTimeout("window.location.href ='$cc_forward';", 1);</script>";
//header("場所: ".$cc_forward);
終了します;
}
$タイムスタンプ = 時間();
$cc_nowtime = $timestamp ;
if (session_is_registered('cc_lasttime')){
$cc_lasttime = $_SESSION['cc_lasttime'];
$cc_times = $_SESSION['cc_times'] + 1;
$_SESSION['cc_times'] = $cc_times;
}その他{
$cc_lasttime = $cc_nowtime;
$cc_times = 1;
$_SESSION['cc_times'] = $cc_times;
$_SESSION['cc_lasttime'] = $cc_lasttime;
}
//実際のIPを取得します
if (isset($_SERVER)){
$real_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}その他{
$real_ip = getenv("HTTP_X_FORWARDED_FOR");
}
//print_r($_SESSION);
//IPを解放する
if (($cc_nowtime - $cc_lasttime)
if ($cc_times>=$cc_min_nums){
if(!empty($cc_log)) cc_log(get_ip(), $real_ip, $cc_log, $cc_uri) // ログを生成します
echo "お待ちください。後でもう一度お試しください!<script>setTimeout("window.location.href ='$site_url';", 5000);</script>";
//printf('更新が速すぎます。お待ちください。');
//header("場所: ".$cc_forward);
終了します;
}
}その他{
$cc_times = 0;
$_SESSION['cc_lasttime'] = $cc_nowtime;
$_SESSION['cc_times'] = $cc_times;
}
//记录cc日志
関数 cc_log($client_ip, $real_ip, $cc_log, $cc_uri){
$temp_time = date("Y-m-d H:i:s", time() + 3600*8);
$temp_result = "[".$temp_time."] [クライアント ".$client_ip."] ";
if($real_ip) $temp_result .= " [real ".$real_ip."] ";
$temp_result .= $cc_uri 。 「ん」;
$handle = fopen ("$cc_log", "rb");
$oldcontent = fread($handle,filesize("$cc_log"));
fclose($handle);
$newcontent = $temp_result 。 $oldcontent;
$fhandle=fopen("$cc_log", "wb");
fwrite($fhandle,$newcontent,strlen($newcontent));
fclose($fhandle);
}
//获取在線IP
関数 get_ip() {
グローバル $_C;
if(empty($_C['client_ip'])) {
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$client_ip = getenv('HTTP_CLIENT_IP');
elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$client_ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$client_ip = $_SERVER['REMOTE_ADDR'];
}
$_C['client_ip'] = $client_ip ? $client_ip : '不明';
}
return $_C['client_ip'];
}
?>
|