привязать трафик от selenium_webdriver(chrome) к определенному сетевому интерфейсу/туннелю

задача состоит в том, чтобы автоматизировать некоторые действия браузера через определенный сетевой интерфейс (в linux). так как мне нужно инициировать видео на странице, я выбираю селен (питон) и делаю всю процедуру для воспроизведения видео с использованием селена, но приложение работает через интерфейс по умолчанию. вопрос- как заставить хром использовать например tun0? примечание: я видел похожие вопросы/ответы, но не смог решить свою проблему из-за отсутствия опыта программирования в Linux. если возможно дайте пошаговую инструкцию, спасибо.


person bay    schedule 26.10.2015    source источник
comment
Я нашел [решение] (daniel-lange. com/archives/), чтобы веб-браузер использовал определенный IP-адрес. -BIND_ADDR=10.254.64.21 LD_PRELOAD=/usr/lib/bind.so firefox , эта команда запускает новый экземпляр FF и использует определенный net_iface, однако , я не могу связать его с веб-драйвером, т.е. запустить как часть selenium code-driver = webdriver.Chrome(), который также инициирует веб-браузер, который использует net_iface по умолчанию. ВОПРОС - как заставить эти две команды работать вместе?   -  person bay    schedule 27.10.2015


Ответы (1)


Чтобы заставить его работать в Firefox, я выполнил https://daniel-lange.com/archives/53-Binding-applications-to-a-specific-IP.html для создания /usr/lib/bind.so

Затем я взломал /usr/lib/python2.6/site-packages/selenium/webdriver/firefox/firefox_binary.py на следующее:

#self._firefox_env['LD_PRELOAD'] = self.NO_FOCUS_LIBRARY_NAME
self._firefox_env['LD_PRELOAD'] = "/usr/lib/bind.so"
self._firefox_env['BIND_ADDR'] = "198.58.118.236"

Закомментированная строка была исходной строкой.

Для Chrome, похоже, вы бы взломали self.env = env в service.py.

person Eric Klien    schedule 17.05.2017