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

无法获取go_session_id Cookie致请求400错误,求解决方案代码

无法获取go_session_id Cookie导致POST请求400错误

当前通过requests.Session()访问https://payment.mts.ru/后,获取到的Cookie中没有go_session_id参数,调用https://sso.mtsbank.ru/api/v2/login接口时返回400错误,提示请求格式错误(缺失必要参数)。

原代码

import requests, fake_useragent
user = fake_useragent.UserAgent().random
headers = {'user-agent': user}
number = '+79614722233'
sess = requests.Session()
r = sess.get('https://payment.mts.ru/', headers=headers)
print(r)
print(sess.cookies.get_dict())
r = sess.post('https://sso.mtsbank.ru/api/v2/login', headers=headers, json={'login': number[1:]})
print(r)
print(r.text)

原代码返回结果

return (<Response [200]>
{'TS016bb39a': '012019f3d42797fbeffa4e2cbd9f9d87c1ca95471b9a4cee3cb32c4aabb7088b2e61e457ecdf4a6a42515b7871d4904eaef2d8c76eaa224fe90825b8edfd74caa67da8e490edf6ae95b4ef18e2db2ff4eb902a57d53af4a72c2631f9d94785f0112f9d586f382052eefbf098a255f1a98151c8bda0', '.AspNetCore.Antiforgery.q1sNu47QVQs': 'CfDJ8NxAinrLot9AhyO3UZA71zHHTSizyDYnxj0ckopYqbIjHextEQGQfbOf4lgrDa4z2u4S65qZF5yAkFtp0Woz3RN6UY-zNUYfdP1gEgPBHSlui7NU95w0Zd_PGxHZ6ENdtvB9Niuk8XUVwYL_w4EgH9w', '.AspNetCore.RegionId': 'MOW', 'StickyID': '!f3egRLHvs4AE7gopFL1Kx71Z9S8d2pjo/pE18UVcgfWfT96HpuNFY8A6uJsr1bkvJIBEMJ0Bh4fwow=='}
<Response [400]>
{"error":"invalid_request","error_description":"The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed","error_id":"fc6ce41836f1b2296ce26f83f4bdee7a"}
)

解决方法

go_session_id是由sso.mtsbank.ru域名设置的Cookie,原代码仅访问了payment.mts.ru,未触发目标域名的Cookie生成逻辑。需要先访问sso.mtsbank.ru下的登录页面(即请求详情中的Referer地址),再发送登录请求。

修改后的代码

import requests
from fake_useragent import UserAgent

# 生成符合浏览器特征的User-Agent
user_agent = UserAgent().random
headers = {
    'User-Agent': user_agent,
    'Accept': '*/*',
    'Accept-Language': 'ru,en;q=0.9',
    'Origin': 'https://sso.mtsbank.ru',
    'Referer': 'https://sso.mtsbank.ru/login/mtsmoney/auth/'
}

number = '+79614722233'
sess = requests.Session()

# 先访问SSO登录页面,获取go_session_id Cookie
login_page_url = 'https://sso.mtsbank.ru/login/mtsmoney/auth/'
r = sess.get(login_page_url, headers=headers)
print("登录页面响应状态:", r)
print("获取到的Cookie:", sess.cookies.get_dict())

# 发送登录请求
login_api_url = 'https://sso.mtsbank.ru/api/v2/login'
payload = {'login': number[1:]}
r = sess.post(login_api_url, headers=headers, json=payload)
print("登录接口响应状态:", r)
print("登录接口返回内容:", r.text)

关键说明

  • 必须先访问sso.mtsbank.ru域名下的页面,才能触发服务器设置go_session_id Cookie
  • 补充Origin和Referer请求头,模拟真实浏览器的请求行为,避免被反爬拦截
  • 使用同一个Session实例,确保Cookie自动携带到后续请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:27:01