在匿名的情况下使用 libcurl 检索 github 个版本
Retrieve github releases with libcurl while being anonymous
使用 this minimal program,我可以下载文本文件并使用 libcurl 打印它。我以匿名方式执行此操作,就像任何 https get 请求一样。
现在这个URL:https://api.github.com/repos/bitcoin/bitcoin
是 Restful API 案例的一个示例,我不理解但很感兴趣,因为我需要在 Github 上匿名检索我的项目的发布。如果单击它,您可以在 Web 浏览器上匿名获得 JSON 信息,没有任何问题。它无需任何身份验证即可工作。但是当我把那个 URL 放在我的最小程序中时,我得到错误 403!
所以任何正常的 https URL 在我的最小程序中都可以正常工作,但是这个 Github URL 不能。
为什么我会收到错误 403?我是否必须以某种方式进行身份验证(我不是说使用我的个人用户名和密码,因为我的要求是匿名获取)?这是 Github 或我的代码中的错误吗?
好的。我现在知道我的错误是什么。我似乎混淆了身份验证 username/password 和所谓的 "user agent"。将此行添加到 libcurl 配置:
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0");
会成功的。无需身份验证。
使用 this minimal program,我可以下载文本文件并使用 libcurl 打印它。我以匿名方式执行此操作,就像任何 https get 请求一样。
现在这个URL:https://api.github.com/repos/bitcoin/bitcoin
是 Restful API 案例的一个示例,我不理解但很感兴趣,因为我需要在 Github 上匿名检索我的项目的发布。如果单击它,您可以在 Web 浏览器上匿名获得 JSON 信息,没有任何问题。它无需任何身份验证即可工作。但是当我把那个 URL 放在我的最小程序中时,我得到错误 403!
所以任何正常的 https URL 在我的最小程序中都可以正常工作,但是这个 Github URL 不能。
为什么我会收到错误 403?我是否必须以某种方式进行身份验证(我不是说使用我的个人用户名和密码,因为我的要求是匿名获取)?这是 Github 或我的代码中的错误吗?
好的。我现在知道我的错误是什么。我似乎混淆了身份验证 username/password 和所谓的 "user agent"。将此行添加到 libcurl 配置:
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Dark Secret Ninja/1.0");
会成功的。无需身份验证。