Skip to content
This repository has been archived by the owner on Apr 9, 2021. It is now read-only.

Profiles Explained

dillbyrne edited this page Jan 3, 2016 · 6 revisions

A profile is a set of browser attributes and accept header values that RAS reads and applies to firefox in various ways (by modifying internal preferences, by injecting javascript and by modifying headers). These values are taken from real browsers and devices so they match with the real thing giving the expected result to sites.

Many people mistake a profile with a simple user agent string, which as you can see below is not the case.

An example profile is

"description":"Firefox 42.0 (Win 7 32)",
"useragent":"Mozilla/5.0 (Windows NT 6.1; rv:42.0) Gecko/20100101 Firefox/42.0",
"appname":"Netscape",
"appversion":"5.0 (Windows)",
"platform":"Win32",
"vendor":"",
"vendorsub":"",
"buildID":"",
"oscpu":"Windows NT 6.1; Win32",
"accept_encoding":"gzip, deflate",
"accept_default":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"accept_lang":{
	"da-DK":"da,en-US;q=0.7,en;q=0.3",
	"de-DE":"de,en-US;q=0.7,en;q=0.3",
	"en-US":"en-US,en;q=0.5",
	"es-ES":"es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3",
	"fr-FR":"fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3",
	"it-IT":"it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3",
	"ja":"ja,en-US;q=0.7,en;q=0.3",
	"ko-KR":"ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3",
	"pt-PT":"pt-PT,pt;q=0.8,en;q=0.5,en-US;q=0.3",
	"ru-RU":"ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
	"sv-SE":"sv-SE,sv;q=0.8,en-US;q=0.5,en;q=0.3",
	"sq-AL":"sq,sq-AL;q=0.8,en-us;q=0.5,en;q=0.3",
	"zh-CN":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"
},
"pixeldepth":"24",
"colordepth":"24",					"screens":"800x600,1024x600,1024x768,1152x864,1280x720,1280x768,1280x800,1280x960,1280x1024,1360x768,1366x768,1440x900,1400x1050,1600x900,1600x1200,1680x1050,1920x1080,1920x1200,2048x1152,2560x1440,2560x1600",
"profileID":"W36"

Explanation of profile entries

  • Description - A simple description of the profile. Usually consists of browser, version and Platform or OS version. This is also used in notifications and tooltips

  • useragent - The useragent string for the profile.

  • appname - The appname string for the profile.

  • platform - The platform string for the profile.

  • vendor - The vendor string for the profile. It requires script injection

  • vendorsub - The vendor sub string for the profile. It requires script injection

  • buildID - The buildID string for the profile, this is set to blank to prevent revealing the real buildID.

  • oscpu - The oscpu string for the profile.

  • accept_encoding - This value is used to set the encoding accept header.

  • accept_default - This value is used to set the default accept header.

  • accept_lang - This is used to set the current accept language header. A profile can have multiple possible accept langage headers but only one will be applied depending on the users choice. All profiles must have at least an en-US accept language header as that is the fallback language.

  • pixeldepth - This value is used to set the current pixeldepth for the screen. It requires script injection

  • colordepth - This value is used to set the current colordepth for the screen. It requires script injection

  • screens - This lists all the possible screen sizes available for the profile. If the screen size spoofing Profile option has been selected, then one of these screen sizes will be selected when the page is loaded

  • profileID - An id for the profile. It is used to keep track of what profiles have been excluded and to uniquely ID a profile. The profile ids do not have to be listed in order in the JSON file. They are numbered as they are added. The letters at the start indicate to which section they belong e.g W36 was the 36th profile added to the Windows section.

The full list of current profiles can be found at https://github.com/dillbyrne/random-agent-spoofer/blob/master/data/json/useragents.json

The following is only relevant to contributers.

When updating profiles eg from firefox 40 to firefox 41, generally all the existing firefox profiles are bumped up as they are the same except for one or two items. So we keep the existing profile IDs as they are in that case. Not all profiles can be updated like this and sometimes old profiles are removed. If this happens then the next time a new profile is added to that section it will use the old profiles ID as it would now be available.