RSelenium: настроить firefox удаленный драйвер для использования сети Tor - PullRequest
2 голосов
/ 29 мая 2020

Я пытаюсь использовать RSelenium с firefox, используя локальный прокси (Tor) на машине linux.

У меня не было проблем с установкой Tor после этого tuto , и командная строка wget -qO - https://api.ipify.org; echo дает мне новый IP.

Теперь я готов использовать firefox с 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                                                           *:*

I используйте автономный селен 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}]]

Что я делаю неправильно?


Редактировать

После ответа пользователя1207289 и после того, как понял чтобы вы могли напрямую создать 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' )
)
)

, но это тоже не сработало.

Ответы [ 2 ]

2 голосов
/ 02 июня 2020

Я мог подключиться к TOR с помощью webdriver и firefox с помощью нижеприведенного. Просто убедитесь, что TOR установлен и работает. Использовал на ма c (каталина). Вы можете проверить настройки порта в соответствии с вашей ОС, если они отличаются.

Он находится в 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 голосов
/ 08 июня 2020

После долгих поисков я нашел способ: RSelenium имеет функцию getFirefoxProfile, которая позволяет получить профиль firefox.

Итак, я сначала настроил профиль прямо из firefox следуя тому же туто и скопировал его в мою папку R. Используя

fprof <- getFirefoxProfile("myprofile.default")

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

Работало.

...