PlaywrightCapture安全漏洞CVE-2026-63175
PlaywrightCapture 是基于Playwright封装的Python网页采集库,用来替代老旧的Splash,专门一键抓取网页完整数据,开源BSD协议。
一、基本情况
PlaywrightCapture是开源Python库,底层完全封装Playwright,基于Playwright抓取并保存网页请求、Cookie、浏览器存储与截图数据。

PlaywrightCapture 是面向爬虫、资产探测场景封装的Python专用工具包,实现了一站式采集网页全套数据,省去开发者大量重复编码。
栋科技漏洞库关注到 PlaywrightCapture 类级可变状态共享漏洞,漏洞现在已经被追踪为CVE-2026-63175,漏洞CVSS 3.X评分为7.1。
二、漏洞分析
CVE-2026-63175是 PlaywrightCapture 中的安全漏洞,其 Capture 类在受影响版本中,
将 HTTP 头、Cookie、浏览器存储、HTTP 凭据、代理、User-Agent、地理定位及已捕获请求等运行时状态以可变类属性形式存储,
导致同一 Python 进程内并发或先后创建多个 Capture 实例时彼此共享这些状态,
可能造成不同用户或任务间的认证信息、Cookie、凭据及请求数据泄露,或使一个任务以另一个任务的认证/代理上下文对外发出请求。
受影响版本中,playwrightcapture/capture.py 文件的 Capture 类在 __init__ 之外的类体内,
将 _requests、_headers、_cookies、_storage、_viewport、_user_agent、_http_credentials、_geolocation、_timezone_id、
_locale、_color_scheme、_java_script_enabled、_capture_timeout、_proxy 等捕获专用配置与运行时数据声明为可变类属性,
因此这些字典、列表或对象在 Capture 类所有实例之间共享;
任何一个实例调用 headers、cookies、storage、proxy 等 setter 写入或在捕获过程中累积 _requests 时,
都会覆盖其他实例对应的同一份类属性,进而引发跨任务的认证、凭据与请求数据污染。
修复版本中通过将上述 14 个捕获专用字段从类体移到 Capture.__init__ 方法体内改为 self.xxx 实例属性,
并增加注释明确指出这些变量必须作为实例变量不得作为类变量,同时简化 storage setter 的早退判断为单条 if 条件,
确保每个 Capture 实例在构造时获得独立的初始状态,运行期间对实例属性的修改不再影响其他实例,
跨任务的状态泄露路径被切断;修复包含在 v1.40.3 版本的提交 1e354b9d8566f49dbb331410be24c7c295645d43 中。
三、影响范围
PlaywrightCapture < 1.40.3
四、修复建议
PlaywrightCapture ≥ 1.40.3
五、参考链接
管理员已设置登录后刷新可查看