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

Python3 requests空格编码异常问题排查及根因分析

带空格的请求参数无法正确传递问题解决

一开始以为是个简单问题,结果因为太基础反而搜不到解决方案。当请求参数包含空格时(比如name值为Test with space),Python脚本发送的请求无法返回预期结果,但手动访问https://www.example.com/api/card/list/?q=Test+with+space却能正常得到数据。

初始代码

url = "https://www.example.com/api/card/list/?q=" + name
r = requests.get(url)

修改后仍未解决的代码

尝试用urllib.parse.urlencode处理参数,问题依旧:

payload = {'q': name}
params = urllib.parse.urlencode(payload, quote_via=urllib.parse.quote)
url = "https://www.example.com/api/card/list/"
r = requests.get(url, params=params)

根因排查

后续发现请求通过HTTP代理发送到目标站点,问题根源在于Cloudflare的重定向机制:Cloudflare会将所有www子域名的流量重定向到主域名,并且在重定向过程中对请求参数进行了二次编码。原本已正确编码的空格会被再次转义,导致服务器无法识别原始参数。

解决方案

直接请求不带www的主域名,跳过Cloudflare的www重定向流程,让requests库正常处理参数编码即可:

payload = {'q': name}
url = "https://example.com/api/card/list/"
r = requests.get(url, params=payload)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:17:22