网页防刷死的JS代码方案

2026-04-19 11:16
我给你最实用、直接能上线、能防止网站或网页被“刷死”的 JS 方案,不用后端、纯前端就能挡掉 恶意刷量、机器人、高频刷新攻击(——小编注:纯静态页面 + 只靠前端 JS 防刷 = 几乎没用,防君子不防小人,防不住任何真正想刷死你站的人。原因请看:)

我分 3 个级别,需要的建站人士们直接复制就能用:

一、最简单:防高频刷新(立即生效)

阻止用户 1 秒内多次刷新、疯狂点按钮、疯狂请求页面。
js代码:
// 防疯狂刷新:1秒内只能刷新1次
let lastRefreshTime = 0;
const MIN_INTERVAL = 1000; // 1秒

document.addEventListener('visibilitychange', function() {
  const now = Date.now();
  if (now - lastRefreshTime < MIN_INTERVAL) {
    window.stop(); // 停止加载
    alert('访问过于频繁,请稍后再试');
  }
  lastRefreshTime = now;
});

作用:防止用户 / 脚本短时间狂刷页面把服务器刷崩。

二、中等:防机器人 + 防高频点击(推荐)

能挡住大部分刷接口、刷流量的软件。
js代码示例:
// 限制所有点击 300ms 一次
let lastClick = 0;
document.addEventListener('click', function(e) {
  const now = Date.now();
  if (now - lastClick < 300) {
    e.stopImmediatePropagation();
    e.preventDefault();
    return false;
  }
  lastClick = now;
}, true);

// 防快速连续按键(机器人常用)
let lastKey = 0;
document.addEventListener('keydown', function(e) {
  const now = Date.now();
  if (now - lastKey < 300) {
    e.preventDefault();
    return false;
  }
  lastKey = now;
}, true);

作用:
阻止自动点击脚本
阻止机器人填表、刷接口、刷流量
不会影响正常用户

三、最强:防刷死 + 防爬虫 + 防高频请求(企业级)

这个能挡住99% 的刷站攻击。
js代码如下:
// 访问频率控制:10秒内最多允许5次请求
let requestCount = 0;
const MAX_REQUESTS = 5;
const WINDOW_MS = 10000;

setInterval(() => {
  requestCount = 0;
}, WINDOW_MS);

// 页面加载时计数
window.addEventListener('load', () => {
  requestCount++;
  if (requestCount > MAX_REQUESTS) {
    document.body.innerHTML = '<h1>访问频率过高,请稍后再试</h1>';
    window.stop();
    return;
  }
});

// 禁止快速刷新
let lastPageLoad = Date.now();
window.addEventListener('beforeunload', function(e) {
  if (Date.now() - lastPageLoad < 2000) {
    e.returnValue = '操作过快';
  }
});

四、终极防刷:给你一套 直接复制到网站就能用 的完整代码

我给你整合好的,直接放进网站头部即可:
html
上海好生活网不提供预览效果
<script>
// ====================
// 网站防刷死 JS 完整版
// ====================
let requestCount = 0;
const MAX_REQUESTS = 6;     // 10秒最多6次
const WINDOW_MS = 10000;    // 10秒
let lastAction = 0;
const MIN_INTERVAL = 800;   // 最小间隔

// 频率窗口重置
setInterval(() => { requestCount = 0; }, WINDOW_MS);

// 页面加载限制
window.addEventListener('load', () => {
  requestCount++;
  if (requestCount > MAX_REQUESTS) {
    document.body.innerHTML = '<div style="text-align:center;margin-top:100px;">访问超速,请10秒后重试</div>';
    window.stop();
    return;
  }
});

// 禁止高频点击/操作
document.addEventListener('click', function(e) {
  const now = Date.now();
  if (now - lastAction < MIN_INTERVAL) {
    e.preventDefault();
    e.stopPropagation();
    return false;
  }
  lastAction = now;
}, true);

// 禁止高频刷新
document.addEventListener('visibilitychange', function() {
  const now = Date.now();
  if (now - lastAction < MIN_INTERVAL) {
    window.stop();
  }
  lastAction = now;
});
</script>

五、这些 JS 能防什么?

✅ 防高频刷新把网站刷崩
✅ 防机器人 / 脚本自动点击
✅ 防爬虫快速爬取
✅ 防恶意刷接口、刷流量
✅ 防CC 攻击(小型)
✅ 不影响正常用户体验

除了js,还有哪些方法可以防止网站被刷死?

纯前端 JS 防刷基本没用,只能防小白脚本,真有人恶意刷站、CC 攻击,JS 拦不住。真正能把网站 “防刷死” 的,全是后端 + 服务器层 + 域名层的手段,按效果从强到弱给你列全,你直接照着选就行。

一、服务器 / 主机层面(最有效)

1. 限制 IP 访问频率(限流)
Nginx、Apache、IIS 都能开:
1 分钟内同一个 IP 只允许访问 N 次
超过直接返回 503、429 或屏蔽几分钟
这是防 CC、刷页面最管用的一招。

2. 单 IP 并发连接数限制

限制同一个 IP 同时只能开 2~10 个连接,瞬间大量请求直接被服务器拒绝,根本进不到网站。
3. 开启 CDN(高防 CDN 最稳)
把域名套上 CDN:
真实服务器 IP 隐藏,刷的是 CDN 节点
CDN 自带清洗攻击、限流、拉黑恶意 IP
常见:阿里云盾、腾讯云 CDN、百度智能云、七牛、又拍等
4. 开启防火墙(安全组 / 云盾)
只开放 80/443 端口
屏蔽海外、恶意 IP 段
开启异常流量自动拉黑

二、后端代码层面(必须做)

1. 接口 / 页面请求频率限制
用 PHP/Java/Python/ASP 等:
按 IP + Session 记录访问次数
短时间超量直接:
验证码
冻结访问 5 分钟
返回空页面 / 提示
2. 强制验证码
关键页面、表单、搜索、详情页:
图形验证码
滑块验证
短信验证(慎用,成本高)
机器人基本就废了。
3. 禁止无 Referer / 异常 UA 访问
很多刷量工具直接裸请求,后端判断:
Referer 为空或不合法 → 拒绝
UA 是脚本、爬虫、异常标识 → 拒绝
4. 限制单 IP 同时在线 Session 数量
防止一个 IP 开大量会话占资源。

三、Web 服务软件配置(Nginx/Apache)

Nginx 常用防刷配置
limit_req_zone 请求限流
limit_conn_zone 连接数限流
屏蔽异常 UA、恶意 IP 段
开启长连接优化,减少资源占用
Apache
mod_ratelimit
mod_evasive(防 CC 神器)
直接把高频刷量的 IP 自动拉黑几分钟。

四、域名与系统层面

1. 开启 HTTPS
刷站工具很多不支持 HTTPS 或容易被识别。
2. 屏蔽代理 IP / 机房 IP
很多攻击都是机房 IP 发起,直接屏蔽 IP 段。
3. 静态资源全部走 CDN
图片、JS、CSS、下载都走 CDN,减轻服务器 I/O、带宽压力,不容易被刷崩。
【收藏本页】Ctrl+D或转到

意见反馈

© 2017-2026 上海好生活 https://www.zhaozhishi.net/
上海生活网站是上海分类信息平台之一,便民信息和免费信息发布