跳到主要内容
CNode

express 防盗链模块

精华分享
Llellansin发布于 12 年前最后回复 10 年前
9103760

安装

npm install express-anti-leech

使用

var express = require('express'),
  path = require('path'),
  app = express();
  
var AntiLeech = require('express-anti-leech');

// 允许引用的域名白名单
var hosts = ['localhost', 'localhost:8004'];

// 反盗链类型
var exts = ['.png', '.jpg', '.jpeg', '.gif', '.swf', '.flv'];

// 盗链默认指向图片
var pictrue = "/images/default.png";

app.use(AntiLeech({
  allow: hosts,
  exts: exts,
  log: console.log, // 你也可以使用自己的方法来记录
  default: pictrue
}));

// 请在调用静态资源之前先使用反盗链模块
app.use(express.static(path.join(__dirname, 'public')));
app.set('port', process.env.PORT || 8004);

app.get('/', function(req, res) {
  res.redirect("/index.html");
});

app.listen(app.get('port'), function() {
  console.log("Express test server listening on http://localhost:" + app.get('port'));
});

测试效果图: express_anti_leech_1.jpg express_anti_leech_2.jpg localhost:8004 在白名单之中,而 127.0.0.1:8004 不在白名单中,所以 localhost:8004 下访问正常,而 127.0.0.1:8004 下则被重定向到指定的图片。

查看回复

回复 (9)

L
liangweidong#910 年前

测试

S
shangcloud#811 年前

S
snowdream#712 年前

挺棒的,支持一下~!

J
JerroldLee#612 年前

mark

L
lellansin#412 年前

感谢各位的支持。 关于 nginx 反向代理,个人觉得,node.js 既然已经包含了 webserver 的部分,有些东西用 node.js 来实现也是不错的。只不过目前 node 的 webserver 还不够给力。 而在已经用了 nginx 的情况下(在 node.js 之外又包了一层 webserver),使用 nginx 必然是效率更高的。 本模块的目的就是在没有使用 nginx 的情况下,用来防盗链。或者用了 nginx 但是不想配置的那么分散的人用的(非大型项目,算是程序员常见的懒惰行为吧。不过,说不定以后 node 更新,大家可以不用 nginx 反向代理了 ;) )。

O
okoala#312 年前

不过通常这类问题都是nginx来做的

C
chuchangming#212 年前

不错,不过我觉得还是在nginx之类的做好点、

C
coolicer#112 年前

有意思

参与回复

登录后即可参与回复。登录