Scrapy 2.6.0 & 2.6.1 发布,Python 爬虫框架
Scrapy 是一套基于 Twisted 的异步处理框架,纯 Python 实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片。它也可以用于广泛的目的,从数据挖掘、监控到自动测试等。
v2.6.0 更新内容如下:
- cookie handling 的安全修复(详见下文)
- Python 3.10 支持
- asyncio 支持不再被认为是实验性的,并且无论你的 Python 版本如何,都可以在 Windows 上开箱即用
- Feed 导出现在支持
pathlib.Path输出路径和每个 Feed 项目过滤和后处理
安全漏洞修复
-
当一个定义了 cookie 的请求对象得到一个重定向响应,导致一个新的请求对象被安排,原请求对象中定义的 cookie 不再被复制到新的请求对象中。
如果你在一个请求对象上手动设置了 Cookie header,并且重定向 URL 的域名与原始请求对象的 URL 的域名不完全匹配,那么你的 Cookie header 现在会从新的请求对象中删除。
攻击者可以利用旧行为来访问你的 cookie。参阅 cjvr-mfj7-j4j8 安全公告了解更多信息。
注意:在定义你的 cookie 时,仍然可以通过定义共享域的后缀(例如 example.com 和任何子域)作为 cookie 域,使不同域之间共享 cookie。更多信息参见
Request类的文档。 -
当在响应的 Set-Cookie header 中收到的或在 Request 对象中定义的 cookie 的域被设置为公共后缀 <https://publicsuffix.org/>_ 时,除非 cookie 域与请求域相同,否则 cookie 现在被忽略。
攻击者可以利用旧行为将受控域中的 cookie 注入到你的 cookiejar 中,该 cookiejar 可能会发送到不受攻击者控制的其他域。参阅 mfjm-vh54-3f96 安全公告了解更多信息。
v2.6.1 更新内容如下:
- 修复了2.6.0版本中引入的回归问题,该问题会在跟随重定向时取消设置请求方法。