6
votes

I have a code running browser using 'selenium-webdriver'. It runs on Ubuntu.

I have to override userAgent so it will look like the requests from the browser are coming from Windows (i.e. the value of User-Agent requests' header).

Here is my NodeJS code:

var firefox = require('selenium-webdriver/firefox');

var profile = new firefox.Profile();
profile.setPreference('general.useragent.override', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36');

var options = new firefox.Options().setProfile(profile);
console.log(profile);
var driver = new firefox.Driver(options);

driver.get('http://whatsmyuseragent.com/');

The userAgent that appears is

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0

Here is the console.log(profile); output (as you can see - 'general.useragent.override': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36' appears there, but doesn't effect the browser settings):

Profile {
  preferences_: 
   { 'browser.dom.window.dump.enabled': true,
     'browser.laterrun.enabled': false,
     'browser.newtab.url': 'about:blank',
     'browser.newtabpage.enabled': false,
     'browser.startup.page': 0,
     'browser.startup.homepage': 'about:blank',
     'browser.startup.homepage_override.mstone': 'ignore',
     'browser.usedOnWindows10.introURL': 'about:blank',
     'dom.max_chrome_script_run_time': 30,
     'dom.max_script_run_time': 30,
     'dom.report_all_js_exceptions': true,
     'javascript.options.showInConsole': true,
     'startup.homepage_welcome_url': 'about:blank',
     'startup.homepage_welcome_url.additional': 'about:blank',
     webdriver_accept_untrusted_certs: true,
     webdriver_assume_untrusted_issuer: true,
     'app.update.auto': false,
     'app.update.enabled': false,
     'browser.displayedE10SNotice': 4,
     'browser.download.manager.showWhenStarting': false,
     'browser.EULA.override': true,
     'browser.EULA.3.accepted': true,
     'browser.link.open_external': 2,
     'browser.link.open_newwindow': 2,
     'browser.offline': false,
     'browser.reader.detectedFirstArticle': true,
     'browser.safebrowsing.enabled': false,
     'browser.safebrowsing.malware.enabled': false,
     'browser.search.update': false,
     'browser.selfsupport.url': '',
     'browser.sessionstore.resume_from_crash': false,
     'browser.shell.checkDefaultBrowser': false,
     'browser.tabs.warnOnClose': false,
     'browser.tabs.warnOnOpen': false,
     'datareporting.healthreport.service.enabled': false,
     'datareporting.healthreport.uploadEnabled': false,
     'datareporting.healthreport.service.firstRun': false,
     'datareporting.healthreport.logging.consoleEnabled': false,
     'datareporting.policy.dataSubmissionEnabled': false,
     'datareporting.policy.dataSubmissionPolicyAccepted': false,
     'devtools.errorconsole.enabled': true,
     'dom.disable_open_during_load': false,
     'extensions.autoDisableScopes': 10,
     'extensions.blocklist.enabled': false,
     'extensions.checkCompatibility.nightly': false,
     'extensions.logging.enabled': true,
     'extensions.update.enabled': false,
     'extensions.update.notifyUser': false,
     'javascript.enabled': true,
     'network.manage-offline-status': false,
     'network.http.phishy-userpass-length': 255,
     'offline-apps.allow_by_default': true,
     'prompts.tab_modal.enabled': false,
     'security.csp.enable': false,
     'security.fileuri.origin_policy': 3,
     'security.fileuri.strict_origin_policy': false,
     'signon.rememberSignons': false,
     'toolkit.networkmanager.disable': true,
     'toolkit.telemetry.prompted': 2,
     'toolkit.telemetry.enabled': false,
     'toolkit.telemetry.rejected': true,
     'xpinstall.signatures.required': false,
     'xpinstall.whitelist.required': false,
     'general.useragent.override': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36' },
  nativeEventsEnabled_: true,
  template_: undefined,
  port_: 0,
  extensions_: [] }

I tried to set the general.useragent.override manually (following http://www.howtogeek.com/113439/how-to-change-your-browsers-user-agent-without-installing-any-extensions/) - it works! Though it doesn't effect the settings of the instances that are opened with selenium-webdriver driver (anyway I prefer to be able to set it pragmatically).

Any idea why doesn't it work for me?

1

1 Answers

0
votes

As far as I know the user Agent can't be set programatically with firefox. Instead I suggest you to use chromium with the ChromeDriver. As the following python example shows you can easily set the User Agent to your desired value.

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--user-agent=\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36\"')
driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get('https://www.whatsmyua.info/')

If you want to change your userAgent during runtime of your script you will need to start a new driver instance.