Python/Selenium 隐身/私人模式

Posted

技术标签:

【中文标题】Python/Selenium 隐身/私人模式【英文标题】:Python/Selenium incognito/private mode 【发布时间】:2015-02-22 04:12:57 【问题描述】:

我似乎找不到任何关于如何让 Selenium 在隐身模式下打开浏览器的文档。

我必须在浏览器中设置自定义配置文件吗?

【问题讨论】:

Python - Start firefox with Selenium in private mode 的可能重复项 @AlexMeng 是的,可能是重复的,但我想我已经设法在一个答案中总结了这个想法,并提供了更多特定于 python 的选项。谢谢。 @alecxe 我同意您在这里的回答更详细,因此应该优先考虑。但是,结果是您发布答案的 other 问题与此问题重复。(按照 SO 习惯投票为重复问题完全没问题答案质量较差,无论 首先 发布了哪个问题。)请注意,Meta 上的常客对发布问题及其重复问题的答案的用户持模糊看法。 【参考方案1】:

首先,由于selenium 默认启动一个具有干净、全新配置文件的浏览器,您实际上已经在私密浏览。参考:

Python - Start firefox with Selenium in private mode How might I simulate a private browsing experience in Watir? (Selenium)

但无论如何,您都可以严格执行/打开隐身/私人模式。

对于 chrome 通行证--incognito command-line argument:

--incognito 使浏览器直接以隐身模式启动。

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")

driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://google.com')

仅供参考,它会打开:

对于 Firefox,将 browser.privatebrowsing.autostart 设置为 True

from selenium import webdriver

firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)

driver = webdriver.Firefox(firefox_profile=firefox_profile)

仅供参考,这对应于设置中的以下复选框:

【讨论】:

你知道如何在Firefox中使用吗? 我理解你在“Python - 在私有模式下使用 Selenium 启动 firefox”中的意思,但我同时运行多个东西并且需要 ingonito,否则 url 会根据之前的内容重定向正在做。谢谢 在测试时强制执行实际的隐身模式很重要。例如,Safari 在私有模式下禁止写入本地存储。因此,以检测与此限制相关的错误的方式运行测试非常重要。 复制/粘贴此代码对我不起作用(最新的 Linux/Mint 发行版)。一切正常,只是它没有以隐身模式启动。有什么想法吗? 请注意,在测试亚马逊等大型网站时,隐身模式似乎要快得多。我认为这是因为获取个性化广告等的连接开销更少,而且加载和拆卸速度更快。【参考方案2】:

PowerShell

try
    # Import the Selenium DLLs
    Add-Type -Path "$Seleniumlib\Selenium.WebDriverBackedSelenium.dll"
    Add-Type -Path "$Seleniumlib\WebDriver.dll"
    Add-Type -Path "$Seleniumlib\WebDriver.Support.dll"

catch [Exception]
    Write-Host ("Error: 0" -f $_.Exception.Message)
    exit 1


$options = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$options.AddArgument("--incognito")
$driver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($options)

【讨论】:

【参考方案3】:

有一种非常简单的方法可以让窗口以隐身模式打开:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# incognito window
chrome_options.add_argument("--incognito")

您还可以使用此库来最大化窗口等,请参阅文档:https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/Chrome/Options.html

【讨论】:

【参考方案4】:

我已经使用 ChromeOptions 和 FirefoxOptions 在隐身/私人模式下启动了 Chrome 和 Firefox,并使用 Java 中的代码 sn-ps 成功,如下所示:

    //For Firefox
    FirefoxOptions options = new FirefoxOptions();
    options.addArguments("-private");
    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability("moz:firefoxOptions",options);

    //For Chrome
    ChromeOptions options = new ChromeOptions();
    options.addArguments("-incognito");
    caps.setCapability(ChromeOptions.CAPABILITY, options);

    WebDriver driver = new RemoteWebDriver(new URL(URL), caps);

【讨论】:

【参考方案5】:

对于火狐:(Python) ==>

from selenium import webdriver    
firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument("--private")
browser = webdriver.Firefox(firefox_options=firefox_options)

【讨论】:

关闭:options.add_argument("-private")developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options 它仍然有效。但是得到了这个:DeprecationWarning: use options instead of firefox_options browser = webdriver.Firefox(firefox_options=firefox_options) ("--private"), ("-private ") 对于 Linux 来说都是一样的。不确定Windows!您也可以使用("-private-window") 而不是("-private")。 @wp78de @luney ,如果 options 工作而不是 firefox_options,那么使用它!【参考方案6】:

注意:chrome_options 现已弃用。我们可以使用 'options' 代替 chrome_options

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--incognito")

driver = webdriver.Chrome(options=options)
driver.get('https://google.com')

【讨论】:

【参考方案7】:

在 Chrome 浏览器中,您可以使用 Python 执行此操作,如下所示

正如您在使用 chrome 时所看到的,您可以在 chrome 浏览器的选项菜单部分选择隐身模式。因此,当您使用 selenium 时,您可以使用来更改选项的内容

chrome_options = webdriver.ChromeOptions()

所以,代码是:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")

driver = webdriver.Chrome(executable_path="<path of chrome_driver.exe file>",options=chrome_options)

因此,您唯一需要做的就是将“webdriver.Chrome”这个给定值赋予它的另一个参数,即“options”。

【讨论】:

【参考方案8】:

对于带有opera的python

from selenium import webdriver

options =  webdriver.opera.webdriver.Options()
options.add_argument("private")
driver = webdriver.Opera(executable_path="operadriver",options=options)

【讨论】:

【参考方案9】:
//We need to add argument "--incogneto" in ChromeOptions object and pass this ChromeOptions instance to the web driver initialization.  
  
    
    ChromeOptions options = new ChromeOptions()
    options.addArgument("start-maximized");
    options.addArgument("--incognito");
    ChromeDriver driver = new ChromeDriver(options);
    driver.get("https://investopedia.com");

【讨论】:

以上是关于Python/Selenium 隐身/私人模式的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Chrome 的隐身模式检索资源比普通模式快?

让用户在浏览时使用隐身模式而不是正常浏览

如何在隐身模式下启用Chrome扩展程序?

如何在隐身模式下启用我的 chrome 扩展程序?

带有浏览器库的 RobotFrameWork 以隐身模式启动,但需要正常模式

以普通+隐身模式打开多个浏览器