搭建一个图片资源站,供给其他网站使用该资源站的图片,但由于搜索引擎蜘蛛,或人为伪造爬虫攻击,导致资源站带宽被占用,以下加了apache规则限制,拦截大部分。
# 功能:屏蔽所有搜索引擎蜘蛛/爬虫访问网站图片资源(避免带宽占用)
# 支持屏蔽的图片格式:jpg、png、gif、jpeg、bmp、ico、webp(常见图片格式全覆盖)
# 核心:PHP等脚本文件正常访问,仅拦截爬虫访问图片
<IfModule mod_rewrite.c>
# 启用重写引擎(核心前提)
RewriteEngine On
Options +FollowSymLinks -Indexes
###########################################################################
# 说明:仅禁止"不存在的脚本文件"或"恶意路径",正常存在的PHP文件可直接访问
###########################################################################
# 去掉无效的 RewriteCond % !^$,替换为"仅拦截非文件/非目录的脚本请求"(避免误拦正常PHP)
# 不是真实存在的文件
RewriteCond %{REQUEST_FILENAME} !-f
# 不是真实存在的目录
RewriteCond %{REQUEST_FILENAME} !-d
# 禁止后缀名
RewriteRule ^.*\.(php|php3|php4|php5|php6|php7|php8|pht|phtml|asp|aspx|jsp|exe|perl|cgi|asa)$ - [F,L]
# 1. 屏蔽高频异常IP段
<Limit GET POST>
Order Allow,Deny
Allow from all
# 屏蔽已知恶意爬虫IP
Deny from 113.73.43.155
Deny from 119.133.123.220
Deny from 218.14.62.179
# 屏蔽整个IP段(如果需要)
Deny from 14.122.
Deny from 14.212.
</Limit>
###########################################################################
# 2. 图片资源访问限制(仅针对图片,不影响脚本)
###########################################################################
<FilesMatch "\.(jpg|jpeg|png|gif|bmp|ico|webp)$">
# 限制并发/限速(需对应模块,默认注释)
# MaxConnPerIP 10
# BandwidthModule On
# ForceBandWidthModule On
# Bandwidth all 1024000
</FilesMatch>
# 3. 阻止特定User-Agent(如果确定是恶意爬虫)
SetEnvIfNoCase User-Agent "^Mozilla/5\.0.*Chrome/(114\.0\.0\.0|13[3-5]\.0\.0\.0).*" bad_bot
SetEnvIfNoCase User-Agent "Chrome/5[8-9]\.0\.3029\." bad_bot
# 关键字尽量覆盖各种蜘蛛 UA 中常见的标识
SetEnvIfNoCase User-Agent "spider" bad_bot
SetEnvIfNoCase User-Agent "bot" bad_bot
SetEnvIfNoCase User-Agent "crawl" bad_bot
SetEnvIfNoCase User-Agent "crawler" bad_bot
SetEnvIfNoCase User-Agent "slurp" bad_bot
SetEnvIfNoCase User-Agent "wget" bad_bot
SetEnvIfNoCase User-Agent "python-requests" bad_bot
SetEnvIfNoCase User-Agent "curl" bad_bot
# 主流搜索引擎
SetEnvIfNoCase User-Agent "googlebot" bad_bot
SetEnvIfNoCase User-Agent "googleother" bad_bot
SetEnvIfNoCase User-Agent "bingbot" bad_bot
SetEnvIfNoCase User-Agent "baiduspider" bad_bot
SetEnvIfNoCase User-Agent "sogou" bad_bot
SetEnvIfNoCase User-Agent "yandex" bad_bot
SetEnvIfNoCase User-Agent "duckduck" bad_bot
SetEnvIfNoCase User-Agent "semrush" bad_bot
SetEnvIfNoCase User-Agent "ahrefs" bad_bot
SetEnvIfNoCase User-Agent "mj12" bad_bot
SetEnvIfNoCase User-Agent "bytespider" bad_bot
SetEnvIfNoCase User-Agent "tiktokspider" bad_bot
SetEnvIfNoCase User-Agent "360spider" bad_bot
SetEnvIfNoCase User-Agent "yisouspider" bad_bot
# 关键修改:仅拒绝 bad_bot 访问图片,不影响PHP等脚本
# <FilesMatch "\.(jpg|jpeg|png|gif|bmp|ico|webp)$">
Order Allow,Deny
Allow from all
Deny from env=bad_bot
# </FilesMatch>
# 4. 限制特定目录的访问频率(使用mod_evasive或mod_security更佳)
# 这里用简单的rewrite规则限制
RewriteCond %{REQUEST_URI} ^/.*\.(jpg|jpeg|png|gif|bmp|ico|webp)$ [NC]
RewriteCond %{REMOTE_ADDR} ^113\.73\. [OR]
RewriteCond %{REMOTE_ADDR} ^119\.133\. [OR]
RewriteCond %{REMOTE_ADDR} ^218\.14\. [OR]
RewriteCond %{REMOTE_ADDR} ^14\.(122|212|144)\.
RewriteRule .* - [F,L]
###########################################################################
# 5. 增强UA检测(仅针对图片,修复误拦问题)
###########################################################################
# 定义正常浏览器UA格式
SetEnvIfNoCase User-Agent "Mozilla/5\.0.*Windows NT.*Chrome/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+.*Safari/[0-9]+\.[0-9]+" normal_browser
SetEnvIfNoCase User-Agent "Mozilla/5\.0.*Macintosh.*Chrome/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+.*Safari/[0-9]+\.[0-9]+" normal_browser
SetEnvIfNoCase User-Agent "Mozilla/5\.0.*Android.*Chrome/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+.*Safari/[0-9]+\.[0-9]+" normal_browser
# 如果不是正常浏览器格式且访问图片资源,则拒绝
RewriteCond %{ENV:normal_browser} !^1$
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|png|gif|bmp|ico|webp)$ [NC]
RewriteRule .* - [F,L]
</IfModule>
也可以不用该规则,直接进行404防盗链,在许可域名里加入允许使用资源图片的域名。
