You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium使用时出现content-length异常增大问题是什么原因?

Selenium提交表单请求体异常增大常见成因及排查方案

这是Selenium搭配旧版本ChromeDriver使用时的常见问题,核心成因集中在以下几类:

  • ChromeDriver内置网络跟踪逻辑异常:v93版本ChromeDriver存在已知的网络层bug,自动化会话默认开启的请求日志捕获功能,会在提交包含二进制内容的表单时,将浏览器缓存的其他同域资源、请求链路日志意外注入到POST请求体中,直接导致content-length暴增。
  • 表单隐藏字段被意外修改:如果脚本中使用了无差别的元素定位、全局send_keys操作,或者注入的JS脚本存在逻辑漏洞,很容易误修改表单内隐藏的CSRF令牌、会话校验字段的内容,将页面缓存的base64格式图片、DOM结构数据写入隐藏字段,随表单一起提交。
  • 文件上传逻辑缺陷:如果表单包含图片上传操作,v93版本ChromeDriver的原生send_keys上传逻辑存在冗余写入问题,会重复读取文件内容、或者将本地文件的全路径、系统缓存的额外二进制数据写入请求体,而非仅写入文件本身的有效内容。
  • 会话缓存污染:若Selenium启动Chrome时未开启无痕模式,之前会话留存的本地存储、缓存数据可能被附加到同域POST请求中,导致请求体异常增大。

快速排查方案

  1. 启动Chrome时添加--incognito、--disable-extensions、--disable-plugins参数,禁用所有非必要功能后复测请求大小
  2. 开启ChromeDriver的性能日志,捕获Selenium提交表单时的完整请求payload,对比手动提交的payload定位冗余内容来源
  3. 若为图片上传场景,可替换为JS注入的方式绕过ChromeDriver原生上传逻辑,示例代码如下:
# Python 环境JS注入上传文件示例
with open("test.png", "rb") as f:
    img_content = f.read()
js = """
const file = new File([new Uint8Array(arguments[1])], arguments[0], {type: 'image/png'});
const dt = new DataTransfer();
dt.items.add(file);
document.querySelector('input[type="file"]').files = dt.files;
"""
driver.execute_script(js, "test.png", img_content)

内容的提问来源于stack exchange,提问作者Matthew Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:45:02