C#HttpClient tor socks4 / 5代理? - c#

我可以使用以下代码设置http代理:

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);
        };
    }
}

但不是袜子代理。有什么想法怎么做?还是其他任何支持异步/等待语法的(未弃用)REST客户端?

参考方案

可能的解决方案是使用提供袜子代理处理程序的Extreme.Net包。例如,在上面的代码中,我们需要使用以下代码替换CreateClient方法:

        public override HttpClient CreateClient(Url url, HttpMessageHandler m)
    {
        var socksProxy = new Socks5ProxyClient("127.0.0.1", 9150);
        var handler = new ProxyHandler(socksProxy);
        return base.CreateClient(url, handler);
    }

而且有效!

HttpClient.getAsync()内存不足异常 - c#

我有一个从Web服务获取大量JSON的函数。这些数据有时可能很大,千兆字节。我的电话看起来像这样。 try { using (var httpClient = NewHttpClient()) { var response = httpClient.GetAsync(endpoint).Result; return response; } } catch(E…

使用HttpClient时出现未经授权的错误 - c#

using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; namespace ConsoleProgram { public class C…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

C#和泛型:如何处理基于类型的处理? - c#

我是泛型新手,我正在尝试为我的项目制作一个泛型HTTP GET方法(并可能将其扩展为也可以处理POST / PUT)。当响应基于字符串时,以下内容似乎可以正常工作:private async Task<T> HttpGetAsync<T>(Uri uri) { var httpRequestMessage = new HttpRequ…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…