通过 Socks4/5 代理 .NET

因此,我正在编写一些代码并引入第 3 方项目以实现一组特定的功能。即,与 AD 对话,获取 kerberos 票证,如果向程序提供用户名/密码,则进行用户模拟等。


我遇到的问题是,其中许多东西都依赖于 Windows 内核库(netapi.dll、win32.dll 等)。我也需要能够运行这个 Linux。所以我尝试了 .NET 核心。好吧,作为核心,我一直无法找到这些库的替代品,当然 WINE 也不适合它们。所以我只剩下一个选择。袜子代理。


那么我究竟如何才能通过 socks4 或 socks5 代理来代理整个应用程序(控制台应用程序)。PS,我不是在说 HTTP。示例如下(只是一个简单的 AD 查找):


public void PrintAllUsers()

        {

            Console.WriteLine("[+] Domain Users");

            Console.WriteLine("-----------------");

            GroupPrincipal gp = GetGroup("Domain Users");

            Console.WriteLine("[+] Count (" + gp.Members.Count + ")");

            foreach (Principal pc in gp.Members)

            {

                if (pc.StructuralObjectClass.ToLower() == "user")

                {

                    PrintUserData(pc as UserPrincipal);

                }


                if (pc.StructuralObjectClass.ToLower() == "computer")

                {

                    PrintComputerData(pc as ComputerPrincipal);


                }

            }


            Console.WriteLine("-----------------");

        }


MMTTMM
浏览 135回答 2
2回答

神不在的星期二

不幸的是,.NET Core 本身不支持 SOCKS 代理,无论是 4 还是 5,它只支持HTTP 代理。然而,有一个开源库可以为您的应用程序添加 SOCKS5 代理支持。试试这个:https ://github.com/MihaZupan/HttpToSocks5Proxy结合以上两种方法,您的应用程序应该能够通过 SOCKS5 代理访问 Internet 资源。

开心每一天1111

现在 .NET 6 支持 SOCKS 代理(在这里回答):var proxy = new WebProxy{    Address = new Uri("socks5://localhost:8080")};//proxy.Credentials = new NetworkCredential(); //Used to set Proxy logins. var handler = new HttpClientHandler{    Proxy = proxy};var httpClient = new HttpClient(handler);或者当你可以注入 IHttpClientFactory 并想HttpClient使用它创建实例时:Services.AddHttpClient("WithProxy")    .ConfigurePrimaryHttpMessageHandler(() =>    {        var proxy = new WebProxy        {            Address = new Uri("socks5://localhost:8080")        };        return new HttpClientHandler        {            Proxy = proxy        };    });当你注入IHttpClientFactory对象时:httpClient = httpClientFactory.CreateClient("WithProxy");
打开App,查看更多内容
随时随地看视频慕课网APP