使用Tor与Selenium WebDriver(Java)的问题

时间:2015-02-23 20:28:46

标签: java selenium selenium-webdriver tor selenium-firefoxdriver

所以我希望在一些.onion网站上做一些简单的数据收集。我将通过使用selenium webdriver将Tor作为Firefox webdriver的一部分进行调用。但是,我似乎无法弄清楚如何让firefox成功访问.onion网站。这是代码。

public static void main(String[] args) throws InterruptedException, IOException {
    File torProfileDir = new File("C:\\Users\\Chambers\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default");                
    FirefoxBinary binary = new FirefoxBinary(new File("C:\\Users\\Chambers\\Desktop\\Tor Browser\\Browser\\firefox.exe"));
    FirefoxProfile torProfile = new FirefoxProfile(torProfileDir);
    torProfile.setPreference("webdriver.load.strategy", "unstable");
    try {
        binary.startProfile(torProfile, torProfileDir, "");
    } catch (IOException e) {
        e.printStackTrace();
    }
    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);
    FirefoxDriver driver = new FirefoxDriver(profile);
    int firstCheck = "0";

    while (firstCheck == 0) {
        driver.navigate().to("onion site here");
        ......

我遇到的问题是我最终得到了一个无法连接到.onion网站的firefox浏览器。如果我将FirefoxDriver driver = new FirefoxDriver(profile);更改为FirefoxDriver driver = new FirefoxDriver(binary, profile);,那么我将留下一个空白的Tor窗口,我无法用webdriver控制它。

任何人对如何解决此问题都有任何想法?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

想出来。需要为新配置文件添加大量权限。以下是感兴趣的人的固定代码。它允许您使用Firefox浏览黑暗网页,就像使用Tor一样。用于控制webdriver的命令不会改变。

File torProfileDir = new File("C:\\Users\\Chambers\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default");                
    FirefoxBinary binary = new FirefoxBinary(new File("C:\\Users\\Chambers\\Desktop\\Tor Browser\\Browser\\firefox.exe"));
    FirefoxProfile torProfile = new FirefoxProfile(torProfileDir);
    torProfile.setPreference("webdriver.load.strategy", "unstable");
    try {
        binary.startProfile(torProfile, torProfileDir, "");
    } catch (IOException e) {
        e.printStackTrace();
    }
    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);
    profile.setPreference("network.proxy.socks_version", 5);
    profile.setPreference("places.history.enabled", false);
    profile.setPreference("privacy.clearOnShutdown.offlineApps", true);
    profile.setPreference("privacy.clearOnShutdown.passwords", true);
    profile.setPreference("privacy.clearOnShutdown.siteSettings", true);
    profile.setPreference("privacy.sanitize.sanitizeOnShutdown", true);
    profile.setPreference("signon.rememberSignons", false);
    profile.setPreference("network.cookie.lifetimePolicy", 2);
    profile.setPreference("network.dns.disablePrefetch", true);
    profile.setPreference("network.http.sendRefererHeader", 0);
    profile.setPreference("network.proxy.socks_remote_dns", true);
    FirefoxDriver driver = new FirefoxDriver(profile);
    String firstCheck = "";
    while (firstCheck == 0) {
        driver.get("http://kbhpodhnfxl3clb4.onion/");
        .........................