---
title: "PHP 代码浏览器检查防 CC 攻击 - 一纸忘忧"
description: "前几天，这个小博客一直被群里某大佬盯上攻击。由于我开启了 CDN，对方无法获取我的源 IP，于是转而对我的网站发起了大规模的 CC 攻击，搞得我是措手不及。"
canonical_url: "https://www.ikxin.com/article/php-cc-attack-defense"
last_updated: "2026-09-16T09:59:27.259Z"
locale: zh-cn
meta:
  "og:description": "前几天，这个小博客一直被群里某大佬盯上攻击。由于我开启了 CDN，对方无法获取我的源 IP，于是转而对我的网站发起了大规模的 CC 攻击，搞得我是措手不及。"
  "og:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~UEhQIOS7o-eggea1j-iniOWZqOajgOafpemYsiBDQyDmlLvlh7sgLSDkuIDnurjlv5jlv6c%2Cc_Article%2Ctitle_~UEhQIOS7o-eggea1j-iniOWZqOajgOafpemYsiBDQyDmlLvlh7s%2Cdescription_~5YmN5Yeg5aSp77yM6L-Z5Liq5bCP5Y2a5a6i5LiA55u06KKr576k6YeM5p-Q5aSn5L2s55uv5LiK5pS75Ye744CC55Sx5LqO5oiR5byA5ZCv5LqGIENETu-8jOWvueaWueaXoOazleiOt-WPluaIkeeahOa6kCBJUO-8jOS6juaYr-i9rOiAjOWvueaIkeeahOe9keermeWPkei1t-S6huWkp-inhOaooeeahCBDQyDmlLvlh7vvvIzmkJ7lvpfmiJHmmK~mjqrmiYvkuI3lj4rjgII%2CsiteName_~5LiA57q45b-Y5b-n%2CsiteHost_www.ikxin.com%2Cp_Ii9hcnRpY2xlL3BocC1jYy1hdHRhY2stZGVmZW5zZSI%2Cs_5g4my4O3zexubRxM.png"
  "og:image:alt": "PHP 代码浏览器检查防 CC 攻击 - 一纸忘忧"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "PHP 代码浏览器检查防 CC 攻击"
  "twitter:image": "https://www.ikxin.com/_og/d/h_630%2Ca_~UEhQIOS7o-eggea1j-iniOWZqOajgOafpemYsiBDQyDmlLvlh7sgLSDkuIDnurjlv5jlv6c%2Cc_Article%2Ctitle_~UEhQIOS7o-eggea1j-iniOWZqOajgOafpemYsiBDQyDmlLvlh7s%2Cdescription_~5YmN5Yeg5aSp77yM6L-Z5Liq5bCP5Y2a5a6i5LiA55u06KKr576k6YeM5p-Q5aSn5L2s55uv5LiK5pS75Ye744CC55Sx5LqO5oiR5byA5ZCv5LqGIENETu-8jOWvueaWueaXoOazleiOt-WPluaIkeeahOa6kCBJUO-8jOS6juaYr-i9rOiAjOWvueaIkeeahOe9keermeWPkei1t-S6huWkp-inhOaooeeahCBDQyDmlLvlh7vvvIzmkJ7lvpfmiJHmmK~mjqrmiYvkuI3lj4rjgII%2CsiteName_~5LiA57q45b-Y5b-n%2CsiteHost_www.ikxin.com%2Cp_Ii9hcnRpY2xlL3BocC1jYy1hdHRhY2stZGVmZW5zZSI%2Cs_5g4my4O3zexubRxM.png"
  "twitter:image:alt": "PHP 代码浏览器检查防 CC 攻击 - 一纸忘忧"
---

> Index of every page on this site: [llms.txt](https://www.ikxin.com/llms.txt)

# **PHP 代码浏览器检查防 CC 攻击**

2017.07.17 4,983  0

前几天，这个小博客一直被群里某大佬盯上攻击。由于我开启了 CDN，对方无法获取我的源 IP，于是转而对我的网站发起了大规模的 CC 攻击，搞得我是措手不及。

由于攻击来源的 IP 太多，手动拉黑几乎不可能完成。刚好想起百度云加速的智能防 CC 功能，它基于五秒盾的原理。我用 PHP 模拟了百度云加速的防 CC 机制，写了一个简单的防护脚本，今天分享给大家。

## PHP 防 CC 代码

 PHP

```
<?php
define('SYSTEM_ROOT', dirname(preg_replace('@\\(.*\\(.*$@', '', preg_replace('@\\(.*\\(.*$@', '', __FILE__))) . '/');
session_start();
date_default_timezone_set('Asia/Shanghai');
header('Content-Type: text/html; charset=UTF-8');

function getspider($useragent = '') {
    if (defined('CC_Defender') && CC_Defender == 2) return false;
    if (!$useragent) {
        $useragent = $_SERVER['HTTP_USER_AGENT'];
    }
    $useragent = strtolower($useragent);
    $spiders = [
        'baiduspider', 'googlebot', 'soso', 'bing', 'yahoo', 'sohu-search',
        'sogou', 'youdaobot', 'yodaobot', 'robozilla', 'msnbot', 'lycos',
        'ia_archiver', 'archive.org_bot', 'sitebot', 'mj12bot', 'gosospider',
        'gigabot', 'yrspider', 'jikespider', 'addsugarspiderbot', 'testspider',
        'etaospider', 'wangidspider', 'foxspider', 'docomo', 'yandexbot',
        'ezooms', 'sinaweibobot', 'catchbot', 'surveybot', 'dotbot', 'purebot',
        'ccbot', 'mlbot', 'adsbot-google', 'ahrefsbot', 'spbot', 'augustbot'
    ];
    foreach ($spiders as $spider) {
        if (strpos($useragent, $spider) !== false) return $spider;
    }
    return false;
}

if ($_GET['rand'] && $_SESSION['rand_session'] != $_GET['rand']) {
    header('Content-Type: text/html; charset=UTF-8');
    exit('<b>浏览器不支持 COOKIE 或访问异常！</b>');
}

if (!$_SESSION['rand_session']) {
    if (!getspider()) {
        $rand_session = md5(uniqid() . rand(1, 1000));
        $_SESSION['rand_session'] = $rand_session;
        exit("<!DOCTYPE HTML>
<html>
<head>
<meta charset=\"UTF-8\"/>
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\" />
<title>安全检查中...</title>
<script>
    var i = 5; 
    var intervalid; 
    intervalid = setInterval(\"fun()\", 1000); 
    function fun() { 
        if (i == 0) { 
            window.location.href = \"?{$_SERVER['QUERY_STRING']}&rand={$rand_session}\"; 
            clearInterval(intervalid); 
        } 
        document.getElementById(\"mes\").innerHTML = i; 
        i--; 
    } 
</script> 
<style>
html, body {width: 100%; height: 100%; margin: 0; padding: 0;}
body {background-color: #ffffff; font-family: Helvetica, Arial, sans-serif; font-size: 100%;}
h1 {font-size: 1.5em; color: #404040; text-align: center;}
p {font-size: 1em; color: #404040; text-align: center; margin: 10px 0 0 0;}
#spinner {margin: 0 auto 30px auto; display: block;}
.attribution {margin-top: 20px;}
</style>
</head>
<body>
<table width=\"100%\" height=\"100%\" cellpadding=\"20\">
<tr>
<td align=\"center\" valign=\"middle\">
<noscript><h2>请开启浏览器的 JavaScript 功能并刷新页面</h2></noscript>
<h1><span>浏览器安全检查中...</span></h1>
<p>该过程自动完成</p>
<p>请稍候，还剩 <span id=\"mes\">5</span> 秒</p>
</td></tr></table>
</body></html>");
    }
}
?>
```

将以上 PHP 代码添加到网站头部的 PHP 文件中（如 `index.php` 或其他主入口文件），即可启用防护。这样，只有通过安全验证并获得 COOKIE 的浏览器才能正常访问你的网站。

## 注意事项

1. 该方法仅适用于较小规模的攻击（如普通 CC 攻击）。
2. 如果遇到大量分布式肉鸡攻击（如 DDoS），此代码可能无能为力，建议使用专业的抗 DDoS 服务。
3. 遇到攻击时，保持低调、冷静处理，避免挑衅。

## **评论**

(0)

暂无评论，来说两句吧

## **发布评论**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.ikxin.com/#website","@type":"WebSite","description":"一纸忘忧的个人网站，关于技术探索与日常生活，记录 Web 开发、服务端与 DevOps 实践，分享软件工具、数码体验，以及代码之外的见闻与思考。","inLanguage":"zh-CN","name":"一纸忘忧","url":"https://www.ikxin.com/","workTranslation":[{"@id":"https://www.ikxin.com/zh-tw#website"},{"@id":"https://www.ikxin.com/ko#website"},{"@id":"https://www.ikxin.com/en#website"},{"@id":"https://www.ikxin.com/ja#website"}]},{"@id":"https://www.ikxin.com/article/php-cc-attack-defense#webpage","@type":"WebPage","description":"前几天，这个小博客一直被群里某大佬盯上攻击。由于我开启了 CDN，对方无法获取我的源 IP，于是转而对我的网站发起了大规模的 CC 攻击，搞得我是措手不及。","name":"PHP 代码浏览器检查防 CC 攻击","url":"https://www.ikxin.com/article/php-cc-attack-defense","isPartOf":{"@id":"https://www.ikxin.com/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://www.ikxin.com/article/php-cc-attack-defense"]}]}]}
```

## Sitemap

See the full [sitemap](https://www.ikxin.com/sitemap.md) for all pages.
