2017-04-08 26 views
0

我可以设置HTTP代理使用此代码:C#HttpClient tor socks4/5代理?

public class CustomFlurlHttpClient : DefaultHttpClientFactory { 
    public override HttpClient CreateClient(Url url, HttpMessageHandler m) { 
     return base.CreateClient(url, CreateProxyHttpClientHandler("http://192.168.0.103:9090")); 
    } 

    private HttpClientHandler CreateProxyHttpClientHandler(string proxyUrl, string user = "", string passw = "") { 
     NetworkCredential proxyCreds = null; 
     var proxyUri = new Uri(proxyUrl); 
     proxyCreds = new NetworkCredential (user, passw); 
     var proxy = new WebProxy (proxyUri, false) { 
      UseDefaultCredentials = false, 
      Credentials = proxyCreds 
     }; 
     var clientHandler = new HttpClientHandler { 
      UseProxy = true, 
      Proxy = proxy, 
      PreAuthenticate = true, 
      UseDefaultCredentials = false 
     }; 
     if (user != "" && passw != "") { 
      clientHandler.Credentials = new NetworkCredential (user, passw); 
     } 
     return clientHandler; 
    } 
} 
class MainClass { 
    public static void Main (string[] args) { 
     run(); 
     Console.ReadKey(); 
    } 

    async static void run() { 
     using(FlurlClient client = new FlurlClient(c => { c.HttpClientFactory = new CustomFlurlHttpClient();})) { 
      var result = await client.WithUrl("https://www.google.com").GetStringAsync(); 
      Console.WriteLine(result); 
     }; 
    } 
} 

而不是SOCKS代理。任何想法如何做到这一点?或者支持异步/等待语法的其他任何(不被弃用的)休息客户端?

+0

一般来说任何你可以做的HttpClient,你可以做Flurl。不幸的是,我没有找到任何示例,我个人对SOCKS也不是很熟悉。也许把这个重新设计成一个HttpClient问题,并且有人会发出响声。 –

回答