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

使用Python脚本通过邮箱及Token-Reference实现Artifactory认证并下载文件

使用Python结合Requests库通过邮箱+Token-Reference认证并下载Jfrog Artifactory文件

核心思路

Jfrog Artifactory支持通过邮箱+访问令牌的方式进行认证,通常可以通过请求头传递认证信息,或者将邮箱作为用户名、令牌作为密码使用HTTP基本认证。以下是两种可行的实现方式,直接用Requests库完成认证和文件下载。


方式一:请求头携带邮箱与Bearer令牌

如果你的Token-Reference是Jfrog生成的访问令牌(Access Token),可以在请求头中同时指定邮箱和Bearer令牌:

import requests

# 配置参数
ARTIFACTORY_URL = "https://your-artifactory-instance.com/artifactory"
REPO_NAME = "your-repo-name"
FILE_PATH = "path/to/your/file.zip"  # 仓库内的文件路径
USER_EMAIL = "your-email@example.com"
TOKEN_REFERENCE = "your-token-reference-here"

# 构建完整的文件下载URL
download_url = f"{ARTIFACTORY_URL}/{REPO_NAME}/{FILE_PATH}"

# 设置请求头:携带邮箱和Bearer令牌
headers = {
    "X-JFrog-Email": USER_EMAIL,
    "Authorization": f"Bearer {TOKEN_REFERENCE}"
}

try:
    # 发送GET请求,流式下载(适合大文件)
    response = requests.get(download_url, headers=headers, stream=True)
    response.raise_for_status()  # 检查请求是否成功

    # 保存文件到本地
    with open("downloaded_file.zip", "wb") as f:
        for chunk in response.iter_content(chunk_size=8192):
            f.write(chunk)
    print("文件下载成功!")

except requests.exceptions.RequestException as e:
    print(f"下载失败:{str(e)}")

方式二:HTTP基本认证(邮箱作为用户名,令牌作为密码)

部分Jfrog实例支持将邮箱作为认证用户名,Token-Reference作为密码,通过HTTP基本认证方式传递:

import requests
from requests.auth import HTTPBasicAuth

# 配置参数
ARTIFACTORY_URL = "https://your-artifactory-instance.com/artifactory"
REPO_NAME = "your-repo-name"
FILE_PATH = "path/to/your/file.zip"
USER_EMAIL = "your-email@example.com"
TOKEN_REFERENCE = "your-token-reference-here"

download_url = f"{ARTIFACTORY_URL}/{REPO_NAME}/{FILE_PATH}"

try:
    # 使用HTTP基本认证发送请求
    response = requests.get(download_url, auth=HTTPBasicAuth(USER_EMAIL, TOKEN_REFERENCE), stream=True)
    response.raise_for_status()

    with open("downloaded_file.zip", "wb") as f:
        for chunk in response.iter_content(chunk_size=8192):
            f.write(chunk)
    print("文件下载成功!")

except requests.exceptions.RequestException as e:
    print(f"下载失败:{str(e)}")

关键说明

  • 替换所有your-xxx占位符为实际的Artifactory实例地址、仓库名、文件路径、邮箱和令牌。
  • 使用stream=True开启流式下载,避免大文件占用过多内存。
  • response.raise_for_status()会在请求返回错误状态码(如401未授权、404文件不存在)时抛出异常,方便排查问题。
  • 如果认证失败,先检查邮箱是否与令牌绑定、令牌是否有效(未过期、权限足够)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:45:20