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

如何检测API请求是否来自Excel/PowerBI?

检测Excel/PowerBI的API请求:User-Agent及替代方案

一、通过User-Agent识别Excel/PowerBI

可以通过User-Agent头识别这两类应用的请求,它们的请求头里会包含明确的标识关键词,以下是典型格式:

  • Excel:不同版本的格式略有差异,但核心关键词Microsoft Excel会被保留,比如:
    Microsoft Excel/16.0.15726.20188 (Windows NT 10.0; Microsoft Excel 16.0.15726; Pro)
    
    部分旧版本可能仅显示Microsoft Excel。
  • PowerBI:请求头会包含PowerBI或Microsoft Power BI标识,比如桌面端:
    Microsoft Power BI Desktop/2.118.614.0 (Windows NT 10.0; Microsoft Power BI Desktop 2.118.614.0; Pro)
    
    云端PowerBI服务的请求则会带有PowerBI Service相关标识。

你可以在API中通过匹配这些关键词来判断请求来源,不过要注意:User-Agent是可自定义的,若涉及安全校验,不能仅依赖此字段。

二、无需本地运行API获取请求头的方法

既然无法本地调试API,你可以通过以下方式获取Excel/PowerBI的请求头信息:

  • 临时请求捕获服务:
    搭建一个简单的本地HTTP服务,用工具(如ngrok)将其暴露到公网,然后在Excel/PowerBI中配置这个公网地址作为数据源,就能捕获到完整的请求头。比如用Python Flask快速实现:
    from flask import Flask, request
    app = Flask(__name__)
    
    @app.route('/', methods=['GET', 'POST'])
    def capture_headers():
        return "\n".join([f"{k}: {v}" for k, v in request.headers.items()])
    
    if __name__ == '__main__':
        app.run(port=5000)
    
    启动后用ngrok映射5000端口,得到一个公网URL,在Excel中通过「数据>自Web」输入该URL,就能在Flask服务的响应中看到Excel发送的所有请求头。
  • 查阅官方文档:
    微软官方文档会记录这类工具发起HTTP请求的默认头信息,比如PowerBI的数据源请求规范、Excel的OData请求文档中,都有关于User-Agent的说明。
  • 模拟请求验证:
    参考已知的User-Agent格式,用Postman、curl等工具模拟请求,验证API的识别逻辑是否生效。比如curl命令:
    curl -H "User-Agent: Microsoft Excel/16.0.15726.20188" https://your-test-endpoint.com
    

三、额外提示

  • 不同版本的Excel/PowerBI可能会更新User-Agent格式,建议定期测试并调整匹配规则。
  • 如果是敏感场景的校验,建议结合其他机制(如IP白名单、请求签名、认证令牌),避免仅依赖可篡改的User-Agent字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:01:06