r语言 - RSelenium:配置 Firefox 远程驱动程序以使用 Tor 网络



我正在尝试使用Linux机器上的本地代理(Tor(将RSelenium与Firefox一起使用。

我在这个 tuto 之后安装 Tor 没有问题,命令行wget -qO - https://api.ipify.org; echo确实为我提供了一个新 IP。

现在我愿意使用带有 RSelenium 的 Firefox 通过端口 9050 上的 Tor 本地主机:

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一起使用:这是一个在ipChicken上显示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 上。因此,我尝试在将远程驱动程序与火狐连接时添加代理选项:

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}]]

我做错了什么?


编辑

在user1207289的回答之后,在意识到您可以直接在RSelenium中创建Firefox配置文件后,我尝试了:

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_portnetwork.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' )
)
)

但这也没有用。

我可以使用网络驱动程序和火狐连接到 TOR,如下所示。只需确保 TOR 已安装并正在运行即可。我在Mac(卡塔琳娜(上使用了它。您可以根据您的 操作系统 ,以防它们不同。

它是在 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

经过大量搜索,我找到了一种方法:RSelenium具有getFirefoxProfile功能,可以获取Firefox配置文件。

所以我首先直接从 firefox 配置配置文件,遵循相同的 tuto,并将其复制到我的 R 文件夹中。用

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

确实工作了。

相关内容

最新更新