连接需要身份验证的SOCKS代理
本文关键字:SOCKS 代理 身份验证 连接 | 更新日期: 2023-09-27 17:53:24
我在我的项目中使用Fiddler Core,并且通过不需要身份验证的SOCKS代理成功地路由请求。
oS["x-OverrideGateway"] = string.Format("socks={0}:{1}", ProxyHost, ProxyPort);
现在我正在尝试连接到需要身份验证的SOCKS代理。我已经尝试添加以下内容,根据这个非socks指南:使用CBT进行身份验证。
oS["X-AutoAuth"] = Auth;
其中Auth
是包含username:password
形式的凭据的字符串。但是连接总是失败,并出现坏网关异常。我已经成功地使用curl
连接到相同的SOCKS代理,并遵循它的认证SOCKS代理指南。
X-AutoAuth
不工作后,我反映了一些代码,发现这种身份验证机制不用于SOCKS。
很遗憾,Fiddler(和FiddlerCore)目前还不支持SOCKS5。
但是,您可以通过https://fiddler.ideas.aha.io/请求。
我们遇到了类似的问题,并创建了一个NuGet库来帮助您将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();
}