使用带有urllib.request的Fortnite Tracker API时出现403(禁止)错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用带有urllib.request的Fortnite Tracker API时出现403(禁止)错误相关的知识,希望对你有一定的参考价值。
我试图从Fortnite跟踪器api获取用户统计信息。
我有一个api密钥,并使用正确的网址作为indicated in the documentation
模板网址:
https://api.fortnitetracker.com/v1/profile/{platform}/{epic-nickname}
所需网址:
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检查为:
HTTP 403是由HTTP服务器传送给客户端的标准HTTP状态代码,用于指示服务器理解该请求,但不会满足该请求。有许多子状态错误代码提供了使用403状态代码进行响应的更具体原因。
https://en.wikipedia.org/wiki/HTTP_403
如果我没有在标头中传递api密钥,则响应是相同的。
我只能想到这个代码不起作用的三个原因:
- 我通过了错误的标题名称(即它不是
TRN-Api-Key
) - 我的代码不正确,我实际上并没有将标头传递给服务器
- 我被禁止了
我的问题是我认为我的代码是正确的:
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
我通过了url
并且我通过了headers
(与data
争论混淆)。 api文档还提到它应该在头文件中传递。
我也很确定我需要使用TRN-Api-Key
,因为它在api文档中显示:
TRN-Api-Key: xxx
也在this question(使用Ruby):
header = {
key: "TRN-Api-Key: Somelong-api-key-here"
}
或者我被禁止了(虽然我在15分钟前得到了钥匙,这是可能的)有没有办法检查?这个错误会被退回吗?
什么阻止我获取用户统计信息?
尝试使用requests,一个pythonic,快速和广泛使用的模块。
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密钥名称。
希望这有帮助,请告诉我。
以上是关于使用带有urllib.request的Fortnite Tracker API时出现403(禁止)错误的主要内容,如果未能解决你的问题,请参考以下文章
使用带有urllib.request的Fortnite Tracker API时出现403(禁止)错误
如何在 Python 3 urllib.request.urlopen() 函数中传递带有空格的 URL? [复制]
python 3.7 urllib.request 不遵循重定向 URL
[Python系列-19]:爬虫 - urllib.request.urlopen()和urllib.request.get()的使用区别