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

Python构造form data提交换行分隔textarea参数异常如何解决

问题根因

你构造表单参数的方式和浏览器实际提交的格式不匹配:

  • 网页的<textarea>文本域提交时,整个输入内容是作为单个字符串字段上报的,域内的换行在HTTP表单里会被编码为\r\n(即CRLF换行,对应你抓包里看到的URL编码%0D%0A),不是拆分成多个同名参数上报。
  • 你之前传入列表["Random1", "Random2"]的写法,会让请求库把参数序列化为list=Random1&list=Random2的多同名字段格式,和抓包得到的list=Random1%0D%0ARandom2格式完全不符,服务端解析时识别不到分隔的多值,才会返回"list字段至少需要包含2个条目"的报错。
  • 额外注意你代码里format字段的值写的是plain,和抓包得到的html不一致,这个参数值错误也可能导致请求校验失败。
正确构造方式

把list字段的多个取值用\r\n拼接成单个字符串即可,以Python最常用的requests库为例,正确代码如下:

from datetime import date
import requests

# 按实际业务需求生成日期值
actual_date = date.today().strftime("%Y-%m-%d")
# 核心:textarea多值用\r\n拼接为单个字符串
list_value = "\r\n".join(["Random1", "Random2"])

form_data = {
    "list": list_value,
    "format": "html",  # 保持和抓包参数值一致
    "rnd": f"date.{actual_date}"
}

# 发起POST请求,替换为实际的目标接口地址
response = requests.post(url="目标接口地址", data=form_data)
调试校验方法

构造完请求可以先打印请求的body确认格式是否和抓包一致:

# 调试用:打印实际编码后的请求体,确认和抓包的URL编码内容匹配
print(response.request.body)
# 正常输出应为 b'list=Random1%0D%0ARandom2&format=html&rnd=date.xxxx-xx-xx' 格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:48:54