LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Python requests 如何避免被 Gzip 炸弹攻击

admin
2024年3月9日 16:3 本文热度 531

Gzip 炸弹英文名为 Gzip bomb,是一种古老的被动防御手段。它的原理是当爬虫访问服务器网页资源时掺入一些高压缩比的压缩文件。如果爬虫自带解压缩功能(比如 Python requests 库)就会触发压缩炸弹,直接导致爬虫的客户端内存被撑爆。

以下是制作 Gzip 炸弹的命令:

dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip

PHP 版的服务端 Gzip bomb 例子;

PHP 代码来源链接:

《How to defend your website with ZIP bombs- the good old methods still work today》Posted on 2017-07-05
https://blog.haschek.at/2017/how-to-defend-your-website-with-zip-bombs.html

许多爬虫会使用 requests 库爬取网页资源,在使用 requests 库时如何避免被 gzip 炸弹攻击?

为了避免被 Gzip 炸弹攻击,在使用Python的 requests 库时,可以设置stream 参数为 True。这将使得响应内容不会被自动解压缩,而是在使用时才进行解压缩,从而可以限制解压缩的大小。

示例代码:

import requests
url = 'http://example.com/some_large_file.gz'
# 设置 stream=True 来避免自动解压缩response = requests.get(url, stream=True)
# 手动解压缩并限制解压缩的大小max_size = 1024 * 1024 * 10  # 限制解压缩的大小为10 MBdecompressed_data = bytearray()for chunk in response.iter_content(chunk_size=1024):    decompressed_data.extend(chunk)    if len(decompressed_data) > max_size:        # 如果解压缩后的数据大小超过了限制,则抛出异常        raise Exception("Response too large, possible gzip bomb attack.")

这样做可以确保请求不会在解压缩时耗尽系统资源,从而防止Gzip炸弹攻击。

参考:

《How to defend your website with ZIP bombs》https://blog.haschek.at/2017/how-to-defend-your-website-with-zip-bombs.html
《github flask bomb》https://github.com/khast3x/flaskbomb?tab=readme-ov-file
《Demo - 20G Payloads>https://asciinema.org/a/141464
《github gzip-bomb topics》https://github.com/topics/gzip-bomb
《几行代码直接炸了爬虫服务器》 作者kingnamehttps://mp.weixin.qq.com/s/Lzo6Pm09XsOqPkz3O91Mgg
《哈哈,有人爬我网站,我把他教育了一顿!》 程序员鱼皮https://mp.weixin.qq.com/s/OX4fwC9Oe3R6cHYoyXpskA


该文章在 2024/3/9 16:03:49 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved