RSelenium:配置firefox remotedriver使用Tor网络。

问题描述 投票:2回答:1

我试图在linux机器上使用本地代理(Tor)与firefox一起使用RSelenium。

我在安装Tor时没有遇到任何问题,如下 本图集和命令行 wget -qO - https://api.ipify.org; echo 做给我一个新的IP。

现在我愿意使用火狐与RSelenium通过Tor本地主机9050端口。

State       Recv-Q Send-Q                                 Local Address:Port                                                Peer Address:Port
LISTEN      0      128                                        127.0.0.1:9050                                                           *:*
LISTEN      0      128                                        127.0.0.1:9051                                                           *:*

我使用了一个独立的selenium java (selenium-server-standalone-2.53.0.jar),它与普通的RSelenium一起工作得很好:下面是一个例子,让IP显示于 鸡肉

library(RSelenium)

remDr <- remoteDriver(
  remoteServerAddr = "localhost",
  port = 4444L,
  browserName = "firefox"
)

remDr$open()
remDr$navigate("https://ipchicken.com/")
ip <- remDr$findElements(using = "css", value ='b')
print(ip[[1]]$getElementText())

而且我确实得到了我的IP。现在我想看到它发生与Tor。因此,我试图添加代理选项,当连接remotedriver与firefox。

eCaps <- list("moz:firefoxOptions" = list(
  args = c('--proxy-server=localhost:9050'
  )))

remDr <- remoteDriver(
  remoteServerAddr = "localhost",
  port = 4444L,
  browserName = "firefox",
  extraCapabilities = eCaps
)

我试过 '--proxy-server=localhost:9050', '--proxy-server=http://localhost:9050','--proxy-server=socks5://localhost:9050', '--proxy-server=127.0.0.1:9050'它没有输出任何错误,并给了我我的初始IP。所以它是不工作的。单机版说它在执行时有以下选项:例如......。

22:59:10.288 INFO - Executing: [new session: Capabilities [{nativeEvents=true, browserName=firefox, javascriptEnabled=true, moz:firefoxOptions={args=--proxy-server= 127.0.0.1:9050}, version=, platform=ANY}]])
22:59:10.297 INFO - Creating a new session for Capabilities [{nativeEvents=true, browserName=firefox, javascriptEnabled=true, moz:firefoxOptions={args=--proxy-server= 127.0.0.1:9050}, version=, platform=ANY}]
22:59:30.323 INFO - Done: [new session: Capabilities [{nativeEvents=true, browserName=firefox, javascriptEnabled=true, moz:firefoxOptions={args=--proxy-server= 127.0.0.1:9050}, version=, platform=ANY}]]

我做错了什么?


编辑

在用户1207289的回答之后,在意识到你可以直接进行 创建火狐档案RSelenium我试过了

eCaps <- makeFirefoxProfile(list(network.proxy.type = 1,
                                 network.proxy.socks = "127.0.0.1",
                                 network.proxy.socks_port = 9050,
                                 network.proxy.socks_version = 5))

remDr <- remoteDriver(
  remoteServerAddr = "localhost",
  port = 4444L,
  browserName = "firefox",
  extraCapabilities = eCaps 
)

我用整数来表示 network.proxy.socks_port, network.proxy.socks_portnetwork.proxy.type 因为 这个问题但也试过用性格,没有成功。我试过用和不用 network.proxy.socks_version = 5但它没有工作(我得到我的正常IP)。我试过 network.proxy.socks_port = 9150但它没有工作。

我还试过

eCaps <- list("moz:firefoxOptions" = list(
  args = c('network.proxy.socks=127.0.0.1:9050' ,'network.proxy.type=1' )
)
)

但这也没有用。

r selenium proxy tor rselenium
1个回答
1
投票

我可以使用webdriver和firefox连接到TOR与下面的 。只要确保TOR已经安装并运行。我在mac上用的是catalina。你可以根据你的操作系统检查端口设置 , 如果他们是不同的。

它是在c#中,但你可以几乎做任何绑定

            FirefoxOptions firefoxOptions = new FirefoxOptions();
            firefoxOptions.SetPreference("network.proxy.type", 1);
            firefoxOptions.SetPreference("network.proxy.socks", "127.0.0.1");
            firefoxOptions.SetPreference("network.proxy.socks_port", 9150);

            FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();

            IWebDriver driver = new FirefoxDriver(service, firefoxOptions);

当这打开一个firefox浏览器实例时,只需访问 https:/check.torproject.org。 来检查它是否连接到TOR。这将确认你已经连接,并将显示你的新的IP也


0
投票

经过多方寻找,我找到了一个办法。RSelenium 是否有... getFirefoxProfile 函数,可以获得firefox配置文件。

因此,我首先直接从firefox配置配置文件,如下所示 同图 并将其复制到我的R文件夹中。使用

fprof <- getFirefoxProfile("myprofile.default")

remDr <- remoteDriver(
  remoteServerAddr = "localhost",
  port = 4444L,
  browserName = "firefox",
  extraCapabilities = fprof
)

确实有效。

© www.soinside.com 2019 - 2024. All rights reserved.