代码之家  ›  专栏  ›  技术社区  ›  Xantium

403(禁止)将Fortnite Tracker api与一起使用时出错urllib.request请求

  •  1
  • Xantium  · 技术社区  · 8 年前

    我正在尝试从Fortnite tracker api获取用户统计信息。

    我有一个api密钥,并使用正确的url作为 indicated in the documentation

    模板url:

    https://api.fortnitetracker.com/v1/profile/{platform}/{epic-nickname}
    

    所需url:

    https://api.fortnitetracker.com/v1/profile/pc/xantium0
    

    如果我在浏览器中使用此链接 {"message":"No API key found in request"} (因为我没有传递API密钥)所以链接应该是正确的。另外,如果我没有用urllib传递api键,那么我仍然会得到一个403错误。

    我已经检查了如何在请求中传递头: How do I set headers using python's urllib?

    到目前为止,这个代码是:

    import urllib.request as ur
    
    request = ur.Request('https://api.fortnitetracker.com/v1/profile/pc/xantium0', headers={'TRN-Api-Key' : 'xxx'})
    
    response = ur.urlopen(request)
    
    print(response.read())
    

    运行时,我得到以下错误:

    urllib.error.HTTPError: HTTP Error 403: Forbidden
    

    403签出为:

    http403是由HTTP服务器传送给客户机的标准HTTP状态码,用于指示服务器理解请求,但不会实现请求。有许多子状态错误代码提供了用403状态代码响应的更具体原因。

    https://en.wikipedia.org/wiki/HTTP_403

    如果我不在头中传递api键,则响应是相同的。

    我只能想到三个原因这个代码不起作用:

    • 我传递了错误的标题名称(即,它不是 TRN-Api-Key )
    • 我的代码是不正确的,我实际上没有传递头到服务器
    • 我被禁了

    我的问题是我认为我的代码 对的:

    documentation :

    urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
    

    我通过了考试 url 我已经通过了考试 headers (不与 data 辩论)。api文档还提到它应该在头文件中传递。

    我也很确定我需要使用 TRN Api密钥 如api文档所示:

    TRN-Api-Key: xxx
    

    也在 this question (使用Ruby):

    header = {
        key: "TRN-Api-Key: Somelong-api-key-here"
    }
    

    或者我已经被禁止(这是可能的,虽然我15分钟前就拿到了钥匙)有没有办法检查?是否返回此错误?

    是什么阻止我获取用户统计数据?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Federico Rubbi    8 年前

    尝试使用 requests ,一个快速的,广泛使用的模块。

    import requests
    
    
    url = 'https://api.fortnitetracker.com/v1/profile/pc/xantium0'
    headers = {
        'TRN-Api-Key' : 'xxx'
    }
    
    response = requests(url, headers=headers)
    
    print('Requests was successful:', response.ok)
    print(response.text)
    

    如果不起作用,您可以使用浏览器访问url,然后检查请求: 在Firefox中按Cntrl+Shift+E,在Chrome中按Cntrl+E(或用Cntrl+Shift+I检查,然后进入网络)。“按下” https://api.fortnitetracker.com/v1/profile/pc/xantium0 “并更改标题。在Firefox上有修改和重发按钮。检查响应,并最终尝试更改头api密钥名称。

    希望这有帮助,让我知道。