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_port
、network.proxy.socks_port
、network.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' )
)
)
しかし、それもうまくいきませんでした。
多くの検索の後、私は方法を見つけました:RSelenium
には、Firefoxプロファイルを取得できるgetFirefoxProfile
関数があります。
そのため、最初に same tuto に従ってfirefoxからプロファイルを直接構成し、それをRフォルダーにコピーしました。使用する
fprof <- getFirefoxProfile("myprofile.default")
remDr <- remoteDriver(
remoteServerAddr = "localhost",
port = 4444L,
browserName = "firefox",
extraCapabilities = fprof
)
仕事をしました。