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

Python使用requests爬取黄页网站发送POST请求返回404错误咨询

POST请求返回404的排查思路与修复方案

核心问题排查点

  • 错误的authority请求头:当前请求头中authority设置为www.google-analytics.com,与实际请求的目标域名www.yellowpages.vu不符,多数站点会校验该字段,匹配错误直接拒绝请求返回404
  • 重复无效的请求头:代码中重复定义了User-Agent、Referer、Origin三个字段,可能导致服务器解析头信息异常
  • 错误的Content-Type与content-length设置:当前Content-Type设为text/plain,表单提交的标准值应为application/x-www-form-urlencoded;同时手动设置content-length: 0,但实际请求携带了表单数据,会导致服务器认为请求体为空,路由匹配失败返回404
  • 硬编码的动态参数:代码中的cookie、ssid、以及data内的6f7efb93929c56901a56bdeab2f7e50c(CSRF令牌字段)都是和会话绑定的动态值,硬编码的过期参数会触发服务器的安全校验,直接拒绝访问
  • 请求路径校验:需要确认浏览器端实际发起搜索请求的路径是否为https://www.yellowpages.vu/search/index.php,路径拼写错误会直接返回404

修复方案

调整后代码示例

import requests
# 初始化会话自动管理cookie,无需手动硬编码
session = requests.Session()
# 先请求搜索页获取动态参数和有效cookie
search_page = session.get('https://www.yellowpages.vu/search/results')
# 从返回的HTML中提取最新的ssid、csrf令牌(6f7efb93929c56901a56bdeab2f7e50c),替换后续硬编码参数

headers = {
    'authority': 'www.yellowpages.vu',
    'cache-control': 'max-age=0',
    'sec-ch-ua': '"Chromium";v="94", "Google Chrome";v="94"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'upgrade-insecure-requests': '1',
    'origin': 'https://www.yellowpages.vu',
    # 修正Content-Type为表单提交标准类型
    'content-type': 'application/x-www-form-urlencoded',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36',
    'accept': '*/*',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    'referer': 'https://www.yellowpages.vu/search/results',
    'accept-language': 'en-US,en;q=0.9,pt;q=0.8'
    # 移除手动设置的content-length,requests会自动计算正确值
}

params = (
    ('reset', '1'),
)

# 以下动态参数需要替换为从search_page中提取的最新值
data = {
    'xt_search_for': 'car',
    'to_sid_list_1': '',
    'field_city': '',
    'ssid': '替换为提取到的最新ssid',
    'sid': '1',
    'task': 'search.search',
    'option': 'com_sobipro',
    'Itemid': '187',
    '6f7efb93929c56901a56bdeab2f7e50c': '替换为提取到的最新csrf令牌',
    'sectionid': '1',
    'default_query': '',
    'field_categories': '',
    'sp_search_for': 'car'
}

response = session.post('https://www.yellowpages.vu/search/index.php', headers=headers, params=params, data=data)
print(response.status_code)
print(response.text)

额外注意事项

  • 所有动态生成的参数不要硬编码,每次请求前先从站点页面中提取最新值
  • 优先使用requests.Session()管理会话,自动处理cookie的更新与携带
  • 若调整后依然返回404,可通过浏览器开发者工具的网络面板,对比自身请求与浏览器正常请求的差异,逐一排查头信息、参数的不同点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:24:04