【问题标题】:Set up proxy on selenium geckodriver在 selenium geckodriver 上设置代理
【发布时间】:2019-09-05 23:28:56
【问题描述】:

我在为我的 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);

你的建议也有同样的问题

【问题讨论】:

    标签: c# selenium geckodriver


    【解决方案1】:

    我使用以下命令在浏览器中启用代理袜子(这是 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()

    这样试试吧。

    【讨论】:

    • 浏览器是否在设置中没有代理的情况下加载?是否可以查看about:preferences 页面的内容?或者浏览器或控制台可能有更多关于此的消息?
    • 好的@AtachiShadow,所以我注意到一些奇怪的事情,如果我转到about:preferences,它确实会加载代理,但端口仍然是0。如果我手动将端口更改为正确的端口,代理工作。我不知道为什么 network.proxy.socks_port 发送端口 0。我将尝试将它作为 int 而不是字符串发送,也许就是这样?
    • 是的@AtachiShadow,我必须将端口作为 int 发送,它现在工作正常,谢谢!
    • 我为你感到高兴,但是我在我的答案的代码中专门评论了这些参数,需要的数据类型))))看我的答案中的第一块代码)
    • 是的,我刚刚注意到哈哈。非常感谢您的帮助!
    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2017-04-19
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    相关资源
    最近更新 更多