网站内链布局,通过输入域名访问自己做的网站,江苏省和城乡建设门户网站,赣州做网站什么价格破除Github API接口的访问次数限制 1、Github介绍2、Github API接口2.1 介绍2.2 使用方法 3、Github API访问限制3.1 访问限制原因3.2 访问限制类别 4、Github API访问限制破除4.1 限制破除原理4.2 限制破除示例 1、Github介绍
Github#xff0c;是一个面向开源及私有软件项目… 破除Github API接口的访问次数限制 1、Github介绍2、Github API接口2.1 介绍2.2 使用方法 3、Github API访问限制3.1 访问限制原因3.2 访问限制类别 4、Github API访问限制破除4.1 限制破除原理4.2 限制破除示例 1、Github介绍
Github是一个面向开源及私有软件项目的托管平台也是全球最早且最大的项目代码托管平台在无数代码人心中有着不可撼动的地位。Github只支持使用Git作为唯一的版本库控制托管故名为Github。得助于Git强大的项目组织管理功能全球范围内无数的企业用户也被吸引使用Github完成团队项目的协助工作。 截止2023年11月17日Github在全球已有超过1亿的开发者用户大多数来自于美国、中国、印度超过90%的财富100强企业也选择使用Github。所有个人开发者用户与企业用户共同在Github上完成了约4.2亿个项目包含2.84亿个开源项目以及共计45亿次的开源贡献。 2、Github API接口
2.1 介绍
在 GitHub 汇聚了庞大的开源项目数据基础之上该平台为开发者和研究者提供了丰富的研究素材。为了更好地协助 GitHub 用户访问和有效组织这些数据GitHub 提供了公开的 APIApplication Programming Interface 接口用以调用其平台资源。通过Github APIGithub平台上公开的海量的数据得以轻松获取这对爬虫、搜索、推荐系统与代码漏洞检测等方面的研究带来的极大的便利与促进作用。
GitHub API采用RESTful风格的设计允许开发者通过 HTTP 请求访问 GitHub 上的各种资源如仓库Repositories、用户Users、问题Issues、分支Branches等。通过 GitHub API用户能够实现从查看存储库信息到管理问题, 以及提交、合并请求等各种操作。
2.2 使用方法 创建一个Github账户并获取认证信息。 大多数 GitHub API 操作都需要进行身份验证我们可以申请API Key (或者称为token凭证)进行身份验证。生成 API Key的步骤可以在 GitHub 平台里的个人设置中完成。 进入个人设置页面后点击左侧侧边栏的Developers Settings选项配置Github API Key。 Github身份认证支持auth与token两种验证方式其中auth为授权码认证方式其原理可参考这篇博客第三方登陆auth(github)token为凭证认证方式我们这里通过token方式进行认证。 先点击左边侧栏的Token(classic), 然后点击右边弹出页面的Generate new token按钮生成一个新的token。 之后设置token名称Note、到期时间Expiration、可访问的权限范围Select scopes然后点击Generate token生成即可。 下图中token即为绿色标注的区域由于隐私性本文生成的token加了马赛克。 使用API Key发起API请求。 有了API Key后就能够以最大限度地访问Github API了。本文给出一个使用Python语言访问Github API接口的实例。 首先确保已经安装了requests库: pip install requests然后使用以下的Python代码。 以下代码给出了通过requests向Github API发送Get请求获取指定Github用户名、用户ID与粉丝数的实现逻辑: import requestsdef get_github_user(username):# 替换为上一步生成的有效tokenaccess_token xxxxxxxxxxxxxxxxxxxxxxxxxxx# 构建 API 请求的 URLapi_url fhttps://api.github.com/users/{username}# 构建请求头包括认证信息headers {Authorization: fBearer {access_token},Accept: application/json # 指定响应数据格式为 JSON}# 发送 GET 请求response requests.get(api_url, headersheaders)# 检查响应状态码if response.status_code 200:# 解析 JSON 响应user_data response.json()# 打印用户信息print(fGitHub 用户名: {user_data[login]})print(f用户ID: {user_data[id]})print(f粉丝数: {user_data[followers]})else:print(f请求失败状态码: {response.status_code})print(f错误信息: {response.text})# 替换为你要查询的 GitHub 用户名
get_github_user(YuDongPan)运行后将得到以下结果:
3、Github API访问限制
3.1 访问限制原因
在Github REST API Documentation中详细介绍了Github API的使用方式、使用规范、使用案例与应用场景。此外文档中还谈及了GitHub将限制用户在特定时间内可以发出的REST API请求的数量。此限制有助于防止滥用和拒绝服务攻击并确保API对所有用户仍然可用。
3.2 访问限制类别
通常Github根据身份验证方法计算REST API的主要速率限制如下所述: 未认证用户 (unauthenticated users): 如果仅提取公共数据则可以发出未经身份验证的API请求。未经身份验证的API请求与发起者的IP地址相关联而不是与发出请求的用户或应用程序相关联。 未经身份验证的请求的主要速率限制为每小时60个请求。 认证用户 (authenticated users): 认证用户可以使用个人访问令牌来发出API请求。此外认证用户可以授权GitHub应用程序或OAuth应用程序然后它们可以代表认证用户发出API请求。 普通情况下认证用户每小时5000次请求的速率限制。GitHub企业云组织拥有的GitHub应用程序请求的速率限制更高为每小时15000个请求。同样如果认证用户是GitHub Enterprise Cloud组织的成员则由GitHub企业云组织拥有或批准的OAuth应用程序代表您提出的请求的速率限制更高为每小时15000个请求。 Github APP安装 (Github APP installation): 使用安装访问token进行身份验证的GitHub应用程序使用安装的最低速率限制即每小时5000个请求。如果安装在GitHub企业云组织上则安装的速率限制为每小时15000个请求。 对于不在GitHub企业云组织上的安装安装速率限制将随着用户和存储库的数量而变化。具有20个以上存储库的安装每小时会收到另外50个请求。在一个拥有20个以上用户的组织中安装每个用户每小时还会收到50个请求。速率限制不能超过每小时12500个请求。 GitHub应用程序用户访问token的主要速率限制由经过身份验证的用户的主要速率限值决定。此速率限制与另一个GitHub应用程序或OAuth应用程序代表该用户发出的任何请求以及该用户使用个人访问令牌发出的任何要求相结合。
4、Github API访问限制破除
4.1 限制破除原理
从Github API的访问限制类别中可以看出未经认证的用户每小时可访问的次数最少为60次经认证的用户每小时可访问次数为5000次作为Github企业云组织的应用程序每小时的访问次数则可以高达15000次。
考虑到大部分开发者并非Github企业云组织成员故按照官方标准一个普通开发者经身份认证后最高可达到5000次/小时的访问速率。
但是值得注意的是一个开发者经身份认证后每小时可以访问5000次API接口并不意味着一个应用程序的整个运行周期内就只能使用一个开发者的认证信息!!!
因此如果我们在应用程序里头同时穿插使用多个开发者的身份认证信息如token认证即可完美破除Github API的访问限制。
从而破除Github API访问限制的关键转化为了计算我们的应用程序每个小时需访问多少次Github API接口对应于我们需要为应用程序准备多少个Github用户身份认证信息token。 例如倘若我们开发的应用程序是一个爬虫程序用于爬取Github的用户信息。爬虫程序在使用了多线程后每小时需要访问13865次的Github API接口那么我们则需要准备 ⌈ 13865 ÷ 5000 ⌉ \lceil 13865÷5000 \rceil ⌈13865÷5000⌉3个Github用户的token凭证。 4.2 限制破除示例
根据这一逻辑我们给出以下的Python代码示例:
import requests
import random
from concurrent.futures import ThreadPoolExecutordef get_github_user(username):access_token random.choice(token_lst)# 构建 API 请求的 URLapi_url fhttps://api.github.com/users/{username}# 构建请求头包括认证信息headers {Authorization: fBearer {access_token},Accept: application/json # 指定响应数据格式为 JSON}# 发送 GET 请求response requests.get(api_url, headersheaders)# 检查响应状态码if response.status_code 200:# 解析 JSON 响应user_data response.json()# 打印用户信息print(fGitHub 用户名: {user_data[login]})print(f用户ID: {user_data[id]})print(f粉丝数: {user_data[followers]})else:print(f请求失败状态码: {response.status_code})print(f错误信息: {response.text})# 构建一个token列表, 代表多个Github用户的token凭证
token_lst [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
]# 假设构建一个含有8888个用户名的列表
username_lst []
for i in range(8888):username_lst.append(YuDongPan)# 使用ThreadPoolExecutor创建线程池控制并发数量
with ThreadPoolExecutor(max_workers10) as executor:# 将每个用户名提交给线程池中的线程进行获取用户信息executor.map(get_github_user, username_lst)在这个示例中我们试图通过多线程机制在短时间内一小时内完成8888条Github API请求获取指定Github用户名、用户ID与粉丝数。由于单个Github用户每个小时在使用token凭证后可访问5000次API那么我们需要准备 ⌈ 8888 ÷ 5000 ⌉ \lceil 8888÷5000 \rceil ⌈8888÷5000⌉2个Github用户的token凭证装入token列表中。
在每次访问Github API接口时我们通过random.choice()函数随机中token列表中选取一个Github用户的token凭证即可。 文章转载自: http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.xsgxp.cn.gov.cn.xsgxp.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.rbyz.cn.gov.cn.rbyz.cn http://www.morning.xcyzy.cn.gov.cn.xcyzy.cn http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn http://www.morning.kbyp.cn.gov.cn.kbyp.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn http://www.morning.pngph.cn.gov.cn.pngph.cn http://www.morning.qgtbx.cn.gov.cn.qgtbx.cn http://www.morning.nnwmd.cn.gov.cn.nnwmd.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.qscsy.cn.gov.cn.qscsy.cn http://www.morning.zxcny.cn.gov.cn.zxcny.cn http://www.morning.jfcbz.cn.gov.cn.jfcbz.cn http://www.morning.hkpyp.cn.gov.cn.hkpyp.cn http://www.morning.hyhzt.cn.gov.cn.hyhzt.cn http://www.morning.kryr.cn.gov.cn.kryr.cn http://www.morning.zrks.cn.gov.cn.zrks.cn http://www.morning.xtgzp.cn.gov.cn.xtgzp.cn http://www.morning.nffwl.cn.gov.cn.nffwl.cn http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn http://www.morning.qrwjb.cn.gov.cn.qrwjb.cn http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn http://www.morning.ypcbm.cn.gov.cn.ypcbm.cn http://www.morning.ltypx.cn.gov.cn.ltypx.cn http://www.morning.jrdbq.cn.gov.cn.jrdbq.cn http://www.morning.znqfc.cn.gov.cn.znqfc.cn http://www.morning.chgmm.cn.gov.cn.chgmm.cn http://www.morning.tpbhf.cn.gov.cn.tpbhf.cn http://www.morning.mlycx.cn.gov.cn.mlycx.cn http://www.morning.yxmcx.cn.gov.cn.yxmcx.cn http://www.morning.stpkz.cn.gov.cn.stpkz.cn http://www.morning.zfqr.cn.gov.cn.zfqr.cn http://www.morning.zgztn.cn.gov.cn.zgztn.cn http://www.morning.xscpq.cn.gov.cn.xscpq.cn http://www.morning.jbgzy.cn.gov.cn.jbgzy.cn http://www.morning.tbcfj.cn.gov.cn.tbcfj.cn http://www.morning.gsqw.cn.gov.cn.gsqw.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.rwls.cn.gov.cn.rwls.cn http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn http://www.morning.fdfsh.cn.gov.cn.fdfsh.cn http://www.morning.bftr.cn.gov.cn.bftr.cn http://www.morning.skbkq.cn.gov.cn.skbkq.cn http://www.morning.zcxjg.cn.gov.cn.zcxjg.cn http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn http://www.morning.rdymd.cn.gov.cn.rdymd.cn http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn http://www.morning.qkrz.cn.gov.cn.qkrz.cn http://www.morning.qbrdg.cn.gov.cn.qbrdg.cn http://www.morning.fsjcn.cn.gov.cn.fsjcn.cn http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn http://www.morning.jytrb.cn.gov.cn.jytrb.cn http://www.morning.rhgtc.cn.gov.cn.rhgtc.cn http://www.morning.gynlc.cn.gov.cn.gynlc.cn http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn http://www.morning.pljdy.cn.gov.cn.pljdy.cn http://www.morning.syfty.cn.gov.cn.syfty.cn http://www.morning.qineryuyin.com.gov.cn.qineryuyin.com http://www.morning.pshpx.cn.gov.cn.pshpx.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.kmcby.cn.gov.cn.kmcby.cn http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.flxqm.cn.gov.cn.flxqm.cn http://www.morning.kwnnx.cn.gov.cn.kwnnx.cn http://www.morning.dxsyp.cn.gov.cn.dxsyp.cn http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn http://www.morning.tdttz.cn.gov.cn.tdttz.cn http://www.morning.hbnwr.cn.gov.cn.hbnwr.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.knmp.cn.gov.cn.knmp.cn http://www.morning.rhpgk.cn.gov.cn.rhpgk.cn