目录
前言
网站使用了腾讯云EdgeOne(腾讯云边缘安全加速平台,简称:腾讯云EO),网站的静态资源文件(例如图片文件、模板JS、CSS)被盗刷流量,可通过腾讯云EO的边缘函数配置防盗链,保护网站内容、静态文件,防盗刷流量。

使用方法
一、在EdgeOne控制台找到函数管理,点击新建函数。

二、点击防盗链。

三、随便输入函数名称,点击创建并部署,弹出小窗口点击暂不需要。

四、在右上角点击编辑代码。

五、复制以下函数代码。
// 定义需要保护的图片文件后缀
const IMAGE_TYPES = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'ico', 'js', 'css', 'woff', 'woff2', 'ttf', 'mp4',];
// 定义允许的 Referer 域名白名单(请替换为你的实际域名)
const ALLOWED_HOSTS = [
'https://wp.bufanz.com',
'https://shop.bufanz.com'
];
async function handleRequest(request) {
const url = new URL(request.url);
const pathname = url.pathname;
// 判断是否为图片资源,非图片资源直接放行
const ext = pathname.split('.').pop().toLowerCase();
if (!IMAGE_TYPES.includes(ext)) {
return fetch(request);
}
// 获取请求头中的 Referer
const referer = request.headers.get('Referer');
// 如果 Referer 为空,判定为直接访问,拒绝
if (!referer) {
return new Response('Forbidden: Direct access denied', { status: 403 });
}
// 检查 Referer 是否在白名单中
const isAllowed = ALLOWED_HOSTS.some(host => referer.startsWith(host));
if (!isAllowed) {
// 来源不在白名单,返回 403 或 404(推荐用 404 隐藏资源存在性)
return new Response('Forbidden: Hotlinking not allowed', { status: 404 });
}
// 校验通过,正常回源获取图片
return fetch(request);
}
addEventListener('fetch', event => {
// 当函数代码抛出未处理的异常时,边缘函数会将请求转发回源站
event.passThroughOnException();
event.respondWith(handleRequest(event.request));
});
六、删除原函数代码,再粘贴刚复制的函数代码,按下图操作,第2行修改需要防盗链保护的文件后缀,代码第6~7行修改成你的域名,点击右上角的保存并部署。

七、返回到函数管理的页面,点击新增触发规则。

八、按照下图步骤配置触发条件,匹配类型选择文件后缀,右边的值填写要保护的文件后缀,点击下面的+ And。

九、按照下图步骤依次选择匹配类型、运算符和网站域名,最后点击确定保存触发规则。

十、打开网站随便选个图片复制图片链接,在浏览器无痕模式直接访问图片链接,页面显示404错误,边缘函数和触发规则配置成功。

使用注意事项
1、边缘函数的防盗链功能对主域名无效(例如https://bufanz.com),如果你的网站域名不带www.,建议全加上www.,可以使用301重定向,主域名跳转到www.二级域名。

2、要增加新的文件后缀,先修改函数代码,增加新的文件后缀(例如:mp4)。

2.1、同样在触发规则增加新的文件后缀。









