连接到需要身份验证的SOCKS代理

时间:2016-06-30 16:52:28

标签: c# authentication fiddler fiddlercore

我在我的项目中使用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。

2 个答案:

答案 0 :(得分:2)

相当不幸的是,Fiddler(和FiddlerCore)目前还不支持SOCKS5。

但是,您可以在https://fiddler.ideas.aha.io/申请此邮件。

答案 1 :(得分:1)

我们遇到了类似的问题,并创建了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();
}