Skip to content
/ faker Public
  • Sponsor faker-js/faker

  • Notifications You must be signed in to change notification settings
  • Fork 953

Commit 3c7abb5

Browse files
matthewmayerST-DDT
andauthoredDec 13, 2024··
feat(internet): update to simplified modern user-agent list (#3324)
* feat(internet): update to simplified modern user-agent list * fix reviews suggestions, fix extraneous } --------- Co-authored-by: ST-DDT <ST-DDT@gmx.de>
1 parent 13538a7 commit 3c7abb5

File tree

7 files changed

+37
-349
lines changed

7 files changed

+37
-349
lines changed
 

‎src/definitions/internet.ts

+5
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ export type InternetDefinition = LocaleEntry<{
3131
http_status_code: Record<HTTPStatusCodeType, number[]>;
3232

3333
jwt_algorithm: string[];
34+
35+
/**
36+
* List of user agent patterns.
37+
*/
38+
user_agent_pattern: string[];
3439
}>;

‎src/locales/base/internet/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import type { InternetDefinition } from '../../..';
66
import emoji from './emoji';
77
import http_status_code from './http_status_code';
88
import jwt_algorithm from './jwt_algorithm';
9+
import user_agent_pattern from './user_agent_pattern';
910

1011
const internet: InternetDefinition = {
1112
emoji,
1213
http_status_code,
1314
jwt_algorithm,
15+
user_agent_pattern,
1416
};
1517

1618
export default internet;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
export default [
2+
//typical IE user agent on Windows
3+
'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)',
4+
//typical Edge user agent on Windows
5+
'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}}',
6+
//typical Safari user agent on MacOS
7+
'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})}}',
8+
//typical Firefox user agent on MacOS
9+
'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',
10+
//typical Chrome user agent on MacOS
11+
'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})}}',
12+
//typical Firefox user agent on Linux
13+
'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',
14+
//typical user agent for a bot
15+
'FakerBot/{{system.semver}}',
16+
//typical Googlebot user agent
17+
'Googlebot/2.1 (+http://www.google.com/bot.html)',
18+
//typical Safari user agent on iOS
19+
'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})}}',
20+
//typical Chrome user agent on Android
21+
'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})}}',
22+
];

‎src/modules/internet/index.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { toBase64Url } from '../../internal/base64';
44
import { deprecated } from '../../internal/deprecated';
55
import { ModuleBase } from '../../internal/module-base';
66
import { charMapping } from './char-mappings';
7-
import * as random_ua from './user-agent';
87

98
export type EmojiType =
109
| 'smiley'
@@ -798,12 +797,14 @@ export class InternetModule extends ModuleBase {
798797
*
799798
* @example
800799
* faker.internet.userAgent()
801-
* // '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'
800+
* // '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'
802801
*
803802
* @since 2.0.1
804803
*/
805804
userAgent(): string {
806-
return random_ua.generate(this.faker);
805+
return this.faker.helpers.fake(
806+
this.faker.definitions.internet.user_agent_pattern
807+
);
807808
}
808809

809810
/**

‎src/modules/internet/user-agent.ts

-340
This file was deleted.

‎test/modules/__snapshots__/internet.spec.ts.snap

+3-3
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ exports[`internet > 42 > url > with slash appended 1`] = `"https://hospitable-un
110110

111111
exports[`internet > 42 > url > without slash appended and with http protocol 1`] = `"http://hospitable-unit.net"`;
112112

113-
exports[`internet > 42 > userAgent 1`] = `"Mozilla/5.0 (X11; Linux i686; rv:13.5) Gecko/20100101 Firefox/13.5.1"`;
113+
exports[`internet > 42 > userAgent 1`] = `"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:131.0) Gecko/20100101 Firefox/118.0"`;
114114

115115
exports[`internet > 42 > userName > noArgs 1`] = `"Garnet.Reynolds-Miller15"`;
116116

@@ -254,7 +254,7 @@ exports[`internet > 1211 > url > with slash appended 1`] = `"https://velvety-tar
254254

255255
exports[`internet > 1211 > url > without slash appended and with http protocol 1`] = `"http://velvety-tarragon.biz"`;
256256

257-
exports[`internet > 1211 > userAgent 1`] = `"Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"`;
257+
exports[`internet > 1211 > userAgent 1`] = `"Mozilla/5.0 (Linux; Android 13; SM-G998B) AppleWebKit/605.67 (KHTML, like Gecko) Chrome/107.7.3.6 Mobile Safari/592.76"`;
258258

259259
exports[`internet > 1211 > userName > noArgs 1`] = `"Tito67"`;
260260

@@ -398,7 +398,7 @@ exports[`internet > 1337 > url > with slash appended 1`] = `"https://fatal-co-pr
398398

399399
exports[`internet > 1337 > url > without slash appended and with http protocol 1`] = `"http://fatal-co-producer.biz"`;
400400

401-
exports[`internet > 1337 > userAgent 1`] = `"Mozilla/5.0 (Windows NT 5.3; WOW64; rv:8.4) Gecko/20100101 Firefox/8.4.3"`;
401+
exports[`internet > 1337 > userAgent 1`] = `"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/547.27.45 (KHTML, like Gecko) Version/16.1 Safari/558.51.26"`;
402402

403403
exports[`internet > 1337 > userName > noArgs 1`] = `"Devyn.Gottlieb"`;
404404

‎test/modules/internet.spec.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -841,9 +841,7 @@ describe('internet', () => {
841841
expect(ua).toBeTruthy();
842842
expect(ua).toBeTypeOf('string');
843843
expect(ua.length).toBeGreaterThanOrEqual(1);
844-
expect(ua).toMatch(
845-
/^(([^\d]+\/[\dA-Za-z.]+(\s\(.*\)))|([^\d]+\/[\dA-Za-z.]+(\s\(.*\)*))(\s[^\d]+\/[\dA-Za-z.]+(\s\(.*\)*))*)$/
846-
);
844+
expect(ua).includes('/');
847845
});
848846
});
849847

0 commit comments

Comments
 (0)
Please sign in to comment.