@browserless.io/browserless 2.34.0 → 2.36.0
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 +28 -1
- package/build/limiter.js +1 -1
- package/build/routes/chrome/http/content.post.body.json +90 -1
- package/build/routes/chrome/http/pdf.post.body.json +90 -1
- package/build/routes/chrome/http/scrape.post.body.json +90 -1
- package/build/routes/chrome/http/scrape.post.response.json +21 -22
- package/build/routes/chrome/http/screenshot.post.body.json +90 -1
- package/build/routes/chromium/http/content.post.body.json +90 -1
- package/build/routes/chromium/http/pdf.post.body.json +90 -1
- package/build/routes/chromium/http/scrape.post.body.json +90 -1
- package/build/routes/chromium/http/scrape.post.response.json +21 -22
- package/build/routes/chromium/http/screenshot.post.body.json +90 -1
- package/build/routes/chromium/tests/scrape.spec.js +41 -0
- package/build/routes/edge/http/content.post.body.json +90 -1
- package/build/routes/edge/http/pdf.post.body.json +90 -1
- package/build/routes/edge/http/scrape.post.body.json +90 -1
- package/build/routes/edge/http/scrape.post.response.json +21 -22
- package/build/routes/edge/http/screenshot.post.body.json +90 -1
- package/build/sdk-utils.js +1 -1
- package/build/shared/scrape.http.js +13 -3
- package/docker/base/Dockerfile +8 -8
- package/docker/chrome/Dockerfile +2 -2
- package/docker/chromium/Dockerfile +2 -2
- package/docker/edge/Dockerfile +2 -2
- package/docker/firefox/Dockerfile +2 -2
- package/docker/multi/Dockerfile +2 -2
- package/docker/sdk/Dockerfile +1 -1
- package/docker/webkit/Dockerfile +2 -2
- package/extensions/ublocklite/README.md +1 -1
- package/extensions/ublocklite/_locales/br_FR/messages.json +1 -1
- package/extensions/ublocklite/_locales/bs/messages.json +58 -58
- package/extensions/ublocklite/_locales/he/messages.json +2 -2
- package/extensions/ublocklite/_locales/hu/messages.json +1 -1
- package/extensions/ublocklite/_locales/pt_BR/messages.json +1 -1
- package/extensions/ublocklite/_locales/pt_PT/messages.json +1 -1
- package/extensions/ublocklite/_locales/ro/messages.json +1 -1
- package/extensions/ublocklite/_locales/sk/messages.json +6 -6
- package/extensions/ublocklite/_locales/sq/messages.json +17 -17
- package/extensions/ublocklite/_locales/sr/messages.json +28 -28
- package/extensions/ublocklite/_locales/th/messages.json +1 -1
- package/extensions/ublocklite/_locales/tr/messages.json +1 -1
- package/extensions/ublocklite/_locales/vi/messages.json +1 -1
- package/extensions/ublocklite/css/common.css +5 -3
- package/extensions/ublocklite/css/default.css +10 -0
- package/extensions/ublocklite/css/unpicker-ui.css +1 -0
- package/extensions/ublocklite/js/background.js +5 -3
- package/extensions/ublocklite/js/dnr-parser.js +1 -1
- package/extensions/ublocklite/js/fetch.js +1 -1
- package/extensions/ublocklite/js/filter-lists.js +1 -4
- package/extensions/ublocklite/js/filter-manager.js +45 -9
- package/extensions/ublocklite/js/popup.js +2 -2
- package/extensions/ublocklite/js/ruleset-manager.js +10 -126
- package/extensions/ublocklite/js/rw-dnr-editor.js +8 -4
- package/extensions/ublocklite/js/scripting/css-procedural.js +2 -0
- package/extensions/ublocklite/js/scripting/css-specific.js +2 -0
- package/extensions/ublocklite/js/scripting/tool-overlay.js +1 -0
- package/extensions/ublocklite/js/scripting-manager.js +2 -2
- package/extensions/ublocklite/js/settings.js +2 -1
- package/extensions/ublocklite/js/static-filtering-parser.js +25 -18
- package/extensions/ublocklite/js/ubo-parser.js +181 -65
- package/extensions/ublocklite/manifest.json +4 -4
- package/extensions/ublocklite/rulesets/generic-details.json +7 -17
- package/extensions/ublocklite/rulesets/main/adguard-mobile.json +25 -4
- package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +615 -1
- package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +21 -8
- package/extensions/ublocklite/rulesets/main/annoyances-others.json +5 -2
- package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +22 -2
- package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +1 -1
- package/extensions/ublocklite/rulesets/main/chn-0.json +98 -29
- package/extensions/ublocklite/rulesets/main/cze-0.json +6 -1
- package/extensions/ublocklite/rulesets/main/deu-0.json +15 -11
- package/extensions/ublocklite/rulesets/main/dpollock-0.json +4 -0
- package/extensions/ublocklite/rulesets/main/easylist.json +146 -98
- package/extensions/ublocklite/rulesets/main/easyprivacy.json +149 -32
- package/extensions/ublocklite/rulesets/main/est-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/fin-0.json +9 -0
- package/extensions/ublocklite/rulesets/main/fra-0.json +49 -9
- package/extensions/ublocklite/rulesets/main/hun-0.json +4 -1
- package/extensions/ublocklite/rulesets/main/idn-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/ind-0.json +101 -155
- package/extensions/ublocklite/rulesets/main/irn-0.json +34 -11
- package/extensions/ublocklite/rulesets/main/isr-0.json +20 -2
- package/extensions/ublocklite/rulesets/main/ita-0.json +3 -1
- package/extensions/ublocklite/rulesets/main/jpn-1.json +69 -22
- package/extensions/ublocklite/rulesets/main/kor-1.json +39 -5
- package/extensions/ublocklite/rulesets/main/ltu-0.json +3 -1
- package/extensions/ublocklite/rulesets/main/lva-0.json +2 -1
- package/extensions/ublocklite/rulesets/main/nld-0.json +6 -1
- package/extensions/ublocklite/rulesets/main/nor-0.json +13 -4
- package/extensions/ublocklite/rulesets/main/pgl.json +8 -11
- package/extensions/ublocklite/rulesets/main/pol-0.json +13 -2
- package/extensions/ublocklite/rulesets/main/rou-1.json +17 -1
- package/extensions/ublocklite/rulesets/main/rus-0.json +104 -27
- package/extensions/ublocklite/rulesets/main/rus-1.json +114 -4
- package/extensions/ublocklite/rulesets/main/spa-1.json +43 -15
- package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +15832 -9032
- package/extensions/ublocklite/rulesets/main/swe-1.json +89 -52
- package/extensions/ublocklite/rulesets/main/tha-0.json +7 -1
- package/extensions/ublocklite/rulesets/main/tur-0.json +54 -6
- package/extensions/ublocklite/rulesets/main/ublock-badware.json +79 -106
- package/extensions/ublocklite/rulesets/main/ublock-filters.json +794 -111
- package/extensions/ublocklite/rulesets/main/ubol-tests.json +60 -0
- package/extensions/ublocklite/rulesets/main/ukr-0.json +20 -1
- package/extensions/ublocklite/rulesets/main/urlhaus-full.json +631 -676
- package/extensions/ublocklite/rulesets/main/vie-1.json +74 -59
- package/extensions/ublocklite/rulesets/regex/chn-0.json +8 -3
- package/extensions/ublocklite/rulesets/regex/deu-0.json +0 -1
- package/extensions/ublocklite/rulesets/regex/easylist.json +0 -2
- package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
- package/extensions/ublocklite/rulesets/regex/kor-1.json +1 -0
- package/extensions/ublocklite/rulesets/regex/pol-0.json +1 -0
- package/extensions/ublocklite/rulesets/regex/rus-0.json +1 -0
- package/extensions/ublocklite/rulesets/regex/rus-1.json +24 -0
- package/extensions/ublocklite/rulesets/regex/tur-0.json +2 -1
- package/extensions/ublocklite/rulesets/regex/ublock-badware.json +10 -8
- package/extensions/ublocklite/rulesets/regex/ublock-filters.json +28 -12
- package/extensions/ublocklite/rulesets/ruleset-details.json +252 -472
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/nld-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +2 -9
- package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +2 -13
- package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +4 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +0 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-notifications.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-social.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/idn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/nld-0.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/rus-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
- 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 +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie-reload.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.trusted-replace-node-text.js +450 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{jpn-1.abort-on-property-write.js → adguard-mobile.trusted-set-attr.js} +107 -41
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +407 -0
- 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.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-replace-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +9 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-xhr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +427 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.adjust-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +9 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{vie-1.m3u-prune.js → chn-0.spoof-css.js} +109 -148
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-current-script.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.adjust-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-session-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-attr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.set-cookie.js +442 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-filters.evaldata-prune.js → kor-1.json-prune-xhr-response.js} +227 -198
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.remove-node-text.js +1 -1
- 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-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +10 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-xhr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-cookie.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.abort-on-property-read.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.remove-cookie.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setInterval.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +9 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setInterval.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.addEventListener-defuser.js +498 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +450 -0
- 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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.disable-newtab-links.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-fetch-response.js +927 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +851 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.m3u-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +10 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +2 -2
- 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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-attr.js +2 -2
- 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 +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-xhr.js +1 -1
- 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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-xhr-response.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-cookie.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.xml-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +7 -0
- 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 +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.json-prune.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +7 -0
- 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 +3 -3
- 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/fin-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
- 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/irn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/isr-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/rus-1.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/tha-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scriptlet-details.json +301 -173
- package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +11 -1
- package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/chn-0.json +398 -791
- package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +4 -0
- package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +76 -74
- package/extensions/ublocklite/rulesets/strictblock/fra-0.json +429 -49
- package/extensions/ublocklite/rulesets/strictblock/irn-0.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +185 -176
- package/extensions/ublocklite/rulesets/strictblock/kor-1.json +6 -1
- package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/pgl.json +8 -11
- package/extensions/ublocklite/rulesets/strictblock/pol-0.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/spa-1.json +1 -2
- package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +15832 -9032
- package/extensions/ublocklite/rulesets/strictblock/swe-1.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/tur-0.json +4 -0
- package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +636 -631
- package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +3 -2
- package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +631 -676
- package/extensions/ublocklite/rulesets/strictblock/vie-1.json +7 -8
- package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +30 -0
- package/extensions/ublocklite/ublock.zip +0 -0
- package/package.json +23 -21
- package/scripts/build-open-api.js +15 -1
- package/scripts/install-adblock.js +25 -4
- package/scripts/start.sh +1 -1
- package/scripts/test.sh +2 -2
- package/src/limiter.ts +1 -1
- package/src/routes/chromium/tests/scrape.spec.ts +48 -0
- package/src/sdk-utils.ts +1 -1
- package/src/shared/scrape.http.ts +17 -5
- package/static/docs/swagger.json +330 -102
- package/static/docs/swagger.min.json +329 -101
- package/static/function/client.js +273 -171
- package/static/function/index.html +273 -171
- package/extensions/ublocklite/rulesets/modify-headers/annoyances-overlays.json +0 -108
- package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +0 -316
- package/extensions/ublocklite/rulesets/modify-headers/cze-0.json +0 -25
- package/extensions/ublocklite/rulesets/modify-headers/deu-0.json +0 -24
- package/extensions/ublocklite/rulesets/modify-headers/easylist.json +0 -14
- package/extensions/ublocklite/rulesets/modify-headers/easyprivacy.json +0 -48
- package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +0 -215
- package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +0 -45
- package/extensions/ublocklite/rulesets/modify-headers/isr-0.json +0 -50
- package/extensions/ublocklite/rulesets/modify-headers/rus-0.json +0 -41
- package/extensions/ublocklite/rulesets/modify-headers/rus-1.json +0 -22
- package/extensions/ublocklite/rulesets/modify-headers/swe-1.json +0 -46
- package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +0 -53
- package/extensions/ublocklite/rulesets/modify-headers/ubol-tests.json +0 -25
- package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +0 -162
- package/extensions/ublocklite/rulesets/redirect/adguard-mobile.json +0 -20
- package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +0 -15
- package/extensions/ublocklite/rulesets/redirect/chn-0.json +0 -40
- package/extensions/ublocklite/rulesets/redirect/cze-0.json +0 -76
- package/extensions/ublocklite/rulesets/redirect/deu-0.json +0 -79
- package/extensions/ublocklite/rulesets/redirect/easylist.json +0 -103
- package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +0 -137
- package/extensions/ublocklite/rulesets/redirect/fin-0.json +0 -121
- package/extensions/ublocklite/rulesets/redirect/fra-0.json +0 -35
- package/extensions/ublocklite/rulesets/redirect/hun-0.json +0 -38
- package/extensions/ublocklite/rulesets/redirect/irn-0.json +0 -73
- package/extensions/ublocklite/rulesets/redirect/isr-0.json +0 -17
- package/extensions/ublocklite/rulesets/redirect/jpn-1.json +0 -30
- package/extensions/ublocklite/rulesets/redirect/kor-1.json +0 -25
- package/extensions/ublocklite/rulesets/redirect/ltu-0.json +0 -33
- package/extensions/ublocklite/rulesets/redirect/nld-0.json +0 -79
- package/extensions/ublocklite/rulesets/redirect/nor-0.json +0 -132
- package/extensions/ublocklite/rulesets/redirect/pol-0.json +0 -15
- package/extensions/ublocklite/rulesets/redirect/rou-1.json +0 -53
- package/extensions/ublocklite/rulesets/redirect/rus-0.json +0 -21
- package/extensions/ublocklite/rulesets/redirect/rus-1.json +0 -118
- package/extensions/ublocklite/rulesets/redirect/spa-1.json +0 -27
- package/extensions/ublocklite/rulesets/redirect/swe-1.json +0 -14
- package/extensions/ublocklite/rulesets/redirect/tha-0.json +0 -78
- package/extensions/ublocklite/rulesets/redirect/tur-0.json +0 -24
- package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +0 -18
- package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +0 -556
- package/extensions/ublocklite/rulesets/redirect/ubol-tests.json +0 -22
- package/extensions/ublocklite/rulesets/redirect/ukr-0.json +0 -18
- package/extensions/ublocklite/rulesets/redirect/vie-1.json +0 -85
- package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +0 -612
- package/extensions/ublocklite/rulesets/removeparam/annoyances-overlays.json +0 -27
- package/extensions/ublocklite/rulesets/removeparam/chn-0.json +0 -48
- package/extensions/ublocklite/rulesets/removeparam/est-0.json +0 -26
- package/extensions/ublocklite/rulesets/removeparam/fin-0.json +0 -52
- package/extensions/ublocklite/rulesets/removeparam/irn-0.json +0 -18
- package/extensions/ublocklite/rulesets/removeparam/kor-1.json +0 -26
- package/extensions/ublocklite/rulesets/removeparam/rus-0.json +0 -19
- package/extensions/ublocklite/rulesets/removeparam/rus-1.json +0 -98
- package/extensions/ublocklite/rulesets/removeparam/swe-1.json +0 -125
- package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +0 -63
- package/extensions/ublocklite/rulesets/removeparam/ukr-0.json +0 -49
|
@@ -30,13 +30,13 @@ import {
|
|
|
30
30
|
rulesetConfig,
|
|
31
31
|
saveRulesetConfig,
|
|
32
32
|
} from './config.js';
|
|
33
|
+
import { ubolErr, ubolLog } from './debug.js';
|
|
33
34
|
|
|
34
35
|
import { dnr } from './ext-compat.js';
|
|
35
36
|
import { fetchJSON } from './fetch.js';
|
|
36
37
|
import { getAdminRulesets } from './admin.js';
|
|
37
38
|
import { hasBroadHostPermissions } from './utils.js';
|
|
38
39
|
import { rulesFromText } from './dnr-parser.js';
|
|
39
|
-
import { ubolErr, ubolLog } from './debug.js';
|
|
40
40
|
|
|
41
41
|
/******************************************************************************/
|
|
42
42
|
|
|
@@ -131,9 +131,8 @@ pruneInvalidRegexRules.validated = new Map();
|
|
|
131
131
|
async function updateRegexRules(currentRules, addRules, removeRuleIds) {
|
|
132
132
|
// Remove existing regex-related block rules
|
|
133
133
|
for ( const rule of currentRules ) {
|
|
134
|
+
if ( rule.id === 0 ) { continue; }
|
|
134
135
|
if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
|
|
135
|
-
const { type } = rule.action;
|
|
136
|
-
if ( type !== 'block' && type !== 'allow' ) { continue; }
|
|
137
136
|
if ( rule.condition.regexFilter === undefined ) { continue; }
|
|
138
137
|
removeRuleIds.push(rule.id);
|
|
139
138
|
}
|
|
@@ -167,134 +166,19 @@ async function updateRegexRules(currentRules, addRules, removeRuleIds) {
|
|
|
167
166
|
|
|
168
167
|
/******************************************************************************/
|
|
169
168
|
|
|
170
|
-
async function updateRemoveparamRules(currentRules, addRules, removeRuleIds) {
|
|
171
|
-
// Remove existing removeparam-related rules
|
|
172
|
-
for ( const rule of currentRules ) {
|
|
173
|
-
if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
|
|
174
|
-
if ( rule.action.type !== 'redirect' ) { continue; }
|
|
175
|
-
if ( rule.action.redirect.transform === undefined ) { continue; }
|
|
176
|
-
removeRuleIds.push(rule.id);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
const rulesetDetails = await getEnabledRulesetsDetails();
|
|
180
|
-
|
|
181
|
-
// Fetch removeparam rules for all enabled rulesets
|
|
182
|
-
const toFetch = [];
|
|
183
|
-
for ( const details of rulesetDetails ) {
|
|
184
|
-
if ( details.rules.removeparam === 0 ) { continue; }
|
|
185
|
-
toFetch.push(fetchJSON(`/rulesets/removeparam/${details.id}`));
|
|
186
|
-
}
|
|
187
|
-
const removeparamRulesets = await Promise.all(toFetch);
|
|
188
|
-
|
|
189
|
-
const allRules = [];
|
|
190
|
-
for ( const rules of removeparamRulesets ) {
|
|
191
|
-
if ( Array.isArray(rules) === false ) { continue; }
|
|
192
|
-
for ( const rule of rules ) {
|
|
193
|
-
allRules.push(rule);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
if ( allRules.length === 0 ) { return; }
|
|
197
|
-
|
|
198
|
-
const validRules = await pruneInvalidRegexRules('removeparam', allRules);
|
|
199
|
-
if ( validRules.length === 0 ) { return; }
|
|
200
|
-
|
|
201
|
-
ubolLog(`Add ${validRules.length} DNR removeparam rules`);
|
|
202
|
-
addRules.push(...validRules);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/******************************************************************************/
|
|
206
|
-
|
|
207
|
-
async function updateRedirectRules(currentRules, addRules, removeRuleIds) {
|
|
208
|
-
// Remove existing redirect-related rules
|
|
209
|
-
for ( const rule of currentRules ) {
|
|
210
|
-
if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
|
|
211
|
-
if ( rule.action.type !== 'redirect' ) { continue; }
|
|
212
|
-
if ( rule.action.redirect.extensionPath === undefined ) { continue; }
|
|
213
|
-
removeRuleIds.push(rule.id);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
const rulesetDetails = await getEnabledRulesetsDetails();
|
|
217
|
-
|
|
218
|
-
// Fetch redirect rules for all enabled rulesets
|
|
219
|
-
const toFetch = [];
|
|
220
|
-
for ( const details of rulesetDetails ) {
|
|
221
|
-
if ( details.rules.redirect === 0 ) { continue; }
|
|
222
|
-
toFetch.push(fetchJSON(`/rulesets/redirect/${details.id}`));
|
|
223
|
-
}
|
|
224
|
-
const redirectRulesets = await Promise.all(toFetch);
|
|
225
|
-
|
|
226
|
-
const allRules = [];
|
|
227
|
-
for ( const rules of redirectRulesets ) {
|
|
228
|
-
if ( Array.isArray(rules) === false ) { continue; }
|
|
229
|
-
for ( const rule of rules ) {
|
|
230
|
-
allRules.push(rule);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
if ( allRules.length === 0 ) { return; }
|
|
234
|
-
|
|
235
|
-
const validRules = await pruneInvalidRegexRules('redirect', allRules);
|
|
236
|
-
if ( validRules.length === 0 ) { return; }
|
|
237
|
-
|
|
238
|
-
ubolLog(`Add ${validRules.length} DNR redirect rules`);
|
|
239
|
-
addRules.push(...validRules);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/******************************************************************************/
|
|
243
|
-
|
|
244
|
-
async function updateModifyHeadersRules(currentRules, addRules, removeRuleIds) {
|
|
245
|
-
// Remove existing header modification-related rules
|
|
246
|
-
for ( const rule of currentRules ) {
|
|
247
|
-
if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
|
|
248
|
-
if ( rule.action.type !== 'modifyHeaders' ) { continue; }
|
|
249
|
-
removeRuleIds.push(rule.id);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
const rulesetDetails = await getEnabledRulesetsDetails();
|
|
253
|
-
|
|
254
|
-
// Fetch modifyHeaders rules for all enabled rulesets
|
|
255
|
-
const toFetch = [];
|
|
256
|
-
for ( const details of rulesetDetails ) {
|
|
257
|
-
if ( details.rules.modifyHeaders === 0 ) { continue; }
|
|
258
|
-
toFetch.push(fetchJSON(`/rulesets/modify-headers/${details.id}`));
|
|
259
|
-
}
|
|
260
|
-
const rulesets = await Promise.all(toFetch);
|
|
261
|
-
|
|
262
|
-
const allRules = [];
|
|
263
|
-
for ( const rules of rulesets ) {
|
|
264
|
-
if ( Array.isArray(rules) === false ) { continue; }
|
|
265
|
-
for ( const rule of rules ) {
|
|
266
|
-
allRules.push(rule);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
if ( allRules.length === 0 ) { return; }
|
|
270
|
-
|
|
271
|
-
const validRules = await pruneInvalidRegexRules('modify-headers', allRules);
|
|
272
|
-
if ( validRules.length === 0 ) { return; }
|
|
273
|
-
|
|
274
|
-
ubolLog(`Add ${validRules.length} DNR modify-headers rules`);
|
|
275
|
-
addRules.push(...validRules);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
/******************************************************************************/
|
|
279
|
-
|
|
280
169
|
async function updateDynamicRules() {
|
|
281
170
|
const currentRules = await dnr.getDynamicRules();
|
|
282
171
|
const addRules = [];
|
|
283
172
|
const removeRuleIds = [];
|
|
284
173
|
|
|
285
|
-
// Remove potentially left-over
|
|
174
|
+
// Remove potentially left-over rules from previous version
|
|
286
175
|
for ( const rule of currentRules ) {
|
|
287
176
|
if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
|
|
288
|
-
if ( isStrictBlockRule(rule) === false ) { continue; }
|
|
289
177
|
removeRuleIds.push(rule.id);
|
|
178
|
+
rule.id = 0;
|
|
290
179
|
}
|
|
291
180
|
|
|
292
|
-
await
|
|
293
|
-
updateRegexRules(currentRules, addRules, removeRuleIds),
|
|
294
|
-
updateRemoveparamRules(currentRules, addRules, removeRuleIds),
|
|
295
|
-
updateRedirectRules(currentRules, addRules, removeRuleIds),
|
|
296
|
-
updateModifyHeadersRules(currentRules, addRules, removeRuleIds),
|
|
297
|
-
]);
|
|
181
|
+
await updateRegexRules(currentRules, addRules, removeRuleIds);
|
|
298
182
|
if ( addRules.length === 0 && removeRuleIds.length === 0 ) { return; }
|
|
299
183
|
|
|
300
184
|
dynamicRegexCount = 0;
|
|
@@ -318,7 +202,7 @@ async function updateDynamicRules() {
|
|
|
318
202
|
ubolLog(`Add ${addRules.length} dynamic DNR rules`);
|
|
319
203
|
}
|
|
320
204
|
} catch(reason) {
|
|
321
|
-
ubolErr(`updateDynamicRules
|
|
205
|
+
ubolErr(`updateDynamicRules/${reason}`);
|
|
322
206
|
response.error = `${reason}`;
|
|
323
207
|
}
|
|
324
208
|
|
|
@@ -472,7 +356,7 @@ async function updateSessionRules() {
|
|
|
472
356
|
ubolLog(`Add ${addRules.length} session DNR rules`);
|
|
473
357
|
}
|
|
474
358
|
} catch(reason) {
|
|
475
|
-
ubolErr(`updateSessionRules
|
|
359
|
+
ubolErr(`updateSessionRules/${reason}`);
|
|
476
360
|
response.error = `${reason}`;
|
|
477
361
|
}
|
|
478
362
|
return response;
|
|
@@ -667,7 +551,7 @@ async function enableRulesets(ids) {
|
|
|
667
551
|
enableRulesetIds,
|
|
668
552
|
disableRulesetIds,
|
|
669
553
|
}).catch(reason => {
|
|
670
|
-
ubolErr(reason);
|
|
554
|
+
ubolErr(`updateEnabledRulesets/${reason}`);
|
|
671
555
|
response.error = `${reason}`;
|
|
672
556
|
});
|
|
673
557
|
|
|
@@ -684,7 +568,7 @@ async function enableRulesets(ids) {
|
|
|
684
568
|
ubolLog(`Available static rule count: ${count}`);
|
|
685
569
|
response.staticRuleCount = count;
|
|
686
570
|
}).catch(reason => {
|
|
687
|
-
ubolErr(reason);
|
|
571
|
+
ubolErr(`getEnabledRulesets/${reason}`);
|
|
688
572
|
});
|
|
689
573
|
|
|
690
574
|
return response;
|
|
@@ -781,7 +665,7 @@ async function updateUserRules() {
|
|
|
781
665
|
out.added = addRules.length;
|
|
782
666
|
out.removed = removeRuleIds.length;
|
|
783
667
|
} catch(reason) {
|
|
784
|
-
ubolErr(`updateUserRules
|
|
668
|
+
ubolErr(`updateUserRules/${reason}`);
|
|
785
669
|
out.errors.push(`${reason}`);
|
|
786
670
|
} finally {
|
|
787
671
|
const userRules = await getEffectiveUserRules();
|
|
@@ -376,17 +376,21 @@ export class ReadWriteDNREditor extends DNREditor {
|
|
|
376
376
|
separatorBefore = true;
|
|
377
377
|
}
|
|
378
378
|
const pastedText = newDoc.sliceString(from, to);
|
|
379
|
-
let
|
|
379
|
+
let linesToPrepend;
|
|
380
380
|
let rules = this.rulesFromJSON(pastedText);
|
|
381
381
|
if ( Boolean(rules?.length) === false ) {
|
|
382
382
|
rules = parseFilters(pastedText);
|
|
383
383
|
if ( Boolean(rules?.length) === false ) { return; }
|
|
384
|
-
|
|
384
|
+
const lines = pastedText.trim().split(/\n/);
|
|
385
|
+
linesToPrepend = lines.slice(0, 10).map(a => `# ${a}`);
|
|
386
|
+
if ( lines.length > linesToPrepend.length ) {
|
|
387
|
+
linesToPrepend.push('# ...');
|
|
388
|
+
}
|
|
385
389
|
}
|
|
386
390
|
let yamlText = textFromRules(rules);
|
|
387
391
|
if ( yamlText === undefined ) { return; }
|
|
388
|
-
if (
|
|
389
|
-
yamlText = yamlText.replace('---\n', `---\n${
|
|
392
|
+
if ( linesToPrepend ) {
|
|
393
|
+
yamlText = yamlText.replace('---\n', `---\n${linesToPrepend.join('\n')}\n`);
|
|
390
394
|
}
|
|
391
395
|
if ( separatorBefore && yamlText.startsWith('---\n') ) {
|
|
392
396
|
yamlText = yamlText.slice(4);
|
|
@@ -60,6 +60,8 @@ self.isolatedAPI.forEachHostname(lookupAll, {
|
|
|
60
60
|
});
|
|
61
61
|
proceduralImports.length = 0;
|
|
62
62
|
|
|
63
|
+
if ( selectors.length === 0 ) { return; }
|
|
64
|
+
|
|
63
65
|
const exceptedSelectors = exceptions.length !== 0
|
|
64
66
|
? selectors.filter(a => exceptions.includes(JSON.stringify(a)) === false)
|
|
65
67
|
: selectors;
|
|
@@ -58,6 +58,8 @@ self.isolatedAPI.forEachHostname(lookupAll, {
|
|
|
58
58
|
|
|
59
59
|
specificImports.length = 0;
|
|
60
60
|
|
|
61
|
+
if ( selectors.length === 0 ) { return; }
|
|
62
|
+
|
|
61
63
|
const exceptedSelectors = exceptions.length !== 0
|
|
62
64
|
? selectors.filter(a => exceptions.includes(a) === false)
|
|
63
65
|
: selectors;
|
|
@@ -551,7 +551,7 @@ async function registerInjectables() {
|
|
|
551
551
|
await browser.scripting.unregisterContentScripts({ ids: toRemove });
|
|
552
552
|
localRemove('$scripting.unregisterContentScripts');
|
|
553
553
|
} catch(reason) {
|
|
554
|
-
ubolErr(reason);
|
|
554
|
+
ubolErr(`unregisterContentScripts/${reason}`);
|
|
555
555
|
}
|
|
556
556
|
}
|
|
557
557
|
|
|
@@ -561,7 +561,7 @@ async function registerInjectables() {
|
|
|
561
561
|
await browser.scripting.registerContentScripts(toAdd);
|
|
562
562
|
localRemove('$scripting.registerContentScripts');
|
|
563
563
|
} catch(reason) {
|
|
564
|
-
ubolErr(reason);
|
|
564
|
+
ubolErr(`registerContentScripts/${reason}`);
|
|
565
565
|
}
|
|
566
566
|
}
|
|
567
567
|
|
|
@@ -242,9 +242,10 @@ sendMessage({
|
|
|
242
242
|
renderAdminRules();
|
|
243
243
|
renderFilterLists(cachedRulesetData);
|
|
244
244
|
renderWidgets();
|
|
245
|
-
dom.cl.remove(dom.body, 'loading');
|
|
246
245
|
} catch(reason) {
|
|
247
246
|
console.error(reason);
|
|
247
|
+
} finally {
|
|
248
|
+
dom.cl.remove(dom.body, 'loading');
|
|
248
249
|
}
|
|
249
250
|
listen();
|
|
250
251
|
}).catch(reason => {
|
|
@@ -841,6 +841,11 @@ export class AstFilterParser {
|
|
|
841
841
|
this.netOptionValueParser = new ArglistParser(',');
|
|
842
842
|
this.scriptletArgListParser = new ArglistParser(',');
|
|
843
843
|
this.domainRegexValueParser = new ArglistParser('/');
|
|
844
|
+
this.reNetOptionTokens = new RegExp(
|
|
845
|
+
`^~?(${Array.from(netOptionTokenDescriptors.keys())
|
|
846
|
+
.map(s => escapeForRegex(s))
|
|
847
|
+
.join('|')})\\b`
|
|
848
|
+
);
|
|
844
849
|
}
|
|
845
850
|
|
|
846
851
|
finish() {
|
|
@@ -1240,7 +1245,7 @@ export class AstFilterParser {
|
|
|
1240
1245
|
let modifierType = 0;
|
|
1241
1246
|
let requestTypeCount = 0;
|
|
1242
1247
|
let unredirectableTypeCount = 0;
|
|
1243
|
-
let
|
|
1248
|
+
let isBadfilter = false;
|
|
1244
1249
|
for ( let i = 0, n = this.nodeTypeRegisterPtr; i < n; i++ ) {
|
|
1245
1250
|
const type = this.nodeTypeRegister[i];
|
|
1246
1251
|
const targetNode = this.nodeTypeLookupTable[type];
|
|
@@ -1264,7 +1269,7 @@ export class AstFilterParser {
|
|
|
1264
1269
|
realBad = hasValue;
|
|
1265
1270
|
break;
|
|
1266
1271
|
case NODE_TYPE_NET_OPTION_NAME_BADFILTER:
|
|
1267
|
-
|
|
1272
|
+
isBadfilter = true;
|
|
1268
1273
|
/* falls through */
|
|
1269
1274
|
case NODE_TYPE_NET_OPTION_NAME_NOOP:
|
|
1270
1275
|
realBad = isNegated || hasValue;
|
|
@@ -1418,9 +1423,6 @@ export class AstFilterParser {
|
|
|
1418
1423
|
this.addFlags(AST_FLAG_HAS_ERROR);
|
|
1419
1424
|
}
|
|
1420
1425
|
}
|
|
1421
|
-
const requiresTrustedSource = ( ) =>
|
|
1422
|
-
this.options.trustedSource !== true &&
|
|
1423
|
-
isException === false && badfilter === false;
|
|
1424
1426
|
switch ( modifierType ) {
|
|
1425
1427
|
case NODE_TYPE_NET_OPTION_NAME_CNAME:
|
|
1426
1428
|
realBad = abstractTypeCount || behaviorTypeCount || requestTypeCount;
|
|
@@ -1448,7 +1450,8 @@ export class AstFilterParser {
|
|
|
1448
1450
|
case NODE_TYPE_NET_OPTION_NAME_REPLACE: {
|
|
1449
1451
|
realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;
|
|
1450
1452
|
if ( realBad ) { break; }
|
|
1451
|
-
if (
|
|
1453
|
+
if ( isException || isBadfilter ) { break; }
|
|
1454
|
+
if ( this.options.trustedSource !== true ) {
|
|
1452
1455
|
this.astError = AST_ERROR_UNTRUSTED_SOURCE;
|
|
1453
1456
|
realBad = true;
|
|
1454
1457
|
break;
|
|
@@ -1463,7 +1466,8 @@ export class AstFilterParser {
|
|
|
1463
1466
|
case NODE_TYPE_NET_OPTION_NAME_URLSKIP: {
|
|
1464
1467
|
realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;
|
|
1465
1468
|
if ( realBad ) { break; }
|
|
1466
|
-
if (
|
|
1469
|
+
if ( isException || isBadfilter ) { break; }
|
|
1470
|
+
if ( this.options.trustedSource !== true ) {
|
|
1467
1471
|
this.astError = AST_ERROR_UNTRUSTED_SOURCE;
|
|
1468
1472
|
realBad = true;
|
|
1469
1473
|
break;
|
|
@@ -1478,7 +1482,8 @@ export class AstFilterParser {
|
|
|
1478
1482
|
case NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM: {
|
|
1479
1483
|
realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;
|
|
1480
1484
|
if ( realBad ) { break; }
|
|
1481
|
-
if (
|
|
1485
|
+
if ( isException || isBadfilter ) { break; }
|
|
1486
|
+
if ( this.options.trustedSource !== true ) {
|
|
1482
1487
|
this.astError = AST_ERROR_UNTRUSTED_SOURCE;
|
|
1483
1488
|
realBad = true;
|
|
1484
1489
|
break;
|
|
@@ -1512,12 +1517,7 @@ export class AstFilterParser {
|
|
|
1512
1517
|
for (;;) {
|
|
1513
1518
|
const before = s.charAt(j-1);
|
|
1514
1519
|
if ( before === '$' ) { return -1; }
|
|
1515
|
-
|
|
1516
|
-
if ( ')/|'.includes(after) === false ) {
|
|
1517
|
-
if ( before === '' || '"\'\\`'.includes(before) === false ) {
|
|
1518
|
-
return j;
|
|
1519
|
-
}
|
|
1520
|
-
}
|
|
1520
|
+
if ( this.reNetOptionTokens.test(s.slice(j+1)) ) { return j; }
|
|
1521
1521
|
if ( j === start ) { break; }
|
|
1522
1522
|
j = s.lastIndexOf('$', j-1);
|
|
1523
1523
|
if ( j === -1 ) { break; }
|
|
@@ -3080,9 +3080,10 @@ export function parseReplaceByRegexValue(s) {
|
|
|
3080
3080
|
if ( parser.transform ) {
|
|
3081
3081
|
pattern = parser.normalizeArg(pattern);
|
|
3082
3082
|
}
|
|
3083
|
-
if ( pattern
|
|
3084
|
-
|
|
3085
|
-
|
|
3083
|
+
if ( pattern !== '' ) {
|
|
3084
|
+
pattern = parser.normalizeArg(pattern, '$');
|
|
3085
|
+
pattern = parser.normalizeArg(pattern, ',');
|
|
3086
|
+
}
|
|
3086
3087
|
parser.nextArg(s, parser.separatorEnd);
|
|
3087
3088
|
let replacement = s.slice(parser.argBeg, parser.argEnd);
|
|
3088
3089
|
if ( parser.separatorEnd === parser.separatorBeg ) { return; }
|
|
@@ -3092,6 +3093,9 @@ export function parseReplaceByRegexValue(s) {
|
|
|
3092
3093
|
replacement = parser.normalizeArg(replacement, '$');
|
|
3093
3094
|
replacement = parser.normalizeArg(replacement, ',');
|
|
3094
3095
|
const flags = s.slice(parser.separatorEnd);
|
|
3096
|
+
if ( pattern === '' ) {
|
|
3097
|
+
return { flags, replacement }
|
|
3098
|
+
}
|
|
3095
3099
|
try {
|
|
3096
3100
|
return { re: new RegExp(pattern, flags), replacement };
|
|
3097
3101
|
} catch {
|
|
@@ -3101,7 +3105,10 @@ export function parseReplaceByRegexValue(s) {
|
|
|
3101
3105
|
export function parseReplaceValue(s) {
|
|
3102
3106
|
if ( s.startsWith('/') ) {
|
|
3103
3107
|
const r = parseReplaceByRegexValue(s);
|
|
3104
|
-
if ( r ) {
|
|
3108
|
+
if ( r ) {
|
|
3109
|
+
if ( r.re === undefined ) { return; }
|
|
3110
|
+
r.type = 'text';
|
|
3111
|
+
}
|
|
3105
3112
|
return r;
|
|
3106
3113
|
}
|
|
3107
3114
|
const pos = s.indexOf(':');
|