Python - 无头 Firefox

17
最近我花了几天时间试用了 Selenium、Tor 和 Firefox 的组合完成多个任务。我成功撰写了一个简单的 Python 脚本,通过 Selenium 接管 Firefox,而 Firefox 则通过 Tor 来保护隐私。
现在,我想要找到一种节省资源的方法,于是我想到了运行 Firefox 无头模式,但我发现这并不是一个常见的功能。我正在寻找实现这一目标的方法。选择 Firefox 而不是一些基于终端的浏览器的原因是因为我正在使用 Firefox 中的扩展程序“TorButton”。它内置了 JavaScript 注入,有助于提高隐私保护水平。
如果有人以前做过类似的事情(我相信很多人都做过!),希望能给予一些指导和建议,非常感谢!
5个回答

11

啊,这太棒了!不过有没有 Windows 版本或者一些在 Windows 上也能运行的方法呢? - Dustin
@Dboy1612看起来不是这样,这是一个相当Unix的东西,https://dev59.com/i3NA5IYBdhLWcg3wfN2O - dbr
@Dustin 自从2017年9月28日发布的56版本以来,Firefox无头模式已在所有三个主要操作系统上提供。现在你可以通过Selenium轻松实现这一点,请查看我的下面的答案。 - Grey Li

10

自2017年9月28日发布的版本56起,Firefox无头模式在所有三个主要操作系统中都可用。

您可以通过webdriver.FirefoxOptions()来设置无头模式,就像您在Chrome中所做的那样:

from selenium import webdriver

options = webdriver.FirefoxOptions()
options.add_argument('headless')
driver = webdriver.Firefox(options=options)

P.S. 如果您使用的是Selenium < 3.8.0版本,您需要将webdriver.FirefoxOptions()替换为webdriver.firefox.options.Options()(请参见PR#5120)。另外,使用环境变量MOZ_HEADLESS也可以达到同样的效果。

import os
from selenium import webdriver

os.environ['MOZ_HEADLESS'] = '1'  # <- this line
driver = webdriver.Firefox()

5

或者使用真正的无头浏览器,比如 Phantomjs,它是轻量级的,并且与selenium很好地集成在一起。

from selenium import webdriver
driver=webdriver.PhantomJS('your pahtomjs exe file locaiton')

12
问题的标题是:“Firefox”。 - yonatan

0

如果最终找到答案:

首先,要做的第一件事是:
确保您正确设置了火狐驱动程序路径。

然后:

sudo apt-add-repository ppa:mozillateam/firefox-next
sudo apt-get update
sudo apt-get install firefox xvfb
Xvfb :10 -ac &
export DISPLAY=:10

最后运行此命令以查看我们的实现是否有任何错误。

firefox

如果没有任何输出,请单击ctrl+c
好的,在那之后编写这些代码。

from selenium import webdriver

class FireFoxLoadTest:
    def __init__(self):
        # 1 - Load a fire fox web driver
        self.driver = webdriver.Firefox()

    def do_test(self, url):
        # 2 - Start to check url on the fire fox browser
        result = self.driver.get(url)
        self.driver.quit()
        return self.result

fire_fox = FireFoxLoadTest()
res = fire_fox.do_test('http://www.google.com')
print(res)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接