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

Power Query调用Yahoo Finance API:缺失参数与Headers配置咨询

解决Power Query调用Yahoo Finance API的验证问题

一、除Crumb外的必填核心要素

  • 绑定的Cookie:Crumb并非独立生效,它和Yahoo生成的会话Cookie(核心是B和YF-PROXY-CSRF字段)一一绑定。浏览器能正常请求是因为自动携带了当前会话的Cookie,而Power Query默认是全新会话,没有对应Cookie的话,仅传Crumb会被服务器拒绝。
  • 其他格式要求:symbols参数需保证格式正确,多个股票代码用逗号分隔(比如symbols=AAPL,MSFT),无其他强制必填的查询参数。

二、必须传入的Headers参数

调用Yahoo Finance API时,Headers至少要包含以下参数:

  • Cookie:值为从Yahoo Finance主页或getcrumb接口获取的完整Cookie字符串(必须包含和Crumb匹配的B、YF-PROXY-CSRF字段)
  • 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(Yahoo会拦截非浏览器UA的请求)
  • Accept:application/json, text/plain, */*,明确告知服务器返回JSON格式内容
  • YF-PROXY-CSRF:值和Crumb一致,部分场景下需单独传入,强化验证匹配

三、Power Query里的正确实现步骤示例

  1. 先获取有效Cookie:
    请求Yahoo Finance主页提取会话Cookie:
    let
        // 请求Yahoo主页获取会话Cookie
        homeResponse = Web.Contents("https://finance.yahoo.com/", [Headers=[#"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"]]),
        // 提取Cookie头
        cookie = ResponseHeaders(homeResponse){[Name="Set-Cookie"]}[Value]
    in
        cookie
    
  2. 用Cookie获取Crumb:
    携带Cookie请求getcrumb接口:
    let
        cookie = "替换成上一步获取的Cookie",
        crumbResponse = Web.Contents("https://query1.finance.yahoo.com/v1/test/getcrumb", [
            Headers=[
                #"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",
                #"Cookie"=cookie
            ]
        ]),
        crumb = Text.FromBinary(crumbResponse)
    in
        crumb
    
  3. 用Cookie+Crumb请求Quote数据:
    let
        cookie = "替换成有效Cookie",
        crumb = "替换成获取到的Crumb",
        ticker = "AAPL",
        url = "https://query2.finance.yahoo.com/v7/finance/quote?symbols=" & ticker & "&crumb=" & crumb,
        response = Web.Contents(url, [
            Headers=[
                #"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",
                #"Cookie"=cookie,
                #"Accept"="application/json, text/plain, */*"
            ]
        ]),
        jsonData = Json.Document(response)
    in
        jsonData
    

关键注意事项

  • Cookie和Crumb的有效期很短,每次请求前都需要重新获取,不能长期复用
  • Power Query里遇到凭证提示时,选择「匿名」,通过Headers手动传入Cookie和其他参数,不要使用系统默认凭证设置
  • 若仍报错,检查UA是否为最新浏览器标识,Cookie是否包含B和YF-PROXY-CSRF字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:12:58