c# - 在 selenium geckodriver 上设置代理
问题描述
我在为我的 geckodriver selenium 程序添加代理支持时遇到问题。
var proxy = new Proxy();
if (useproxies == true)
{
if (proxytype) //True = SOCKS5
{
/*var proxy = proxies[proxyindex];
profile.SetPreference("network.proxy.type", 1);
profile.SetPreference("network.proxy.socks", proxy.Split(':')[0]);
profile.SetPreference("network.proxy.socks_port", proxy.Split(':')[1]);
*/
proxy.SocksProxy = proxies[proxyindex];
if (proxyindex >= (proxies.Count - 1)) { proxyindex = 0; } else { proxyindex++; }
}
else //False = HTTP
{
proxy.HttpProxy = proxies[proxyindex];
if (proxyindex >= (proxies.Count - 1)) { proxyindex = 0; } else { proxyindex++; }
}
}
//user agent
profile.SetPreference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0");
//start
options.Proxy = proxy;
options.Profile = profile;
driver = new FirefoxDriver(options);
但这不起作用,我已经尝试了很多方法,但没有一个对我有用。任何人都知道如何做到这一点?第一次使用 geckodriver,我总是使用 chromedriver。
编辑:在回答@AtachiShadow 时,问题仍然存在。
var profile = new FirefoxProfile();
var options = new FirefoxOptions();
//proxy
if (useproxies == true)
{
if (proxytype) //True = SOCKS5 | False = HTTP
{
try
{
profile.SetPreference("network.proxy.type", 1);
profile.SetPreference("network.proxy.socks", proxies[proxyindex].Split(':')[0]);
profile.SetPreference("network.proxy.socks_port", proxies[proxyindex].Split(':')[1]);
profile.SetPreference("network.proxy.socks_version", 5);
if (proxyindex >= (proxies.Count - 1)) { proxyindex = 0; } else { proxyindex++; }
}
catch
{
WriteConsole("Proxies.txt is bad... Exiting.");
Console.Read();
Environment.Exit(0);
}
}
else
{
try
{
if (proxyindex >= (proxies.Count - 1)) { proxyindex = 0; } else { proxyindex++; }
}
catch
{
WriteConsole("Proxies.txt is bad... Exiting.");
Console.Read();
Environment.Exit(0);
}
}
}
//user agent
profile.SetPreference("general.useragent.override", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0");
//start
options.Profile = profile;
driver = new FirefoxDriver(options);
你的建议也有同样的问题
解决方案
我使用以下命令在浏览器中启用代理袜子(这是 Python 3 代码):
fp = webdriver.FirefoxProfile(ub_profile)
fp.set_preference('network.proxy.type', 1) # int
fp.set_preference('network.proxy.socks', '111.11.11.1') # string
fp.set_preference('network.proxy.socks_port', 12345) # int
fp.set_preference('network.proxy.socks_version', 4) # int
browser = webdriver.Firefox(firefox_profile=fp)
您的代码有所不同。您可能没有指明您拥有哪个版本的代理袜子:
fp.set_preference('network.proxy.socks_version', 4) # When you have proxy version 4
或者
fp.set_preference('network.proxy.socks_version', 5) # When you have proxy version 5
然而,我通过.FirefoxProfile()
而不是通过启用代理.Options()
。
像这样试试。
推荐阅读
- python - 使用 Keras 的 LSTM,输入到第一层的尺寸误差
- r - R中并行算法与顺序算法的不同结果
- apache - 如何测量将数据从 csv 文件导入 Hbase 的时间?
- laravel - 身份验证 - 在会话和基于令牌的身份验证之间共享相同的经过身份验证的用户
- reactjs - 将 react router v4 与 react 16.5.2 一起使用,在加载时收到警告并使用路由器
- .net - 从 .Net 应用程序登录到 Logstash 的最佳做法是什么?
- javascript - 在 Route 中反应上下文
- bash - 在bash中解析具有多个多字的参数
- python - Pyodbc MSSQL 数据库备份 unicode 问题
- java - finishAffinity 不会终止异步任务