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

Python发送POST请求携带多个同名参数实现站点登录的问题咨询

Python发送携带多个同名参数POST请求的解决方案

错误原因

你当前的写法存在核心问题:Python字典不支持重复键,你定义的字典中后面出现的p_arg_names会直接覆盖前面的取值,最终提交的POST请求里仅会保留最后一个p_arg_names参数,和BurpSuite抓包得到的真实请求结构不符,因此请求失败。

正确实现方式

使用Python的requests库发送请求时,不要用字典类型传递请求参数,改为使用元组列表格式传递,每个参数对应一个(参数名, 参数值)的元组,即可保留多个同名参数:

import requests

# 按Burp抓包的参数顺序编写元组列表
post_data = [
    ('p_flow_id', '134'),
    ('p_flow_step_id', '101'),
    ('p_instance', qw.attrs['value']),
    ('p_page_submission_id', div.attrs['value']),
    ('p_request', 'LOGIN'),
    ('p_arg_names', '3808843104802386083'),
    ('p_t01', '%D9%8A%D8%B..etc'),
    ('p_arg_names', '1235407356725963'),
    ('p_t02', 'http://www.yu.edu.jo'),
    ('p_arg_names', '174514341787584706'),
    ('p_t03', 'username'),
    ('p_arg_names', '174514439646584711'),
    ('p_t04', 'gggg'),
    ('p_md5_checksum', '')
]

url = "https://sis.yu.edu.jo/pls/yuapps/f?p=134:101:165660500709862::::"
resp = requests.post(url, data=post_data)

注意事项

  • 参数顺序需要和BurpSuite抓包的顺序完全一致,避免部分后端服务会校验参数提交顺序
  • 不需要提前对参数值做URL编码,requests会自动对application/x-www-form-urlencoded类型的请求做编码处理,提前编码反而会导致二次编码异常
  • 其他HTTP请求库(如httpx)也支持相同的元组列表传参方式,用法一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:10