开发Nitrado服务器自动日志下载器时遭遇404错误求助
Nitrado服务器日志下载器404错误修复方案
问题概述
开发的DayZ Nitrado服务器自动日志下载器,调用nitrAPI时出现404错误,无法拉取日志文件到本地。
错误原因分析
- API端点路径错误:原代码硬编码的日志目录路径不符合Nitrado文件服务器的实际结构,且未正确获取文件服务器的访问地址。
- 认证方式不规范:直接使用账号密码访问API并非Nitrado官方推荐的认证方式,可能导致权限验证失败或路径解析错误。
- 日志目录定位错误:DayZ服务器日志默认存放路径并非
/games/dayz/log,而是服务器的profile/logs目录。
修正后的代码实现
import requests def download_logs(server_id, api_key): # 初始化API请求头,使用官方推荐的API密钥认证 headers = {"Authorization": f"Bearer {api_key}"} base_api_url = f"https://api.nitrado.net/services/{server_id}" # 获取文件服务器的访问URL和认证令牌 fs_response = requests.get(f"{base_api_url}/gameservers/file_server", headers=headers) if fs_response.status_code != 200: print(f"获取文件服务器信息失败: {fs_response.status_code} {fs_response.text}") return fs_data = fs_response.json()["data"] fs_url = fs_data["file_server"]["url"] fs_token = fs_data["file_server"]["token"] # 指定DayZ日志文件的存放目录(可根据服务器实际配置调整) logs_directory = "/profile/logs" # 获取目标目录下的所有日志文件列表 files_response = requests.get(f"{fs_url}/list?dir={logs_directory}", headers={"X-Auth-Token": fs_token}) if files_response.status_code != 200: print(f"获取日志文件列表失败: {files_response.status_code} {files_response.text}") return # 筛选出目录中的文件(排除子目录) log_files = [file["name"] for file in files_response.json()["data"]["files"] if file["type"] == "file"] print(f"可用日志文件: {', '.join(log_files)}") # 遍历下载每个日志文件 for log_file in log_files: download_url = f"{fs_url}/download?dir={logs_directory}&file={log_file}" file_response = requests.get(download_url, headers={"X-Auth-Token": fs_token}) if file_response.status_code == 200: with open(log_file, 'wb') as local_file: local_file.write(file_response.content) print(f"已下载: {log_file}") else: print(f"下载{log_file}失败: {file_response.status_code} {file_response.text}") # 配置你的服务器ID和Nitrado API密钥(API密钥可在Nitrado账户设置中生成) server_id = "你的服务器ID" api_key = "你的Nitrado API密钥" # 启动日志下载任务 download_logs(server_id, api_key)
关键修复点说明
- 规范认证流程:使用Nitrado账户生成的API密钥进行认证,替代原代码的账号密码,符合官方API安全规范。
- 动态获取文件服务器地址:先通过API获取文件服务器的真实访问URL和令牌,避免硬编码路径导致的404错误。
- 修正日志目录路径:将日志目录调整为DayZ服务器默认的
/profile/logs,若服务器有自定义配置需对应修改。 - 使用官方API端点:调用Nitrado文件服务器的
list和download标准端点,确保路径解析正确。
内容的提问来源于stack exchange,提问作者BeardedWeazel
相关产品推荐
相关产品推荐

