GitHub 在调用 3-4 搜索后阻止我的访问令牌 API
GitHub blocks my access token after calling 3-4 search API
我正在使用 PyCurl 调用 GitHub 搜索 API 并提取一些信息。这是调用 API.
的代码片段
from io import BytesIO
import pycurl
url = f"https://api.github.com/search/code?q=import%2Bkeras+size:1..100+language:python&page=1&per_page=100"
output = BytesIO()
request = pycurl.Curl()
request.setopt(pycurl.HTTPHEADER, [f'Authorization: token {access_token}'])
request.setopt(request.URL, url)
request.setopt(request.WRITEDATA, output)
request.perform()
问题是 GitHub 仅在 3-4 个请求后就阻止了我的访问令牌。但是在 GitHub 文档中,每小时 5000 个请求被称为请求数量的限制。
我正在使用 Python 3.8
和 PyCurl 7.44.1
。
您有解决此问题的想法吗?
“搜索 API 有一个自定义速率限制,独立于管理其余 REST API 的速率限制”
您可以这样查看您的速率限制状态:
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/rate_limit
GitHub 对搜索请求有不同的速率限制,因为它们比普通的 API 调用要贵得多。您可以在端点 https://api.github.com/rate_limit
.
查询它们
但是,在您的情况下,您看到了二级速率限制,这意味着您正在做的事情看起来很可疑,因此您被阻止了。您可以找出原因的唯一方法是联系 GitHub 支持。
我要指出,最佳做法是使用唯一的标识 User-Agent
header,这样您的流量就可以与其他流量区分开来。这可能对这里有帮助,也可能没有帮助,但 libcurl 是一个非常常见的 user-agent,并且由于会有相当多的人将其用于滥用目的,因此您的流量可能因此被自动化系统标记.
最终,我在每个 API 请求之间添加了 5 秒的睡眠,问题得到解决。
感谢您的贡献。
我正在使用 PyCurl 调用 GitHub 搜索 API 并提取一些信息。这是调用 API.
的代码片段from io import BytesIO
import pycurl
url = f"https://api.github.com/search/code?q=import%2Bkeras+size:1..100+language:python&page=1&per_page=100"
output = BytesIO()
request = pycurl.Curl()
request.setopt(pycurl.HTTPHEADER, [f'Authorization: token {access_token}'])
request.setopt(request.URL, url)
request.setopt(request.WRITEDATA, output)
request.perform()
问题是 GitHub 仅在 3-4 个请求后就阻止了我的访问令牌。但是在 GitHub 文档中,每小时 5000 个请求被称为请求数量的限制。
我正在使用 Python 3.8
和 PyCurl 7.44.1
。
您有解决此问题的想法吗?
“搜索 API 有一个自定义速率限制,独立于管理其余 REST API 的速率限制”
您可以这样查看您的速率限制状态:
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/rate_limit
GitHub 对搜索请求有不同的速率限制,因为它们比普通的 API 调用要贵得多。您可以在端点 https://api.github.com/rate_limit
.
但是,在您的情况下,您看到了二级速率限制,这意味着您正在做的事情看起来很可疑,因此您被阻止了。您可以找出原因的唯一方法是联系 GitHub 支持。
我要指出,最佳做法是使用唯一的标识 User-Agent
header,这样您的流量就可以与其他流量区分开来。这可能对这里有帮助,也可能没有帮助,但 libcurl 是一个非常常见的 user-agent,并且由于会有相当多的人将其用于滥用目的,因此您的流量可能因此被自动化系统标记.
最终,我在每个 API 请求之间添加了 5 秒的睡眠,问题得到解决。
感谢您的贡献。