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

使用Python Requests无法获取目标接口有效响应,求原因及解决方法

问题描述

我尝试从链接http://www.elahmad.com/tv/watchtv.php?id=mbc_max获取特定响应字符串,以此自动获取有效的流媒体链接(该链接可通过浏览器开发者工具获取)。

在浏览器中打开上述网站并进入开发者工具后,目标响应来自接口http://www.elahmad.com/tv/watchtv.php(直接打开该接口地址无法得到数据)。我用以下Python脚本尝试请求,但始终得到输出“Oops!”:

import requests

headers = {
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Language': 'en-US,en;q=0.9',
    'Connection': 'keep-alive',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Origin': 'http://www.elahmad.com/tv/watchtv.php?id=mbc_max',
    'Referer': 'http://www.elahmad.com/tv/watchtv.php?id=mbc_max',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
}


data = {
    '9c37d4962012cec32e950d14f90021bd': 'mbc_max',
}

response = requests.post('http://www.elahmad.com/tv/watchtv.php',headers=headers, data = data , verify=False)

print(response.text)

请问我遗漏了什么?


可能的原因及解决方法

  • 缺少会话Cookie:浏览器访问页面时会自动获取并携带站点设置的Cookie,你的脚本没有维护会话。先发送GET请求访问目标页面,保存Cookie后再发送POST请求。可以用requests.Session()自动管理Cookie,示例:

    import requests
    
    session = requests.Session()
    # 先访问页面获取Cookie
    session.get('http://www.elahmad.com/tv/watchtv.php?id=mbc_max', verify=False)
    
    headers = {
        # 调整Origin为根域名
        'Origin': 'http://www.elahmad.com',
        'Referer': 'http://www.elahmad.com/tv/watchtv.php?id=mbc_max',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest',
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Accept-Language': 'en-US,en;q=0.9',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    }
    
    # 注意:字段名可能需要从页面源码提取,这里先保留原字段做示例
    data = {
        '9c37d4962012cec32e950d14f90021bd': 'mbc_max',
    }
    
    response = session.post('http://www.elahmad.com/tv/watchtv.php', headers=headers, data=data, verify=False)
    print(response.text)
    
  • Origin头配置错误:Origin头应该是站点的根域名http://www.elahmad.com,而不是带参数的完整页面URL,修改后再尝试请求。

  • 表单字段可能是动态生成的:你POST的字段名9c37d4962012cec32e950d14f90021bd大概率是页面加载时动态生成的哈希值,每次会话可能都会变化。需要先爬取页面源码,用正则或HTML解析工具提取这个动态字段名,再填入POST数据中。

  • 检查是否遗漏其他请求参数:再次对照浏览器开发者工具中的请求详情,确认请求方法、表单数据的所有键值对、请求头是否完全匹配,比如是否有Cookie之外的其他隐藏字段被遗漏。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:37:50