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

使用Python requests库登录网站遇错误:Cannot POST /az/login

问题解决:requests登录返回Cannot POST及登录方式疑惑

问题描述

尝试用Python的requests库登录https://edvgerial.kapitalbank.az/az/login,代码如下:

import requests
s = requests.session()
login_url = 'https://edvgerial.kapitalbank.az/az/login'
s.headers.update({"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"})
csrf_token=s.get(login_url).cookies.get('_csrf')
payload = { 
    "loginMethod":"PIN", 
    "pin": "My_pin", 
    "password":"My_password", 
    "_csrf": csrf_token
}
res=s.post(url=login_url, data=payload)
print(res.text)

网站返回:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /az/login</pre>
</body>
</html>

同时对登录方式的选择存在疑惑。

解决步骤

1. 修正POST目标URL

/az/login是登录页面的展示URL,而非表单提交的接口地址。用浏览器开发者工具(F12)确认真实接口:

  • 打开登录页,切换到「网络」标签
  • 手动提交登录请求,查看请求列表里的POST请求,复制其真实接口地址(通常是类似/api/auth/login这类路径)
  • 将代码中的login_url替换为该真实地址

2. 验证CSRF Token的获取方式

部分网站的CSRF Token并非存在Cookie中,而是嵌入在页面HTML的隐藏输入框里:

  • 用BeautifulSoup解析页面提取Token:
from bs4 import BeautifulSoup

response = s.get(login_url)
soup = BeautifulSoup(response.text, 'html.parser')
csrf_token = soup.find('input', {'name': '_csrf'})['value']

3. 完善请求头信息

除User-Agent外,可能需要补充Referer、Content-Type等必要头:

s.headers.update({
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    "Referer": login_url,
    "Content-Type": "application/x-www-form-urlencoded"
})

关于登录方式的说明

  • 若选择PIN登录,需确认网站是否要求先调用切换登录模式的前置接口(比如发送请求告知服务器使用PIN验证),再提交凭证。通过开发者工具查看正常登录的完整请求流程,确认是否有前置请求。
  • 检查pin和password的字段名是否与页面表单一致:查看登录输入框的name属性,确保payload中的字段名完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:50:08