B
图床-faq
如何防护
自己利用网站服务器的nginx的某个目录/images来作为md图床使用,如何防止别人利用爬虫程序来爬取我网站图床里/images下的所有图片呢?
防止爬虫爬取网站/images
目录下的图片,你可以采取以下几种措施来保护你的Nginx服务器上的图床:
修改 robots.txt 文件
- 在你的网站根目录下创建或修改
robots.txt
文件,使用Disallow
语句来告诉遵守规则的爬虫不要爬取/images
目录。
plaintextUser-agent:*Disallow:/images/
但是请注意,不是所有的爬虫都会遵守
robots.txt
的规则,恶意爬虫通常会忽视这个文件。NOTE
但是,在哪里创建呢?
- 在你的网站根目录下创建或修改
使用 HTTP 基本认证
- 通过在Nginx中配置HTTP基本认证,要求用户输入用户名和密码才能访问
/images
目录。
nginxlocation/images/ {auth_basic "Restricted Access";auth_basic_user_file /path/to/htpasswd;}
这个方法可以有效防止未授权的用户访问图片,但如果密码泄露或被破解,仍然存在风险。
- 通过在Nginx中配置HTTP基本认证,要求用户输入用户名和密码才能访问
限制IP访问
- 如果你的图床仅供特定用户或系统使用,你可以通过设置允许列表来限制只有特定的IP能够访问
/images
目录。
nginxlocation/images/ {allow 192.168.1.1;# 允许的IP地址deny all;# 拒绝其他所有请求}
- 如果你的图床仅供特定用户或系统使用,你可以通过设置允许列表来限制只有特定的IP能够访问
限制 Referer
- 通过检查 HTTP Referer 头来限制图片只能由你网站上的页面引用。
nginxlocation~*\.(gif|png|jpe?g)$ {valid_referers none blocked yourdomain.com *.yourdomain.com;if($invalid_referer) {return403;}}
这个方法可以一定程度上阻止图片被其他网站直接引用,但
Referer
头可以被伪造,因此并不是完全可靠的。使用防爬虫规则
- 通过设置一些防爬虫的规则来阻止爬虫。例如,使用
limit_req_module
和limit_conn_module
来限制每个IP的访问频率和连接数。
nginxhttp{limit_req_zone $binary_remote_addr zone=images:10m rate=5r/m;limit_conn_zone $binary_remote_addr zone=addr:10m;}server{location/images/ {limit_req zone=images burst=10 nodelay;limit_conn addr 3;}}
- 通过设置一些防爬虫的规则来阻止爬虫。例如,使用
加密图片名称
- 定期更改
/images
目录的图片文件名,并使用不容易被预测的命名模式。这样即使有人访问到了一部分图片,但在你更新命名后他们的链接也会失效。
- 定期更改
设置CORS策略
- 如果你想防止图片被其他网站直接引用,你可以通过设置CORS策略来实现。
nginxlocation/images/ {if($http_referer !~*^(https?:add_header 'Access-Control-Allow-Origin''yourdomain.com';}}
请记住,没有一种方法是万能的,可能需要结合使用多种策略来有效保护你的服务器。另外,确保对服务器进行定期的安全检查和维护,以便及时发现并处理安全漏洞。