今天跟大家聊聊我捣鼓的 IIS 防盗链,说起来这事儿也是被逼的。
之前我的小破站,流量不大,也没太在意图片啥的被人盗链。结果,最近服务器带宽突然飙升,一查,好家伙,不少网站直接引用我的图片,白嫖我的流量,这哪行!
于是我开始研究 IIS 防盗链。网上搜一堆教程,看的我头大。啥 ISAPI_Rewrite,啥 HTTP 头文件,听着就晕。
没办法,硬着头皮开始搞。我找到一个 IIS URL 重写模块,这玩意儿是必须的,IIS 本身不支持直接搞 URL 重写,得靠它。我记得我是去微软官网下载的,挺大的一个文件,下好久。
下好之后,就开始安装。安装之前,我先把 IIS 服务停,怕出幺蛾子。然后,一路“下一步”,没啥特别的。装完之后,重启 IIS 。
接下来就是配置重写规则。我新建一个 `*` 文件,放到网站根目录。这个文件是用来写重写规则的,内容大概是这样的:
[ISAPI_Rewrite]
CacheClockRate 3600
RepeatLimit 32
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.你的域名. [NC]
RewriteRule .\.(gifjpgjpegpng)$ /images/* [I,O,NC]
简单解释一下:
- `CacheClockRate` 和 `RepeatLimit` 是缓存相关的,不用太在意。
- `RewriteCond %{HTTP_REFERER} !^$` 表示如果 `HTTP_REFERER` 不为空,就执行下面的规则。
- `RewriteCond %{HTTP_REFERER} !.你的域名. [NC]` 表示如果 `HTTP_REFERER` 不是我的域名,也执行下面的规则。`[NC]` 表示忽略大小写。要把“你的域名”换成你自己的域名。
- `RewriteRule .\.(gifjpgjpegpng)$ /images/* [I,O,NC]` 表示如果请求的是 gif, jpg, jpeg, png 图片,就重定向到 `/images/*`。`[I,O,NC]` 是一些标志位,不用太深究。
然后,我还准备一张防盗链的图片 `*`,放到网站的 `/images/` 目录下。这张图就是告诉那些盗链的人,别瞎搞。
保存好 `*` 文件,重启 IIS。这时候,我赶紧打开浏览器,随便找个盗链我图片的网站,刷新一下,果然,图片都变成 `*`!
搞定!虽然过程有点折腾,但是效果还不错。现在我的网站带宽稳定多,那些白嫖党也老实。
- 安装 IIS URL 重写模块。
- 然后,配置 `*` 文件,设置重写规则。
- 准备一张防盗链图片,放到网站目录下。
就这么简单,你也赶紧试试!能省不少带宽!