为了账号安全,请及时绑定邮箱和手机立即绑定

通过 Socks4/5 代理 .NET

通过 Socks4/5 代理 .NET

C#
MMTTMM 2022-12-31 13:31:51
因此,我正在编写一些代码并引入第 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("-----------------");        }
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

不幸的是,.NET Core 本身支持 SOCKS 代理,无论是 4 还是 5,它只支持HTTP 代理

然而,有一个开源库可以为您的应用程序添加 SOCKS5 代理支持。试试这个:https ://github.com/MihaZupan/HttpToSocks5Proxy

结合以上两种方法,您的应用程序应该能够通过 SOCKS5 代理访问 Internet 资源。


查看完整回答
反对 回复 2022-12-31
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

现在 .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");


查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信