防盗链
约 351 字大约 1 分钟
2025-03-15
一、简介
一个简单的说明,假如在前端img标签
想要引用图片网站上的图片,当你将图片地址放到img标签
上想要显示的时候你发现,图片显示不了,这说明网站采用了防盗链。
二、原理
在请求头中一般会有 Referer
,它会自动携带当前网页的域名、协议、端口发送请求。有了 refer 信息,我们就可以来实现这个防盗链。
Referer: https://yuanbao.tencent.com/
我们在代码设置一个白名单,refer 信息不在白名单的地址,直接拦截其请求,返回 404、空数据、或者指定的版权获取渠道网页。
//导入 express
const express = require("express");
//创建应用对象
const app = express();
//声明中间件
app.use((req, res, next) => {
//检测请求头中的 referer 是否为 127.0.0.1
//获取 referer
let referer = req.get("referer");
if (referer) {
//实例化URL
let url = new URL(referer);
//获取 hostname
let hostname = url.hostname;
let whiteList = ["127.0.0.1"];
//判断请求地址是否在白名单里
if (!whiteList.includes(hostname)) {
//响应 404
res.status(404).send("<h1>404 Not Found</h1>");
return; // 拦截成攻以后,设置返回,避免代码继续向下执行。
}
}
next();
});
//静态资源中间件设置
app.use(express.static(__dirname + "/public"));
//监听端口, 启动服务
app.listen(3000, () => {
console.log("服务已经启动, 端口 3000 正在监听中....");
});
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于