使用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
相关产品推荐
相关产品推荐

