在没有安全协议的网页上使用 curl

Use curl with a webpage with no security protocol

我有一个网页:10.1.1.165,我正试图从中获取数据。我在 linux 中构建了这个程序,它运行良好,但是,在为 windows 系统开发时,我 运行 遇到了问题。

    if (filename.substr(filename.length() - 4, 4) == "html" || filename.substr(filename.length() - 3, 3) == "htm") 
    {
        CURL *curl;
        CURLcode res;
        curl_global_init(CURL_GLOBAL_DEFAULT);
        curl = curl_easy_init();
        string s;

        if (curl)
        {
            curl_easy_setopt(curl, CURLOPT_URL, filename.c_str());

            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);

            if (gLogger->isDebug()) curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 

            curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout/1000);

                //curl_easy_setopt (curl, CURLOPT_VERBOSE, 1L); //remove this to disable verbose output


            // Perform the request, res will get the return code 
            res = curl_easy_perform(curl);

            // Check for errors 
            if (res != CURLE_OK)
            {
                while (res == CURLE_OPERATION_TIMEDOUT)
                {
                    res = curl_easy_perform(curl);
                }

                if (res != CURLE_OK)
                {
                    gLogger->error("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
                    curl_easy_cleanup(curl);
                    return -1;
                }
            }
            curl_easy_cleanup(curl); 

在我的 linux 系统上,这非常有效。在我的 Windows 系统上,我得到:curl_easy_perform() 失败:不支持的协议。如果我转到我的网页 10.1.1.165,我会看到它的托管没有安全性。我无法更改该网页的托管方式。

根据此资源:https://curl.haxx.se/libcurl/c/CURLOPT_PROTOCOLS.html

By default libcurl will accept all protocols

有谁知道为什么 curl 不喜欢我在 windows 上抓取这个网页?如果是这样,我可能需要调整哪些设置?

我已经通过切换到 curl-7.55.1 解决了我的问题。以前我使用的是 curl-7.68.0。我不确定该功能是否已被删除,或者使用它是否涉及更多。