Skip to content

Commit

Permalink
feat(internet): update to simplified modern user-agent list (#3324)
Browse files Browse the repository at this point in the history
* feat(internet): update to simplified modern user-agent list

* fix reviews suggestions, fix extraneous }

---------

Co-authored-by: ST-DDT <ST-DDT@gmx.de>
  • Loading branch information
matthewmayer and ST-DDT authored Dec 13, 2024
1 parent 13538a7 commit 3c7abb5
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 349 deletions.
5 changes: 5 additions & 0 deletions src/definitions/internet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,9 @@ export type InternetDefinition = LocaleEntry<{
http_status_code: Record<HTTPStatusCodeType, number[]>;

jwt_algorithm: string[];

/**
* List of user agent patterns.
*/
user_agent_pattern: string[];
}>;
2 changes: 2 additions & 0 deletions src/locales/base/internet/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ import type { InternetDefinition } from '../../..';
import emoji from './emoji';
import http_status_code from './http_status_code';
import jwt_algorithm from './jwt_algorithm';
import user_agent_pattern from './user_agent_pattern';

const internet: InternetDefinition = {
emoji,
http_status_code,
jwt_algorithm,
user_agent_pattern,
};

export default internet;
22 changes: 22 additions & 0 deletions src/locales/base/internet/user_agent_pattern.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
export default [
//typical IE user agent on Windows
'Mozilla/5.0 (compatible; MSIE {{number.int({"min":6,"max":10})}}.0; Windows NT {{helpers.arrayElement(["5.1","5.2","6.0","6.1","6.2","6.3","10.0"])}}; Trident/{{number.int({"min":4,"max":7})}}.0)',
//typical Edge user agent on Windows
'Mozilla/5.0 (Windows NT {{helpers.arrayElement(["5.1","5.2","6.0","6.1","6.2","6.3","10.0"])}}; Win64; x64) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} Edg/{{number.int({"min":110,"max":131})}}.{{system.semver}}',
//typical Safari user agent on MacOS
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Version/16.1 Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}}',
//typical Firefox user agent on MacOS
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:{{number.int({"min":75, "max":133})}}.0) Gecko/20100101 Firefox/{{number.int({"min":75, "max":133})}}.0',
//typical Chrome user agent on MacOS
'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_15_7) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}}',
//typical Firefox user agent on Linux
'Mozilla/5.0 (X11; Linux x86_64; rv:{{number.int({"min":75,"max":133})}}.0) Gecko/20100101 Firefox/{{number.int({"min":75,"max":133})}}.0',
//typical user agent for a bot
'FakerBot/{{system.semver}}',
//typical Googlebot user agent
'Googlebot/2.1 (+http://www.google.com/bot.html)',
//typical Safari user agent on iOS
'Mozilla/5.0 (iPhone; CPU iPhone OS {{number.int({"min":10,"max":18})}}_{{number.int({"min":0,"max":4})}} like Mac OS X) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Version/{{number.int({"min":10,"max":18})}}_{{number.int({"min":0,"max":4})}} Mobile/15E148 Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}',
//typical Chrome user agent on Android
'Mozilla/5.0 (Linux; Android {{number.int({"min":5,"max":13})}}; {{helpers.arrayElement(["SM-G998U","SM-G998B","SM-G998N","SM-G998P","SM-T800"])}}) AppleWebKit/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}} (KHTML, like Gecko) Chrome/{{number.int({"min":55,"max":131})}}.{{system.semver}} Mobile Safari/{{number.int({"min":536,"max":605})}}.{{number.int({"min":0,"max":99})}}',
];
7 changes: 4 additions & 3 deletions src/modules/internet/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { toBase64Url } from '../../internal/base64';
import { deprecated } from '../../internal/deprecated';
import { ModuleBase } from '../../internal/module-base';
import { charMapping } from './char-mappings';
import * as random_ua from './user-agent';

export type EmojiType =
| 'smiley'
Expand Down Expand Up @@ -798,12 +797,14 @@ export class InternetModule extends ModuleBase {
*
* @example
* faker.internet.userAgent()
* // 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_8_8) AppleWebKit/536.0.2 (KHTML, like Gecko) Chrome/27.0.849.0 Safari/536.0.2'
* // 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1 like Mac OS X) AppleWebKit/537.19.86 (KHTML, like Gecko) Version/18_3 Mobile/15E148 Safari/598.43'
*
* @since 2.0.1
*/
userAgent(): string {
return random_ua.generate(this.faker);
return this.faker.helpers.fake(
this.faker.definitions.internet.user_agent_pattern
);
}

/**
Expand Down
Loading

0 comments on commit 3c7abb5

Please sign in to comment.