-1

因此,我希望在一些 .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 控制它。

有人对如何解决这个问题有任何想法吗?任何帮助,将不胜感激!

4

1 回答 1

1

弄清楚了。需要向新配置文件添加大量权限。这是感兴趣的人的固定代码。它使您可以像使用 Tor 一样使用 Firefox 浏览暗网。用于控制 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/");
        .........................
于 2015-02-23T20:55:59.603 回答