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

HTML的method="POST"标签如何工作?能否用Python requests模拟对应请求?

解决方案

实现逻辑

  • 你遇到的是网站的中间身份校验跳转页,浏览器的自动跳转本质是执行JS提交页面内的隐藏POST表单,这个流程完全可以通过requests模拟实现。

具体实现步骤

  1. 用requests.Session()创建会话实例,自动维护请求上下文(包括Cookie、请求头关联等),和浏览器的会话逻辑一致。
  2. 第一次请求你的原始目标URL,拿到返回的中间页HTML。
  3. 解析HTML提取表单核心信息:
    • 表单action属性对应的POST提交地址
    • 三个隐藏输入框wa、wresult、wctx对应的value值
  4. 用同一个会话实例向提取到的POST地址提交表单数据,得到的响应就是你预期的目标页面内容。

示例代码

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

# 初始化会话
session = requests.Session()
# 可选:添加浏览器请求头避免被拦截
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
})

# 第一步:请求原始目标地址
origin_url = "你最初要访问的站点URL"
resp1 = session.get(origin_url)

# 第二步:解析中间页提取表单信息
soup = BeautifulSoup(resp1.text, "lxml")
form = soup.find("form", {"name": "hiddenform"})
# 处理相对路径的提交地址
post_url = urljoin(origin_url, form["action"])
post_data = {
    "wa": form.find("input", {"name": "wa"})["value"],
    "wresult": form.find("input", {"name": "wresult"})["value"],
    "wctx": form.find("input", {"name": "wctx"})["value"]
}

# 第三步:提交表单获取目标内容
resp2 = session.post(post_url, data=post_data)
# resp2.text 就是你需要的目标页面HTML内容
print(resp2.text)

注意事项

  • 如果提取到的action是相对路径,必须用urljoin拼接成完整的绝对路径再发起请求。
  • 若站点有额外的反爬校验,可根据浏览器实际请求的头信息补全session的headers参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:15:03