我分 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;
});
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);
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 = '操作过快';
}
});
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 完整版
// ====================
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、带宽压力,不容易被刷崩。
