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

使用Python requests.post()提交数据至textarea失败,无法查询域名归属

问题分析与解决办法

核心问题1:请求参数的键错误

你代码里__RequestVerificationToken=这个键多了个末尾的等号,正确的键名应该是__RequestVerificationToken,这个错误会导致服务器无法识别验证参数,直接忽略你的请求。

核心问题2:硬编码的验证Token无效

__RequestVerificationToken是服务器动态生成的,每次访问页面都会刷新,你写死的这个值早就失效了,必须先访问查询页面,从页面源码里提取最新的Token。

核心问题3:缺少必要请求头

网站会检查请求合法性,比如User-Agent要模拟浏览器标识,Referer要表明请求来源,还有Cookie需要和GET页面时保持一致,否则会被判定为非法请求。

修正后的代码示例

import requests
from bs4 import BeautifulSoup

# 目标地址
base_url = 'http://icp.chinaz.com/searchs'
session = requests.Session()  # 使用Session保持Cookie会话

# 第一步:先GET页面,获取Token和Cookie
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
response = session.get(base_url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 提取页面中的验证Token
token = soup.find('input', {'name': '__RequestVerificationToken'}).get('value')

# 第二步:构造POST请求参数
data = {
    'hosts': 'qq.com',
    'btn_search': '查询',  # 直接用中文,requests会自动编码,无需手动转成%E6%9F%A5%E8%AF%A2
    '__RequestVerificationToken': token
}

# 第三步:发送POST请求
post_response = session.post(base_url, data=data, headers=headers)
print(post_response.content.decode('utf-8'))

额外注意事项

  • 必须使用requests.Session()保持会话,这样GET获取的Cookie会自动带到POST请求里。
  • 如果网站有反爬机制,后续可能需要处理验证码等逻辑,但当前先解决参数传递的核心问题。
  • 提交按钮的文本直接用中文即可,requests会自动完成URL编码转换,不用手动处理。

内容的提问来源于stack exchange,提问作者赵天姿

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:40:46