将 selenium_webdriver(chrome) 的流量绑定到特定的网络接口/隧道

Posted

技术标签:

【中文标题】将 selenium_webdriver(chrome) 的流量绑定到特定的网络接口/隧道【英文标题】:bind traffic from selenium_webdriver(chrome) to specific network interface/tunnel 【发布时间】:2015-10-26 18:12:50 【问题描述】:

任务是通过特定的网络接口(在 linux 上)自动化一些浏览器活动。 因为我需要在页面上启动视频-我选择了 selenium(python) 并使用 selenium 制作了所有例程来播放视频,但应用程序通过默认界面。 问题 - 如何强制 chrome 使用例如 tun0? 注意:我看过类似的问题/答案,但由于缺乏 linux 编程经验,无法解决我的问题。如果可能,请提供分步指南,谢谢。

【问题讨论】:

我发现 [solution] (daniel-lange.com/archives/…) 让网络浏览器使用特定的 IP。-BIND_ADDR=10.254.64.21 LD_PRELOAD=/usr/lib/bind.so firefox ,该命令开始新FF 的实例并且它使用特定的 net_iface 但是,我无法将其链接到 webdriver,即作为 selenium code-driver = webdriver.Chrome() 的一部分启动,它也是使用默认 net_iface 的启动 web-broser。问题 - 如何使这两个命令一起工作? 【参考方案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,看起来你会在 service.py 中破解 self.env = env

【讨论】:

以上是关于将 selenium_webdriver(chrome) 的流量绑定到特定的网络接口/隧道的主要内容,如果未能解决你的问题,请参考以下文章

Python - selenium_WebDriver 鼠标键盘事件

Python中selenium_webdriver下拉框操作

精华 selenium_webdriver(python)调用js脚本

selenium_webdriver(python)控制浏览器滚动条

Selenium_webdriver+java+TestNG入门UI自动化

selenium_webdriver(python)获取元素属性值,浏览器窗口控制网页前进后退,title/url打印