Cloudflare Workers 可以通过设置 referer 检查来防止图片盗链,以下是实现方式:
-
在 Cloudflare 控制面板中启用 Workers 功能。
-
创建一个新的 Workers 脚本,并复制以下代码:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const referer = request.headers.get('Referer')
const requestUrl = new URL(request.url)
// 如果没有 referer,则返回 403 Forbidden 错误
if (!referer) {
return new Response('Forbidden', { status: 403 })
}
const refererUrl = new URL(referer)
// 如果 referer 与请求 URL 的主机名不匹配,则返回 403 Forbidden 错误
if (refererUrl.hostname !== requestUrl.hostname) {
return new Response('Forbidden', { status: 403 })
}
// 允许访问原始图片
const response = await fetch(request)
return response
}
-
将该脚本保存并部署到 Cloudflare 应用程序。
-
现在在网站中嵌入图片时,需要在 img 标签中添加 Referer 信息,例如:
<img src="https://example.com/image.png" referrerpolicy="no-referrer">
这样可以确保浏览器不会泄漏 referer 信息,防止其他网站通过伪造 referer 窃取图片。