如何在libcurl中设置代理和SOCK?

时间:2011-01-15 08:34:33

标签: .net libcurl socks

我正在尝试配置我的.NET应用程序以使用代理。我的源代码是C#,但我通过C ++学习了CURL。我的问题是我在哪里放置SOCK的IP和端口?我查看the documentation并没有看到它。我相信这就是造成我这些问题的原因。

当我运行此代码时,它将保持字面上超时并且不调用我的头函数或编写器函数。如果我注释掉前两个curlopt线(两个代理行),我的代码运行没有问题。

在firefox中我分别设置了http代理和SOCK主机,它们是不同的IP和端口。我如何设置袜子部分,下面有假代理设置,但我不能弄清楚袜子部分。

    static void Main(string[] args)
    {
        SeasideResearch.LibCurlNet.Curl.GlobalInit((int)SeasideResearch.LibCurlNet.CURLinitFlag.CURL_GLOBAL_ALL);
        var curl = new Easy();
        {
            curl.SetOpt(CURLoption.CURLOPT_PROXY, "http://127.0.0.1:1234");
            curl.SetOpt(CURLoption.CURLOPT_PROXYTYPE, CURLproxyType.CURLPROXY_SOCKS5);
            curl.SetOpt(CURLoption.CURLOPT_URL, "http://whatismyipaddress.com/ip-lookup");
            curl.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, 1);
            curl.SetOpt(CURLoption.CURLOPT_USERAGENT, @"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5");
            curl.SetOpt(CURLoption.CURLOPT_HEADERFUNCTION, hf);
            curl.SetOpt(CURLoption.CURLOPT_HEADERDATA, data);
            curl.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
            curl.SetOpt(CURLoption.CURLOPT_WRITEDATA, sw);
            curl.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, 0);
            curl.Perform();
            var sz = sw.ToString();
            var myrealip = sz.IndexOf("12.34.56.78") !=-1; 
        }
        //Console.WriteLine(sz);
        SeasideResearch.LibCurlNet.Curl.GlobalCleanup();
    }

1 个答案:

答案 0 :(得分:2)

据我所知,唯一可以将SOCKS代理的地址放在CURLOPT_PROXY中的地方。您可以拥有HTTP代理或SOCKS代理,但不能同时拥有这两者。