@browserless.io/browserless 2.38.1 → 2.38.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -1
- package/build/browsers/index.js +9 -8
- package/build/routes/management/http/kill.get.js +2 -2
- package/build/shared/utils/function/handler.js +2 -2
- package/build/utils.d.ts +1 -0
- package/build/utils.js +1 -0
- package/build/utils.spec.d.ts +1 -0
- package/build/utils.spec.js +27 -0
- package/extensions/ublocklite/_locales/be/messages.json +5 -5
- package/extensions/ublocklite/_locales/id/messages.json +9 -9
- package/extensions/ublocklite/_locales/ja/messages.json +4 -4
- package/extensions/ublocklite/_locales/pt_PT/messages.json +1 -1
- package/extensions/ublocklite/_locales/th/messages.json +2 -2
- package/extensions/ublocklite/_locales/uk/messages.json +9 -9
- package/extensions/ublocklite/_locales/vi/messages.json +5 -5
- package/extensions/ublocklite/_locales/zh_CN/messages.json +8 -8
- package/extensions/ublocklite/js/jsonpath.js +2 -2
- package/extensions/ublocklite/js/static-filtering-parser.js +3 -1
- package/extensions/ublocklite/js/utils.js +1 -3
- package/extensions/ublocklite/manifest.json +1 -1
- package/extensions/ublocklite/rulesets/generic-details.json +2 -0
- package/extensions/ublocklite/rulesets/main/adguard-mobile.json +1 -2
- package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +7 -4
- package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +2 -1
- package/extensions/ublocklite/rulesets/main/chn-0.json +23 -13
- package/extensions/ublocklite/rulesets/main/deu-0.json +2 -1
- package/extensions/ublocklite/rulesets/main/dpollock-0.json +1 -0
- package/extensions/ublocklite/rulesets/main/easylist.json +12 -4
- package/extensions/ublocklite/rulesets/main/easyprivacy.json +19 -6
- package/extensions/ublocklite/rulesets/main/fra-0.json +2 -2
- package/extensions/ublocklite/rulesets/main/hrv-0.json +6 -15
- package/extensions/ublocklite/rulesets/main/idn-0.json +6 -2
- package/extensions/ublocklite/rulesets/main/ind-0.json +27 -11
- package/extensions/ublocklite/rulesets/main/isr-0.json +1 -0
- package/extensions/ublocklite/rulesets/main/jpn-1.json +9 -4
- package/extensions/ublocklite/rulesets/main/kor-1.json +3 -2
- package/extensions/ublocklite/rulesets/main/nld-0.json +9 -7
- package/extensions/ublocklite/rulesets/main/nor-0.json +6 -3
- package/extensions/ublocklite/rulesets/main/pgl.json +10 -3
- package/extensions/ublocklite/rulesets/main/pol-0.json +2 -0
- package/extensions/ublocklite/rulesets/main/rus-0.json +11 -9
- package/extensions/ublocklite/rulesets/main/rus-1.json +2 -1
- package/extensions/ublocklite/rulesets/main/spa-1.json +2 -1
- package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +15646 -4853
- package/extensions/ublocklite/rulesets/main/swe-1.json +7 -9
- package/extensions/ublocklite/rulesets/main/tur-0.json +3 -4
- package/extensions/ublocklite/rulesets/main/ublock-badware.json +4 -7
- package/extensions/ublocklite/rulesets/main/ublock-filters.json +46 -21
- package/extensions/ublocklite/rulesets/main/ukr-0.json +3 -5
- package/extensions/ublocklite/rulesets/main/urlhaus-full.json +1554 -196
- package/extensions/ublocklite/rulesets/main/vie-1.json +26 -26
- package/extensions/ublocklite/rulesets/regex/chn-0.json +2 -2
- package/extensions/ublocklite/rulesets/regex/hrv-0.json +20 -0
- package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
- package/extensions/ublocklite/rulesets/regex/ublock-filters.json +10 -9
- package/extensions/ublocklite/rulesets/ruleset-details.json +160 -160
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/hrv-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/hrv-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.remove-node-text.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-on-stack-trace.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.set-constant.js +541 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hrv-0.set-constant.js +541 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.json-prune-xhr-response.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +11 -6
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.xml-prune.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-stack-trace.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-cookie.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{fin-0.spoof-css.js → tur-0.remove-cookie.js} +69 -115
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-fetch-request.js +941 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +12 -7
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.spoof-css.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-request.js +941 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-attr.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +10 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/est-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/hrv-0.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/pol-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/spa-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ublock-badware.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scriptlet-details.json +113 -60
- package/extensions/ublocklite/rulesets/strictblock/chn-0.json +117 -2
- package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +7 -1
- package/extensions/ublocklite/rulesets/strictblock/hrv-0.json +8 -1
- package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +134 -133
- package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/pgl.json +10 -3
- package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +15646 -4853
- package/extensions/ublocklite/rulesets/strictblock/tur-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +10 -10
- package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +3 -3
- package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +1554 -196
- package/extensions/ublocklite/ublock.zip +0 -0
- package/package.json +1 -1
- package/src/browsers/index.ts +12 -10
- package/src/routes/management/http/kill.get.ts +2 -1
- package/src/shared/utils/function/handler.ts +2 -1
- package/src/utils.spec.ts +62 -0
- package/src/utils.ts +3 -0
- package/static/docs/swagger.json +2 -2
- package/static/docs/swagger.min.json +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/ublock-experimental.js +0 -42
|
Binary file
|
package/package.json
CHANGED
package/src/browsers/index.ts
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
convertIfBase64,
|
|
29
29
|
exists,
|
|
30
30
|
generateDataDir,
|
|
31
|
+
getFinalPathSegment,
|
|
31
32
|
makeExternalURL,
|
|
32
33
|
noop,
|
|
33
34
|
parseBooleanParam,
|
|
@@ -466,9 +467,7 @@ export class BrowserManager {
|
|
|
466
467
|
this.reconnectionPatterns.some((p) => req.parsed.pathname.includes(p))
|
|
467
468
|
) {
|
|
468
469
|
const sessions = Array.from(this.browsers);
|
|
469
|
-
const
|
|
470
|
-
// The last part of the path is the browser ID, or the second last part in case the path ends with "/"
|
|
471
|
-
const id = pathParts.pop() as string || pathParts.pop() as string;
|
|
470
|
+
const id = getFinalPathSegment(req.parsed.pathname);
|
|
472
471
|
if (!id) {
|
|
473
472
|
throw new NotFound(
|
|
474
473
|
`Couldn't locate browser ID from path "${req.parsed.pathname}"`,
|
|
@@ -490,8 +489,8 @@ export class BrowserManager {
|
|
|
490
489
|
|
|
491
490
|
// Handle page connections here
|
|
492
491
|
if (req.parsed.pathname.includes('/devtools/page')) {
|
|
493
|
-
const id = req.parsed.pathname
|
|
494
|
-
if (!id
|
|
492
|
+
const id = getFinalPathSegment(req.parsed.pathname);
|
|
493
|
+
if (!id?.includes(BLESS_PAGE_IDENTIFIER)) {
|
|
495
494
|
const browsers = Array.from(this.browsers).map(([browser]) => browser);
|
|
496
495
|
const allPages = await Promise.all(
|
|
497
496
|
browsers
|
|
@@ -555,11 +554,12 @@ export class BrowserManager {
|
|
|
555
554
|
const filteredArgs = existingArgs.filter(
|
|
556
555
|
(arg) => !arg.includes('--proxy-server='),
|
|
557
556
|
);
|
|
558
|
-
launchOptions.args = [
|
|
557
|
+
launchOptions.args = [
|
|
558
|
+
...filteredArgs,
|
|
559
|
+
`--proxy-server=${proxyServerParam}`,
|
|
560
|
+
];
|
|
559
561
|
}
|
|
560
562
|
|
|
561
|
-
|
|
562
|
-
|
|
563
563
|
const manualUserDataDir =
|
|
564
564
|
launchOptions.args
|
|
565
565
|
?.find((arg) => arg.includes('--user-data-dir='))
|
|
@@ -588,7 +588,9 @@ export class BrowserManager {
|
|
|
588
588
|
*/
|
|
589
589
|
if (Object.hasOwn(launchOptions, 'ignoreHTTPSErrors')) {
|
|
590
590
|
if (!Object.hasOwn(launchOptions, 'acceptInsecureCerts')) {
|
|
591
|
-
(launchOptions as CDPLaunchOptions).acceptInsecureCerts = (
|
|
591
|
+
(launchOptions as CDPLaunchOptions).acceptInsecureCerts = (
|
|
592
|
+
launchOptions as CDPLaunchOptions
|
|
593
|
+
).ignoreHTTPSErrors;
|
|
592
594
|
}
|
|
593
595
|
delete (launchOptions as CDPLaunchOptions).ignoreHTTPSErrors;
|
|
594
596
|
}
|
|
@@ -627,7 +629,7 @@ export class BrowserManager {
|
|
|
627
629
|
await this.hooks.browser({ browser, req });
|
|
628
630
|
|
|
629
631
|
const session: BrowserlessSession = {
|
|
630
|
-
id: browser.wsEndpoint()
|
|
632
|
+
id: getFinalPathSegment(browser.wsEndpoint()!)!,
|
|
631
633
|
initialConnectURL:
|
|
632
634
|
path.join(req.parsed.pathname, req.parsed.search) || '',
|
|
633
635
|
isTempDataDir: !manualUserDataDir,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
Request,
|
|
8
8
|
SystemQueryParameters,
|
|
9
9
|
contentTypes,
|
|
10
|
+
getFinalPathSegment,
|
|
10
11
|
writeResponse,
|
|
11
12
|
} from '@browserless.io/browserless';
|
|
12
13
|
import { ServerResponse } from 'http';
|
|
@@ -32,7 +33,7 @@ export default class KillGetRoute extends HTTPRoute {
|
|
|
32
33
|
tags = [APITags.management];
|
|
33
34
|
|
|
34
35
|
async handler(req: Request, res: ServerResponse): Promise<void> {
|
|
35
|
-
const target = req.parsed.pathname
|
|
36
|
+
const target = getFinalPathSegment(req.parsed.pathname)!;
|
|
36
37
|
const browserManager = this.browserManager();
|
|
37
38
|
await browserManager.killSessions(target);
|
|
38
39
|
return writeResponse(res, 204, '');
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
contentTypes,
|
|
12
12
|
convertIfBase64,
|
|
13
13
|
exists,
|
|
14
|
+
getFinalPathSegment,
|
|
14
15
|
getTokenFromRequest,
|
|
15
16
|
makeExternalURL,
|
|
16
17
|
mimeTypes,
|
|
@@ -70,7 +71,7 @@ export default (config: Config, logger: Logger, options: HandlerOptions = {}) =>
|
|
|
70
71
|
);
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
const browserID = privateWSEndpoint
|
|
74
|
+
const browserID = getFinalPathSegment(privateWSEndpoint)!;
|
|
74
75
|
const browserWSEndpoint = makeExternalURL(
|
|
75
76
|
config.getExternalWebSocketAddress(),
|
|
76
77
|
'function',
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { getFinalPathSegment } from '@browserless.io/browserless';
|
|
3
|
+
|
|
4
|
+
describe('Utils', () => {
|
|
5
|
+
describe('#getFinalPathSegment', () => {
|
|
6
|
+
it('returns the final path segment', () => {
|
|
7
|
+
expect(
|
|
8
|
+
getFinalPathSegment(
|
|
9
|
+
'https://www.browserless.io/some/random/path/segment',
|
|
10
|
+
),
|
|
11
|
+
).to.equal('segment');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('returns the final path segment with trailing slashes', () => {
|
|
15
|
+
expect(
|
|
16
|
+
getFinalPathSegment(
|
|
17
|
+
'https://www.browserless.io/some/random/path/segment/',
|
|
18
|
+
),
|
|
19
|
+
).to.equal('segment');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('returns the final path segment with URLs that have query params', () => {
|
|
23
|
+
expect(
|
|
24
|
+
getFinalPathSegment(
|
|
25
|
+
'https://www.browserless.io/some/random/path/segment?foo=bar',
|
|
26
|
+
),
|
|
27
|
+
).to.equal('segment');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('returns the final path segment with URLs that have fragments', () => {
|
|
31
|
+
expect(
|
|
32
|
+
getFinalPathSegment(
|
|
33
|
+
'https://www.browserless.io/some/random/path/segment#foo=bar',
|
|
34
|
+
),
|
|
35
|
+
).to.equal('segment');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('returns the final path segment with trailing slashes, query-params and fragments', () => {
|
|
39
|
+
expect(
|
|
40
|
+
getFinalPathSegment(
|
|
41
|
+
'https://www.browserless.io/some/random/path/segment/?foo=bar&baz=qux#hello=world',
|
|
42
|
+
),
|
|
43
|
+
).to.equal('segment');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('returns the final path segment with trailing slashes, query-params and fragments on websockets', () => {
|
|
47
|
+
expect(
|
|
48
|
+
getFinalPathSegment(
|
|
49
|
+
'wss://www.browserless.io/some/random/path/segment/?foo=bar&baz=qux#hello=world',
|
|
50
|
+
),
|
|
51
|
+
).to.equal('segment');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('returns the final path segment with malformed URLs', () => {
|
|
55
|
+
expect(
|
|
56
|
+
getFinalPathSegment(
|
|
57
|
+
'wss://www.browserless.io/some/random/path/segment/&bad=query',
|
|
58
|
+
),
|
|
59
|
+
).to.equal('segment');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
package/src/utils.ts
CHANGED
|
@@ -917,3 +917,6 @@ export const ublockLitePath = path.join(
|
|
|
917
917
|
export const isMatch = (text: string, pattern: string) => {
|
|
918
918
|
return micromatch.isMatch(text, pattern, { bash: true });
|
|
919
919
|
};
|
|
920
|
+
|
|
921
|
+
export const getFinalPathSegment = (pathname: string): string | undefined =>
|
|
922
|
+
pathname.split(/[?#&]/)[0].split('/').filter(Boolean).pop();
|