Skip to content

Instantly share code, notes, and snippets.

@voxpelli
Last active June 11, 2019 20:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save voxpelli/9373549193546677782cffdd05b9a0c2 to your computer and use it in GitHub Desktop.
Save voxpelli/9373549193546677782cffdd05b9a0c2 to your computer and use it in GitHub Desktop.
Experiment in parsing the extra data that Facebook sends in its User Agent string
const fbUserAgentPattern = /\]|(?:[\;\[](?=FB|$]))/;
const parseFbUserAgentOptions = (input) => input.split(fbUserAgentPattern)
.filter(text => text.startsWith('FB'))
.reduce(text => {
const [ name, value ] = text.split('/');
return { name, value };
}, result);
const prettifyFbUserAgentOptions = (fbUserAgentOptions) => fbUserAgentOptions.map(({name, value}) => name + ': ' + value).join('\n');
const fb = parseFbUserAgentOptions('Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBAV/224.0.0.50.109;FBBV/157638993;FBDV/iPhone9,3;FBMD/iPhone;FBSN/iOS;FBSV/12.3.1;FBSS/2;FBCR/Tele2;FBID/phone;FBLC/sv_SE;FBOP/5;FBRV/0]');
const messenger = parseFbUserAgentOptions('Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/MessengerForiOS;FBDV/iPhone9,3;FBMD/iPhone;FBSN/iOS;FBSV/12.3.1;FBSS/2;FBCR/Tele2;FBID/phone;FBLC/sv_SE;FBOP/5]');
console.log('\Facebook iOS:\n');
console.log(prettifyFbUserAgentOptions(fb));
console.log('\nMessenger iOS:\n');
console.log(prettifyFbUserAgentOptions(messenger));

Output

Facebook iOS:

  • FBAN: FBIOS
  • FBAV: 224.0.0.50.109
  • FBBV: 157638993
  • FBDV: iPhone9,3
  • FBMD: iPhone
  • FBSN: iOS
  • FBSV: 12.3.1
  • FBSS: 2
  • FBCR: Tele2
  • FBID: phone
  • FBLC: sv_SE
  • FBOP: 5
  • FBRV: 0

Messenger iOS:

  • FBAN: MessengerForiOS
  • FBDV: iPhone9,3
  • FBMD: iPhone
  • FBSN: iOS
  • FBSV: 12.3.1
  • FBSS: 2
  • FBCR: Tele2
  • FBID: phone
  • FBLC: sv_SE
  • FBOP: 5

Interpretations / guesses

  • FBAN: App ideNtifier? F+M
  • FBAV: App Version? F
  • FBBV: Build Version? F
  • FBDV: Device Version? F+M
  • FBMD: Machine Device? F+M
  • FBSN: System ideNtifier? F+M
  • FBSV: System Version? F+M
  • FBSS: ? "System *"? F+M (2 in both cases)
  • FBCR: Carrier? F+M
  • FBLC: Language Code? F+M
  • FBOP: ? F+M (5 in both cases)
  • FBRV: ? F
  • FBID: ? (Type of device? Tablet? Phone? etc)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment