FirefoxProfile with private mode for Selenium

1.6k Views Asked by At

I'm tying to create multiple windows of one website, so I need new identity for each. Private mode would be nice solution for me, I think. But old ways to do it doesn't give result:

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

def main():
    browser.switch_to.new_window('window')
    browser.get("https://example.com")

I couldn't find any information in docks, so maybe you can help

3

There are 3 best solutions below

0
dimmy On BEST ANSWER

I figured how to make private mode for firefox:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options


def main():
    firefox_options = Options()
    firefox_options.add_argument('-private')
    driver = webdriver.Firefox(options=firefox_options)
    # driver.get("https://example.com")


if __name__ == "__main__":
    main()

I've commented line with get to make sure that browser truly opens in private mode. You can see it in tab name.

But it didn't gave me new identity for each new window as I expected.

1
FLAK-ZOSO On

This should be the "new" way:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

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

service = Service(r"C:\Program Files (x86)\chromedriver.exe")
driver = webdriver.Chrome(service=service, options=chrome_options)

It should work the same way with Firefox.

2
undetected Selenium On

As per Selenium 4 beta 1 release notes:

Deprecate all but Options and Service arguments in driver instantiation. (#9125,#9128)

So you will see an error as:

firefox_profile has been deprecated, please pass in an Options object

You have to use an instance of Options to pass the FirefoxProfile preferences as follows:

from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.chrome.service import Service

def main():
  firefox_options = Options()
  firefox_options.set_preference("browser.privatebrowsing.autostart", True)
  s = Service('C:\\BrowserDrivers\\geckodriver.exe')
  driver = webdriver.Firefox(service=s, options=firefox_options)
  driver.get("https://www.google.com")

if __name__== "__main__" :
  main()

Browser Snapshot:

FirefoxProfile_Options


References

You can find a couple of relevant detailed discussions in: