web-dev-qa-db-ja.com

RSelenium:Torネットワークを使用するようにfirefoxリモートドライバーを構成する

Linuxマシンでローカルプロキシ(Tor)を使用して、FirefoxでRSeleniumを使用しようとしています。

私はTorを this tuto に従ってインストールすることに問題はなく、コマンドラインwget -qO - https://api.ipify.org; echoは新しいIPを取得します。

これで、RSeleniumでFirefoxを使用して、ポート9050のTor localhostを通過します。

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を表示する例を示します ipchicken

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で起こるのを見たいです。したがって、リモートドライバーを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}]]

何が悪いのでしょうか?


編集する

User1207289の回答の後、そしてあなたが直接 firefoxプロファイルを作成する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_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' )
)
)

しかし、それもうまくいきませんでした。

2
denis

多くの検索の後、私は方法を見つけました:RSeleniumには、Firefoxプロファイルを取得できるgetFirefoxProfile関数があります。

そのため、最初に same tuto に従ってfirefoxからプロファイルを直接構成し、それをRフォルダーにコピーしました。使用する

fprof <- getFirefoxProfile("myprofile.default")

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

仕事をしました。

0
denis