diff --git a/lib/utils.js b/lib/utils.js index d8eb979f3..5fc52d023 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -183,9 +183,14 @@ export function prepareRequestOptions(request_options, options) { && request_options.headers['User-Agent'] === CONFIG.USER_AGENT) { var ext = options.getProviderOptions('app.ua_extension', options.getProviderOptions('app.name')); - if (/^[a-zA-Z0-9\.\s_-]+$/.test(ext) && ext.length > 1) { - ext = ext[0].toUpperCase() + ext.slice(1) - request_options.headers['User-Agent'] += ' ' + ext; + + if (ext && /^[a-zA-Z0-9\.\s_-]+$/.test(ext) && ext.length >= 2) { + request_options.headers['User-Agent'] += ` ${ext[0].toUpperCase()}${ext.slice(1)}`; + + var ua_url = options.getProviderOptions('app.ua_url'); + if (ua_url) { + request_options.headers['User-Agent'] += ` (+${ua_url})`; + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3cad7c717..4ae8130aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,7 +12,7 @@ overrides: minimatch@>=10.0.0 <10.2.3: '>=10.2.3' multiparty@<=4.2.3: '>=4.3.0' path-to-regexp@>=8.0.0 <8.4.0: '>=8.4.0' - qs@<6.15.1: '>=6.15.2' + qs@<6.16.0: '>=6.16.0' redis@>=2.6.0 <3.1.1: '>=3.1.1' serialize-javascript@<7.0.5: '>=7.0.5' underscore@<=1.13.7: '>=1.13.8' @@ -678,10 +678,6 @@ packages: hashring@3.2.0: resolution: {integrity: sha512-xCMovURClsQZ+TR30icCZj+34Fq1hs0y6YCASD6ZqdRfYRybb5Iadws2WS+w09mGM/kf9xyA5FCdJQGcgcraSA==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - hasown@2.0.4: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} @@ -1112,8 +1108,8 @@ packages: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - qs@6.15.2: - resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} + qs@6.16.0: + resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} quick-lru@5.1.1: @@ -1200,8 +1196,8 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} side-channel-map@1.0.1: @@ -1212,8 +1208,8 @@ packages: resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} engines: {node: '>= 0.4'} sift@17.1.3: @@ -1469,7 +1465,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.7.3 on-finished: 2.4.1 - qs: 6.15.2 + qs: 6.16.0 raw-body: 3.0.2 type-is: 2.1.0 transitivePeerDependencies: @@ -1793,7 +1789,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.15.2 + qs: 6.16.0 range-parser: 1.2.1 router: 2.2.0(supports-color@8.1.1) send: 1.2.0(supports-color@8.1.1) @@ -1892,7 +1888,7 @@ snapshots: get-proto: 1.0.1 gopd: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 math-intrinsics: 1.1.0 get-proto@1.0.1: @@ -1955,10 +1951,6 @@ snapshots: connection-parse: 0.0.7 simple-lru-cache: 0.0.2 - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -2368,9 +2360,10 @@ snapshots: punycode@2.3.0: {} - qs@6.15.2: + qs@6.16.0: dependencies: - side-channel: 1.1.0 + es-define-property: 1.0.1 + side-channel: 1.1.1 quick-lru@5.1.1: {} @@ -2493,7 +2486,7 @@ snapshots: setprototypeof@1.2.0: {} - side-channel-list@1.0.0: + side-channel-list@1.0.1: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 @@ -2513,11 +2506,11 @@ snapshots: object-inspect: 1.13.4 side-channel-map: 1.0.1 - side-channel@1.1.0: + side-channel@1.1.1: dependencies: es-errors: 1.3.0 object-inspect: 1.13.4 - side-channel-list: 1.0.0 + side-channel-list: 1.0.1 side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 @@ -2569,7 +2562,7 @@ snapshots: formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 - qs: 6.15.2 + qs: 6.16.0 transitivePeerDependencies: - supports-color diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index db7558eba..727ae584e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,7 +6,7 @@ overrides: minimatch@>=10.0.0 <10.2.3: '>=10.2.3' multiparty@<=4.2.3: '>=4.3.0' path-to-regexp@>=8.0.0 <8.4.0: '>=8.4.0' - qs@<6.15.1: '>=6.15.2' + qs@<6.16.0: '>=6.16.0' redis@>=2.6.0 <3.1.1: '>=3.1.1' serialize-javascript@<7.0.5: '>=7.0.5' underscore@<=1.13.7: '>=1.13.8'