【问题标题】:Connect to SOCKS proxy that requires authentication连接到需要身份验证的 SOCKS 代理
【发布时间】:2016-11-02 21:46:00
【问题描述】:

我在我的项目中使用 Fiddler Core,并且已通过不需要身份验证的 SOCKS 代理成功路由请求。

oS["x-OverrideGateway"] = string.Format("socks={0}:{1}", ProxyHost, ProxyPort);

现在我正在尝试连接到需要身份验证的 SOCKS 代理。根据这个非 SOCKS 指南,我尝试添加以下内容:Authenticate With CBT

oS["X-AutoAuth"] = Auth;

其中Auth 是包含username:password 形式的凭据的字符串。但连接总是失败并出现 Bad Gateway 异常。我已经使用curl 成功连接到同一个 SOCKS 代理,并遵循它的认证 SOCKS 代理指南。

X-AutoAuth不起作用后我反映了一些代码,发现SOCKS没有使用这种认证机制。

【问题讨论】:

    标签: c# authentication fiddler fiddlercore


    【解决方案1】:

    很遗憾,Fiddler(和 FiddlerCore)目前还不支持 SOCKS5。

    不过,您可以通过 https://fiddler.ideas.aha.io/ 提出请求。

    【讨论】:

      【解决方案2】:

      我们遇到了类似的问题并创建了一个NuGet library,它可以帮助您将 SOCKS v4 流量“转换”为 SOCKS v5,我们还添加了身份验证支持。

      这个小例子展示了如何使用用户名和密码连接 FiddlerCore 和 SOCKS5 代理:

      var localEndpoint = new IPEndPoint(IPAddress.Loopback, 4321);
      var remoteEndpoint = new IPEndPoint(IPAddress.Parse("remote proxy IP"), 8080);
      ISocksRelayServer relay = new SocksRelayServer.SocksRelayServer(localEndpoint, remoteEndpoint)
      {
          Username = "...",
          Password = "..."
      };
      
      // Debug to console
      relay.OnLogMessage += (sender, s) => Console.WriteLine($"OnLogMessage: {s}");
      relay.OnLocalConnect += (sender, endpoint) => Console.WriteLine($"OnLocalConnect: {endpoint}");
      relay.OnRemoteConnect += (sender, endpoint) => Console.WriteLine($"OnRemoteConnect: {endpoint}");
      
      // Start relay server
      relay.Start();
      
      // Start FiddlerCore
      FiddlerApplication.Startup(...);
      
      // Set upstream gateway before requests
      FiddlerApplication.BeforeRequest += session =>
      {
          session["x-OverrideGateway"] = relay.LocalEndPoint.ToString();
      }
      

      【讨论】:

        猜你喜欢
        • 2021-10-10
        • 1970-01-01
        • 2017-07-02
        • 2012-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多