apache服务器.htaccess屏蔽所有搜索引擎蜘蛛/爬虫访问网站图片资源(避免带宽占用)

搭建一个图片资源站,供给其他网站使用该资源站的图片,但由于搜索引擎蜘蛛,或人为伪造爬虫攻击,导致资源站带宽被占用,以下加了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防盗链,在许可域名里加入允许使用资源图片的域名。

相关推荐
咖丨喱1 小时前
【修复miracast连接兼容性问题,优化信道协商流程】
服务器·后端·asp.net
wanhengidc1 小时前
云手机 高算力 快速便捷
运维·服务器·科技·游戏·智能手机
饕餮争锋1 小时前
Linux 常用命令分类详解
linux·运维·服务器
咖丨喱1 小时前
【修复miracast协商失败问题】
服务器·数据库·asp.net
wanhengidc1 小时前
云手机如何进行数据备份
运维·服务器·科技·智能手机·云计算
阿巴~阿巴~1 小时前
HTTP头部字段:高效通信的关键
服务器·网络·网络协议·http·http头部字段
minji...1 小时前
Linux 进程控制(三) (进程程序替换,exec系列函数)
linux·运维·服务器
Xの哲學1 小时前
Linux TTY子系统深度剖析
linux·服务器·算法·架构·边缘计算
moringlightyn1 小时前
Linux---基础IO(文件理解 文件接口使用 文件系统层面)
linux·运维·服务器·c语言·笔记·系统·文件