【问题标题】:Run TOR browser with Selenium WebDriver使用 Selenium WebDriver 运行 TOR 浏览器
【发布时间】:2017-01-01 05:52:25
【问题描述】:

我目前正在尝试使用 Selenium WebDriver (JAVA) 2.53 和 Firefox 43.0 执行 TOR 6.0.4。我已按照这篇文章Using Selenium WebDriver with Tor 中的说明进行操作,但在将 TOR 的 profilePath 加载到 Firefox 二进制文件时出现错误。我已经看到可以通过将 TOR profile.default 存档加载到 firefox binaty 来为 TOR 提供午餐,但是在使用配置文件实例化二进制文件时,我得到了一个驱动程序信息:driver.version:unknown。我已经尝试更改Firefox版本并且仍然如此。在我启动驱动程序的代码下方。我也在使用 Windows。

 String torPath = "C:\\Users\\Jose Bernhardt\\Desktop\\Tor Browser\\Start Tor Browser.exe";
    String profilePath = "C:\\Users\\Jose Bernhardt\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default";

    File torProfileDir = new File(profilePath);
    FirefoxBinary binary = new FirefoxBinary(new File(torPath));
    FirefoxProfile torProfile = new FirefoxProfile(torProfileDir);
    FirefoxDriver driver = new FirefoxDriver();
    driver.get("http://www.google.com/webhp?complete=1&hl=en");

查看下面抛出的异常:

Exception in thread "main" org.openqa.selenium.WebDriverException: Specified firefox binary location does not exist or is not a real file: C:\Users\Jose Bernhardt\Desktop\Tor Browser\Start Tor Browser.exe

【问题讨论】:

    标签: java selenium webdriver tor


    【解决方案1】:

    似乎我正在加载 Tor.exe,而我不得不从 Tor 存档中加载 firefox.exe。我改变了我的路径并且正在工作。还修复了我没有将配置文件和二进制文件发送到驱动程序构造函数

     "C:\\Users\\Jose Bernhardt\\Desktop\\Tor Browser\\Browser\\firefox.exe"
    FirefoxDriver driver = new FirefoxDriver(binary, torProfile);
    

    【讨论】:

    • 您现在应该使用 FireFoxOptions。现在不推荐使用此构造函数重载。 imgur.com/tAnzNhs
    • @Jose Bernhardt,我已经使用 Firefox 选项尝试了上述代码,但收到错误消息“tor 无法启动”
    【解决方案2】:
    System.setProperty("webdriver.firefox.marionette", ".\\geckodriver.exe");
            String torPath = "C:\\Users\\HP\\Desktop\\Tor Browser\\Browser\\firefox.exe";
            String profilePath = "C:\\Users\\HP\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default";
    
            File torProfileDir = new File(profilePath);
            FirefoxBinary binary = new FirefoxBinary(new File(torPath));
            FirefoxProfile torProfile = new FirefoxProfile(torProfileDir);
    
            FirefoxOptions options = new FirefoxOptions();
            options.setBinary(binary);
            options.setProfile(torProfile);
            options.setCapability(FirefoxOptions.FIREFOX_OPTIONS,options);
            WebDriver driver = new FirefoxDriver(options);
    

    【讨论】:

    • 尝试了上面的代码,但收到消息“tor 无法启动”。非常感谢任何帮助。
    【解决方案3】:

    到目前为止,使用 Mozilla Firefox 支持 Tor 浏览器 下面是代码:

    System.setProperty("webdriver.gecko.driver", "C:\\Users\\user\\eclipse-workspace\\TorSelenium\\src\\main\\resources\\geckodriver.exe");//sa used for the firefox
                String torBinaryPath = "C:\\Users\\user\\OneDrive\\Desktop\\Lk's stuff\\Tor Browser\\Browser\\firefox.exe"; //It is inside the tor browser's folder
                
                
                
                Runtime runTime = Runtime.getRuntime();
                Process torProcess = runTime.exec(torBinaryPath + " -n");
                FirefoxProfile profile = new FirefoxProfile();
                profile.setPreference("network.proxy.type", 1);
                profile.setPreference("network.proxy.socks", "127.0.0.1");
                profile.setPreference("network.proxy.socks_port", 9150);
                FirefoxOptions firefoxOptions = new FirefoxOptions();
                firefoxOptions.setProfile(profile);
                WebDriver driver;
                driver = new FirefoxDriver(firefoxOptions);
                driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
                driver.manage().window().maximize();
                WebDriverWait wait;
                wait = new WebDriverWait(driver, 30);
                JavascriptExecutor js = (JavascriptExecutor) driver;
                //added end
                
                
                
                System.out.println(ean);
                //Thread.sleep(100);
                //driver.navigate().to("https://www.google.com/?hl=en");
                //driver.navigate().to("https://duckduckgo.com/?q=d&ia=web");
                driver.navigate().to("https://www.swiggy.com");
    

    如果您想更改 tor 身份,则必须使用重新启动 tor 并再次启动上述代码:

    Runtime.getRuntime().exec("taskkill /f /IM firefox");
                Runtime.getRuntime().exec("taskkill /f /IM firefox.exe");
                if(torProcess.isAlive()) {
                    System.out.println("destroying tor");
                    torProcess.destroy();
                }
                if(torProcess.isAlive()) {
                    System.out.println("forcebly destroying tor");
                    torProcess.destroyForcibly();
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-01
      • 2012-05-08
      • 1970-01-01
      • 2012-04-03
      • 2016-03-22
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多