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

开发Nitrado服务器自动日志下载器时遭遇404错误求助

Nitrado服务器日志下载器404错误修复方案

问题概述

开发的DayZ Nitrado服务器自动日志下载器,调用nitrAPI时出现404错误,无法拉取日志文件到本地。

错误原因分析

  1. API端点路径错误:原代码硬编码的日志目录路径不符合Nitrado文件服务器的实际结构,且未正确获取文件服务器的访问地址。
  2. 认证方式不规范:直接使用账号密码访问API并非Nitrado官方推荐的认证方式,可能导致权限验证失败或路径解析错误。
  3. 日志目录定位错误: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:03:19