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

使用GitHub API时如何正确设置User-Agent请求头?

问题原因

你遇到的403错误通常由两个原因共同触发:

  1. 请求头缺失符合GitHub要求的User-Agent
  2. 未认证请求触发GitHub API速率限制:未认证用户和同IP所有未认证请求共享每小时60次的额度,很容易被耗尽,即使User-Agent配置正确也会返回403。

解决方法

1. 正确配置User-Agent

httr包的user_agent()需要作为GET()的参数直接传入,正确写法示例:

library(httr)
# 替换为你自己的GitHub用户名或应用名称
my_agent <- "your_github_username"
req <- GET("https://api.github.com/repos/etiennebacher/tidytuesday/git/trees/master?recursive=1", 
           user_agent(my_agent))
stop_for_status(req)

2. 配置GitHub身份认证(更根本的解决方案)

配置认证后每小时请求额度会提升到5000次,完全满足日常使用需求:

  • 首先生成个人访问令牌(PAT):进入GitHub Settings → Developer settings → Personal access tokens → Generate new token,仅勾选public_repo权限即可满足公共仓库查询需求
  • 请求时传入认证信息,示例:
library(httr)
my_agent <- "your_github_username"
# 替换为你生成的PAT
my_pat <- "ghp_xxxxxxxxxxxxxx"
req <- GET("https://api.github.com/repos/etiennebacher/tidytuesday/git/trees/master?recursive=1", 
           user_agent(my_agent),
           authenticate(my_pat, ""))
stop_for_status(req)
# 解析返回的文件列表
file_list <- content(req)$tree

3. 更简便的替代方案:使用gh包

R生态的gh包专门封装了GitHub API,会自动处理User-Agent、认证和速率限制提醒,无需手动配置请求头:

# 首次安装执行 install.packages("gh")
library(gh)
# 首次使用会引导你配置PAT,后续调用自动生效
res <- gh("GET /repos/etiennebacher/tidytuesday/git/trees/master", recursive = 1)
file_list <- res$tree

内容的提问来源于stack exchange,提问作者bretauv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:00:01