首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSelenium:将火狐远程驱动程序配置为使用Tor网络

RSelenium:将火狐远程驱动程序配置为使用Tor网络
EN

Stack Overflow用户
提问于 2020-05-28 21:10:39
回答 2查看 548关注 0票数 2

我试图在linux机器上使用本地代理(Tor)来使用火狐。

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

现在,我愿意在通过端口9050的Tor本地主机上使用火狐和RSelenium:

代码语言:javascript
复制
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 (Selenie-server-Standone-2.53.0.jar),它可以很好地工作在常规的RSelenium上:下面是一个在伊比克上显示ip的示例

代码语言:javascript
复制
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。现在我想看到它发生在托尔身上。因此,在将远程驱动程序与firefox连接时,我尝试添加代理选项:

代码语言:javascript
复制
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。所以这是行不通的。独立用户表示,它确实使用选项执行:例如

代码语言:javascript
复制
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}]]

我做错什么了?

编辑

在answer 1207289的回答之后,在意识到可以直接在创建firefox配置文件中使用RSelenium之后,我尝试了:

代码语言:javascript
复制
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,但没有用。

我也试过

代码语言:javascript
复制
eCaps <- list("moz:firefoxOptions" = list(
  args = c('network.proxy.socks=127.0.0.1:9050' ,'network.proxy.type=1' )
)
)

但这也不起作用。

EN

回答 2

Stack Overflow用户

发布于 2020-06-02 18:51:19

我可以用下面的webdriver和firefox连接到TOR。只需确保TOR已安装并正在运行。我在mac (catalina)上用过。您可以根据您的操作系统检查端口设置,以防它们不同。

它在c#中,但是您几乎可以在任何绑定中这样做。

代码语言:javascript
复制
            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

票数 2
EN

Stack Overflow用户

发布于 2020-06-08 07:28:26

经过大量搜索,我找到了一种方法:RSelenium有允许获取火狐配置文件的getFirefoxProfile函数。

因此,我首先从火狐中直接配置了相同的图图后的配置文件,并将其复制到我的R文件夹中。使用

代码语言:javascript
复制
fprof <- getFirefoxProfile("myprofile.default")

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

确实起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62074583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档