我目前正在尝试使用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
答案 0 :(得分:3)
似乎我正在加载Tor.exe而不是我必须从Tor存档加载firefox.exe。我改变了我的道路并且正在努力。还修复了我没有将配置文件和二进制文件发送到驱动程序构造函数
"C:\\Users\\Jose Bernhardt\\Desktop\\Tor Browser\\Browser\\firefox.exe"
FirefoxDriver driver = new FirefoxDriver(binary, torProfile);
答案 1 :(得分: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);
答案 2 :(得分:0)
到目前为止,使用 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();
}