如何用R的httr包获取需登录的AdventOfCode数据?
解决AdventOfCode自动化获取输入数据的问题
AdventOfCode的登录机制并非HTTP基本认证,直接用authenticate()传递GitHub用户名密码自然无效,以下是可行的解决步骤:
获取会话Cookie
- 用浏览器登录AdventOfCode,进入任意题目输入页面
- 打开浏览器开发者工具(F12),在「网络」标签中找到输入页面的请求,查看请求头里的
Cookie字段,复制其中的session值(格式类似session=abcdef12345...)
使用Cookie发起请求
用httr的add_headers()方法携带这个session cookie,示例代码:library(httr) response <- GET( url = 'https://adventofcode.com/2020/day/6/input', add_headers(Cookie = "session=你的session值") ) # 提取输入数据 input_data <- content(response, "text")注意事项
- Session cookie存在过期时间,一段时间后需要重新获取
- 不要随意分享你的session值,它等同于你的登录凭证
- 建议将session值存到环境变量中,避免硬编码在脚本里,比如用
Sys.getenv("AOC_SESSION")调用
内容的提问来源于stack exchange,提问作者rg255
相关产品推荐
相关产品推荐

