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

如何将BrowserStack文件上传CURL转为REST API并解决401认证问题?

解决BrowserStack自定义媒体上传的REST API自动化问题

核心结论

完全可以通过REST API实现BrowserStack自定义媒体上传的自动化,你遇到的401错误并非认证问题(GET/DELETE请求正常说明账号密码有效),而是请求格式不符合API要求导致的。

原CURL命令的REST API逻辑拆解

原CURL命令的关键细节:

  • -u "USERNAME:PASSWORD":对应HTTP请求的Authorization头,值为Basic [Base64编码的USERNAME:PASSWORD]
  • -F "file=@\file\TEST.xlsx":发起的是multipart/form-data类型的POST请求,将文件作为表单字段file上传,不需要额外传递文件名作为查询参数或JSON请求体

正确的REST API实现规则

要自动化这个流程,必须遵循以下要求:

  1. 认证方式:保持和GET/DELETE一致的Basic Auth,在请求头中添加Authorization: Basic <base64编码的用户名密码>
  2. 请求格式:必须使用multipart/form-data类型,不能用JSON请求体;文件必须通过表单字段file上传,字段名固定为file
  3. 无需额外参数:不需要将文件名作为查询参数或单独的请求参数传递,文件本身的元数据会被自动包含在multipart请求中

示例代码(以Python requests为例)

import requests
import base64

# 账号信息
username = "你的BrowserStack用户名"
password = "你的BrowserStack密码"

# 生成Basic Auth头
auth_str = f"{username}:{password}"
auth_bytes = auth_str.encode('ascii')
base64_auth_bytes = base64.b64encode(auth_bytes)
base64_auth_str = base64_auth_bytes.decode('ascii')
headers = {"Authorization": f"Basic {base64_auth_str}"}

# 上传文件
url = "https://api-cloud.browserstack.com/automate/upload-media"
files = {"file": open(r"\file\TEST.xlsx", "rb")}

response = requests.post(url, headers=headers, files=files)
print(response.status_code)
print(response.json())

401错误的原因分析

当你尝试用查询参数或JSON请求体传递文件名时,实际上改变了请求的Content-Type(比如变成application/json或application/x-www-form-urlencoded),而BrowserStack的上传API只接受multipart/form-data类型的请求。这种情况下,服务器可能因为请求格式不符合预期,返回了误导性的401错误,而非真正的认证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:13:12