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
默认启动一个具有干净、全新配置文件的浏览器,您实际上已经在私密浏览。参考:
但无论如何,您都可以严格执行/打开隐身/私人模式。
对于 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 隐身/私人模式的主要内容,如果未能解决你的问题,请参考以下文章