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

如何用libcurl匿名获取GitHub项目Releases信息?

匿名libcurl实现HTTPS GET请求(GitHub API示例)

刚好帮你写了个极简的C语言程序,用libcurl实现完全匿名的HTTPS GET请求——和浏览器访问公开API的行为完全一致,能直接下载并打印目标内容(比如你提到的GitHub项目API,或者自己项目的Releases信息)。

核心代码

#include <stdio.h>
#include <curl/curl.h>

// 回调函数:把下载到的响应数据直接打印到控制台
size_t write_to_stdout(void *contents, size_t size, size_t nmemb, void *userp) {
    size_t total_size = size * nmemb;
    fwrite(contents, size, nmemb, (FILE *)userp);
    return total_size;
}

int main(void) {
    CURL *curl_handle;
    CURLcode request_result;

    // 初始化libcurl全局环境
    curl_global_init(CURL_GLOBAL_DEFAULT);
    // 创建curl请求实例
    curl_handle = curl_easy_init();

    if(curl_handle) {
        // 替换成你需要的目标URL,比如自己项目的Releases:https://api.github.com/repos/你的用户名/你的项目/releases
        curl_easy_setopt(curl_handle, CURLOPT_URL, "https://api.github.com/repos/bitcoin/bitcoin");

        // 关键:强制匿名请求,禁用所有认证机制
        curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_NONE);
        curl_easy_setopt(curl_handle, CURLOPT_USERPWD, NULL); // 清空任何可能残留的认证信息

        // 和浏览器一致:启用HTTPS证书验证,避免不安全连接
        curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 1L);
        curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 2L);

        // 设置数据处理回调,把响应输出到控制台
        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_to_stdout);
        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, stdout);

        // 执行请求
        request_result = curl_easy_perform(curl_handle);

        // 检查请求是否成功,失败则打印错误信息
        if(request_result != CURLE_OK) {
            fprintf(stderr, "请求失败:%s\n", curl_easy_strerror(request_result));
        }

        // 清理请求实例
        curl_easy_cleanup(curl_handle);
    }

    // 清理libcurl全局环境
    curl_global_cleanup();
    return 0;
}

编译与运行

在终端里用gcc编译(确保已经安装了libcurl开发库,比如Ubuntu下sudo apt install libcurl4-openssl-dev):

gcc -o anonymous_get anonymous_get.c -lcurl

运行程序就能看到API返回的JSON内容了:

./anonymous_get

关键细节说明

  • 匿名性保障:通过CURLOPT_HTTPAUTH设为CURLAUTH_NONE,彻底禁用认证,同时清空CURLOPT_USERPWD,确保请求里不会携带任何身份信息,和浏览器的匿名访问完全一致。
  • HTTPS兼容性:开启证书验证是浏览器的默认行为,这个程序也严格遵循,避免了不安全的未验证连接。如果在某些测试环境下遇到证书问题,可以临时把CURLOPT_SSL_VERIFYPEER设为0L,但生产环境千万别这么做。
  • 适配GitHub API:
    • 公开项目的Releases API同样支持匿名访问,只需要把URL换成https://api.github.com/repos/你的用户名/你的项目名/releases就行。
    • 注意GitHub对匿名请求有每小时60次的速率限制,和浏览器访问的限制一样,要是超过次数会返回403,这是正常机制,和程序无关。
  • 扩展修改:如果不想打印到控制台,而是把内容写入文件,只需要把CURLOPT_WRITEDATA的参数换成打开的文件指针(比如fopen("output.json", "w")返回的指针)就行。

内容的提问来源于stack exchange,提问作者The Quantum Physicist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:23:51