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防盗链,在许可域名里加入允许使用资源图片的域名。

相关推荐
我命由我123453 小时前
匈牙利命名法
java·服务器·后端·学习·java-ee·kotlin·学习方法
小田的博客3 小时前
SAP MM 供应商银行主数据更新报错!message R1228!
android·java·服务器
牢姐与蒯3 小时前
Linux基本指令及知识点(二)
linux·运维·服务器
去伪存真20253 小时前
数字样机、态势推演与3D汇报场景下的平台选型对比
运维·服务器
Elastic 中国社区官方博客4 小时前
使用 Elasticsearch open inference API 对 OpenAI chat completions 进行支持
大数据·elasticsearch·搜索引擎·全文检索·jenkins
Richard.Wong6 小时前
Windows IIS 服务器部署 Vue3 前端项目详细流程
服务器·前端·windows
Nemo_XP6 小时前
C# gridlookupedit选中内容重复还原操作
服务器·前端·c#
我不满意8 小时前
在windows服务器上安装oracle 11g,怎么配置后,默认安装的监听地址是内网IP,而不是127.0.0.1
运维·服务器
tedcloud1238 小时前
Kimi-K3 部署指南:大模型应用开发环境搭建实践
linux·运维·服务器·开源·音视频
深念Y9 小时前
ZTE_UZ901_NVRAM经验总结
linux·服务器·网络·嵌入式硬件·嵌入式·随身wifi