设置SOCKS5代理后DotNetBrowser无法访问,求正确配置方法
DotNetBrowser SOCKS5代理配置问题解答
是否支持SOCKS5?
DotNetBrowser完全支持SOCKS5代理,包括需要用户名密码认证的场景。
现有配置的问题
你贴的代码只设置了代理认证逻辑,但没指定SOCKS5代理的服务器地址和端口——这是配置未生效、出现ERR_CONNECTION_RESET的核心原因。另外代码里的用户名拼写错误(usernamne多了一个字母n),也可能引发认证失败。
正确的配置方式
需要分两步完成:先指定代理服务器的地址和端口,再配置认证逻辑(如果代理需要认证)。
完整示例代码
// 初始化引擎配置 EngineOptions engineOptions = new EngineOptions.Builder() .Build(); using (IEngine engine = EngineFactory.Create(engineOptions)) { // 获取默认配置文件 IProfile profile = engine.Profiles.Default; // 1. 设置SOCKS5代理服务器核心参数 profile.Network.ProxySettings = new ProxySettings { Type = ProxyType.Socks5, Host = "你的SOCKS5代理IP", Port = 你的代理端口号, // 比如常用的1080 // 代理不需要认证的话,下面两行可以删掉 Username = "正确的用户名", Password = "正确的密码" }; // 2. 配置动态认证处理器(可选,若代理需要实时认证时用) profile.Network.AuthenticateHandler = new Handler<AuthenticateParameters, AuthenticateResponse>(p => { if (p.IsProxy) { return AuthenticateResponse.Continue("正确的用户名", "正确的密码"); } return AuthenticateResponse.Cancel(); }); // 创建浏览器实例测试访问 using (IBrowser browser = engine.CreateBrowser()) { browser.Navigation.LoadUrl("https://目标网址").Wait(); } }
额外注意事项
- 先确认SOCKS5代理服务器本身能正常连接,别是代理端故障导致的
ERR_CONNECTION_RESET - 核对用户名、密码的拼写,错一个字符都会导致认证失败
- 如果代理不需要认证,只需要设置
Type、Host和Port这三个参数就行,不用管认证相关的代码
内容的提问来源于stack exchange,提问作者regina
相关产品推荐
相关产品推荐

