@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.
Files changed (451) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/build/limiter.js +1 -1
  3. package/build/routes/chrome/http/content.post.body.json +90 -1
  4. package/build/routes/chrome/http/pdf.post.body.json +90 -1
  5. package/build/routes/chrome/http/scrape.post.body.json +90 -1
  6. package/build/routes/chrome/http/scrape.post.response.json +21 -22
  7. package/build/routes/chrome/http/screenshot.post.body.json +90 -1
  8. package/build/routes/chromium/http/content.post.body.json +90 -1
  9. package/build/routes/chromium/http/pdf.post.body.json +90 -1
  10. package/build/routes/chromium/http/scrape.post.body.json +90 -1
  11. package/build/routes/chromium/http/scrape.post.response.json +21 -22
  12. package/build/routes/chromium/http/screenshot.post.body.json +90 -1
  13. package/build/routes/chromium/tests/scrape.spec.js +41 -0
  14. package/build/routes/edge/http/content.post.body.json +90 -1
  15. package/build/routes/edge/http/pdf.post.body.json +90 -1
  16. package/build/routes/edge/http/scrape.post.body.json +90 -1
  17. package/build/routes/edge/http/scrape.post.response.json +21 -22
  18. package/build/routes/edge/http/screenshot.post.body.json +90 -1
  19. package/build/sdk-utils.js +1 -1
  20. package/build/shared/scrape.http.js +13 -3
  21. package/docker/base/Dockerfile +8 -8
  22. package/docker/chrome/Dockerfile +2 -2
  23. package/docker/chromium/Dockerfile +2 -2
  24. package/docker/edge/Dockerfile +2 -2
  25. package/docker/firefox/Dockerfile +2 -2
  26. package/docker/multi/Dockerfile +2 -2
  27. package/docker/sdk/Dockerfile +1 -1
  28. package/docker/webkit/Dockerfile +2 -2
  29. package/extensions/ublocklite/README.md +1 -1
  30. package/extensions/ublocklite/_locales/br_FR/messages.json +1 -1
  31. package/extensions/ublocklite/_locales/bs/messages.json +58 -58
  32. package/extensions/ublocklite/_locales/he/messages.json +2 -2
  33. package/extensions/ublocklite/_locales/hu/messages.json +1 -1
  34. package/extensions/ublocklite/_locales/pt_BR/messages.json +1 -1
  35. package/extensions/ublocklite/_locales/pt_PT/messages.json +1 -1
  36. package/extensions/ublocklite/_locales/ro/messages.json +1 -1
  37. package/extensions/ublocklite/_locales/sk/messages.json +6 -6
  38. package/extensions/ublocklite/_locales/sq/messages.json +17 -17
  39. package/extensions/ublocklite/_locales/sr/messages.json +28 -28
  40. package/extensions/ublocklite/_locales/th/messages.json +1 -1
  41. package/extensions/ublocklite/_locales/tr/messages.json +1 -1
  42. package/extensions/ublocklite/_locales/vi/messages.json +1 -1
  43. package/extensions/ublocklite/css/common.css +5 -3
  44. package/extensions/ublocklite/css/default.css +10 -0
  45. package/extensions/ublocklite/css/unpicker-ui.css +1 -0
  46. package/extensions/ublocklite/js/background.js +5 -3
  47. package/extensions/ublocklite/js/dnr-parser.js +1 -1
  48. package/extensions/ublocklite/js/fetch.js +1 -1
  49. package/extensions/ublocklite/js/filter-lists.js +1 -4
  50. package/extensions/ublocklite/js/filter-manager.js +45 -9
  51. package/extensions/ublocklite/js/popup.js +2 -2
  52. package/extensions/ublocklite/js/ruleset-manager.js +10 -126
  53. package/extensions/ublocklite/js/rw-dnr-editor.js +8 -4
  54. package/extensions/ublocklite/js/scripting/css-procedural.js +2 -0
  55. package/extensions/ublocklite/js/scripting/css-specific.js +2 -0
  56. package/extensions/ublocklite/js/scripting/tool-overlay.js +1 -0
  57. package/extensions/ublocklite/js/scripting-manager.js +2 -2
  58. package/extensions/ublocklite/js/settings.js +2 -1
  59. package/extensions/ublocklite/js/static-filtering-parser.js +25 -18
  60. package/extensions/ublocklite/js/ubo-parser.js +181 -65
  61. package/extensions/ublocklite/manifest.json +4 -4
  62. package/extensions/ublocklite/rulesets/generic-details.json +7 -17
  63. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +25 -4
  64. package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +615 -1
  65. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +21 -8
  66. package/extensions/ublocklite/rulesets/main/annoyances-others.json +5 -2
  67. package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +22 -2
  68. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +1 -1
  69. package/extensions/ublocklite/rulesets/main/chn-0.json +98 -29
  70. package/extensions/ublocklite/rulesets/main/cze-0.json +6 -1
  71. package/extensions/ublocklite/rulesets/main/deu-0.json +15 -11
  72. package/extensions/ublocklite/rulesets/main/dpollock-0.json +4 -0
  73. package/extensions/ublocklite/rulesets/main/easylist.json +146 -98
  74. package/extensions/ublocklite/rulesets/main/easyprivacy.json +149 -32
  75. package/extensions/ublocklite/rulesets/main/est-0.json +1 -1
  76. package/extensions/ublocklite/rulesets/main/fin-0.json +9 -0
  77. package/extensions/ublocklite/rulesets/main/fra-0.json +49 -9
  78. package/extensions/ublocklite/rulesets/main/hun-0.json +4 -1
  79. package/extensions/ublocklite/rulesets/main/idn-0.json +1 -1
  80. package/extensions/ublocklite/rulesets/main/ind-0.json +101 -155
  81. package/extensions/ublocklite/rulesets/main/irn-0.json +34 -11
  82. package/extensions/ublocklite/rulesets/main/isr-0.json +20 -2
  83. package/extensions/ublocklite/rulesets/main/ita-0.json +3 -1
  84. package/extensions/ublocklite/rulesets/main/jpn-1.json +69 -22
  85. package/extensions/ublocklite/rulesets/main/kor-1.json +39 -5
  86. package/extensions/ublocklite/rulesets/main/ltu-0.json +3 -1
  87. package/extensions/ublocklite/rulesets/main/lva-0.json +2 -1
  88. package/extensions/ublocklite/rulesets/main/nld-0.json +6 -1
  89. package/extensions/ublocklite/rulesets/main/nor-0.json +13 -4
  90. package/extensions/ublocklite/rulesets/main/pgl.json +8 -11
  91. package/extensions/ublocklite/rulesets/main/pol-0.json +13 -2
  92. package/extensions/ublocklite/rulesets/main/rou-1.json +17 -1
  93. package/extensions/ublocklite/rulesets/main/rus-0.json +104 -27
  94. package/extensions/ublocklite/rulesets/main/rus-1.json +114 -4
  95. package/extensions/ublocklite/rulesets/main/spa-1.json +43 -15
  96. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +15832 -9032
  97. package/extensions/ublocklite/rulesets/main/swe-1.json +89 -52
  98. package/extensions/ublocklite/rulesets/main/tha-0.json +7 -1
  99. package/extensions/ublocklite/rulesets/main/tur-0.json +54 -6
  100. package/extensions/ublocklite/rulesets/main/ublock-badware.json +79 -106
  101. package/extensions/ublocklite/rulesets/main/ublock-filters.json +794 -111
  102. package/extensions/ublocklite/rulesets/main/ubol-tests.json +60 -0
  103. package/extensions/ublocklite/rulesets/main/ukr-0.json +20 -1
  104. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +631 -676
  105. package/extensions/ublocklite/rulesets/main/vie-1.json +74 -59
  106. package/extensions/ublocklite/rulesets/regex/chn-0.json +8 -3
  107. package/extensions/ublocklite/rulesets/regex/deu-0.json +0 -1
  108. package/extensions/ublocklite/rulesets/regex/easylist.json +0 -2
  109. package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
  110. package/extensions/ublocklite/rulesets/regex/kor-1.json +1 -0
  111. package/extensions/ublocklite/rulesets/regex/pol-0.json +1 -0
  112. package/extensions/ublocklite/rulesets/regex/rus-0.json +1 -0
  113. package/extensions/ublocklite/rulesets/regex/rus-1.json +24 -0
  114. package/extensions/ublocklite/rulesets/regex/tur-0.json +2 -1
  115. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +10 -8
  116. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +28 -12
  117. package/extensions/ublocklite/rulesets/ruleset-details.json +252 -472
  118. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  119. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +1 -1
  120. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +1 -1
  121. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +1 -1
  122. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +3 -3
  123. package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +2 -2
  124. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  125. package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +1 -1
  126. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +1 -1
  127. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +3 -3
  128. package/extensions/ublocklite/rulesets/scripting/generic/nld-0.js +1 -1
  129. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
  130. package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +3 -3
  131. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
  132. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +3 -3
  133. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  134. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +1 -1
  135. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +2 -2
  136. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +2 -9
  137. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +2 -13
  138. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +4 -0
  139. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -0
  140. package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +0 -2
  141. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
  142. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  143. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-notifications.js +3 -3
  144. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
  145. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  146. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-social.js +3 -3
  147. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
  148. package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +3 -3
  149. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  150. package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +3 -3
  151. package/extensions/ublocklite/rulesets/scripting/procedural/idn-0.js +3 -3
  152. package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
  153. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  154. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
  155. package/extensions/ublocklite/rulesets/scripting/procedural/nld-0.js +3 -3
  156. package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
  157. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  158. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +3 -3
  159. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  160. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  161. package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +3 -3
  162. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  163. package/extensions/ublocklite/rulesets/scripting/procedural/vie-1.js +2 -2
  164. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-on-property-read.js +2 -2
  165. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-constant.js +2 -2
  166. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie-reload.js +1 -1
  167. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie.js +2 -2
  168. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.trusted-replace-node-text.js +450 -0
  169. package/extensions/ublocklite/rulesets/scripting/scriptlet/{jpn-1.abort-on-property-write.js → adguard-mobile.trusted-set-attr.js} +107 -41
  170. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +407 -0
  171. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.remove-node-text.js +1 -1
  172. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  173. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  174. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  175. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-replace-node-text.js +2 -2
  176. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  177. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
  178. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +1 -1
  179. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +1 -1
  180. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
  181. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
  182. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +9 -2
  183. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +2 -2
  184. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
  185. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-xhr.js +2 -2
  186. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-cookie.js +2 -2
  187. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
  188. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-cookie.js +2 -2
  189. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +1 -1
  190. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +427 -0
  191. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +2 -2
  192. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +2 -2
  193. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.adjust-setTimeout.js +2 -2
  194. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +1 -1
  195. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +9 -2
  196. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +2 -2
  197. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +1 -1
  198. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
  199. package/extensions/ublocklite/rulesets/scripting/scriptlet/{vie-1.m3u-prune.js → chn-0.spoof-css.js} +109 -148
  200. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-current-script.js +1 -1
  201. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +7 -0
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +2 -2
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.adjust-setTimeout.js +2 -2
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +7 -0
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +2 -2
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.set-constant.js +1 -1
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-local-storage-item.js +2 -2
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +7 -0
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +2 -2
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +7 -0
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +1 -1
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.remove-node-text.js +2 -2
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-constant.js +2 -2
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-session-storage-item.js +2 -2
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +7 -0
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-current-script.js +2 -2
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +7 -0
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-attr.js +1 -1
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.set-cookie.js +442 -0
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-filters.evaldata-prune.js → kor-1.json-prune-xhr-response.js} +227 -198
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.json-prune.js +2 -2
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +7 -0
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +2 -2
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +7 -0
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +7 -0
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.abort-current-script.js +2 -2
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.remove-node-text.js +1 -1
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-write.js +2 -2
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +10 -3
  235. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +2 -2
  236. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-xhr.js +1 -1
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-cookie.js +3 -3
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-local-storage-item.js +2 -2
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.abort-on-property-read.js +3 -3
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +1 -1
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.json-prune.js +2 -2
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +7 -0
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.remove-cookie.js +4 -4
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-current-script.js +2 -2
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +2 -2
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setInterval.js +1 -1
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +1 -1
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +9 -2
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +2 -2
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +2 -2
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +1 -1
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +2 -2
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +2 -2
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +2 -2
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +2 -2
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +1 -1
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setInterval.js +2 -2
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +7 -0
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +2 -2
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-node-text.js +2 -2
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-cookie.js +2 -2
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.addEventListener-defuser.js +498 -0
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +450 -0
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +3 -3
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  279. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
  280. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +3 -3
  281. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +3 -3
  282. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.disable-newtab-links.js +1 -1
  283. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +2 -2
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-fetch-response.js +927 -0
  285. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +851 -0
  286. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  287. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js +3 -3
  288. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +3 -3
  289. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.m3u-prune.js +2 -2
  290. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +3 -3
  291. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +2 -2
  292. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +10 -3
  293. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
  294. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +2 -2
  295. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +3 -3
  296. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +3 -3
  297. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  298. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
  299. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  300. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
  301. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-attr.js +2 -2
  302. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  303. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  304. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
  305. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.spoof-css.js +2 -2
  306. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.js +1 -1
  307. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
  308. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +1 -1
  309. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -0
  310. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-xhr.js +1 -1
  311. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
  312. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  313. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
  314. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-xhr-response.js +1 -1
  315. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +2 -2
  316. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-cookie.js +3 -3
  317. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +2 -2
  318. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +1 -1
  319. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.xml-prune.js +2 -2
  320. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +7 -0
  321. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  322. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  323. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.json-prune.js +1 -1
  324. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +7 -0
  325. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  326. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  327. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
  328. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  329. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  330. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  331. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  332. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  333. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  334. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  335. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  336. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  337. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  338. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  339. package/extensions/ublocklite/rulesets/scripting/specific/irn-0.js +3 -3
  340. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  341. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  342. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  343. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  344. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  345. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  346. package/extensions/ublocklite/rulesets/scripting/specific/pol-0.js +3 -3
  347. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  348. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  349. package/extensions/ublocklite/rulesets/scripting/specific/rus-1.js +3 -3
  350. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  351. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  352. package/extensions/ublocklite/rulesets/scripting/specific/tha-0.js +3 -3
  353. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  354. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  355. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  356. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  357. package/extensions/ublocklite/rulesets/scriptlet-details.json +301 -173
  358. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +11 -1
  359. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +1 -0
  360. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +398 -791
  361. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +4 -0
  362. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  363. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +76 -74
  364. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +429 -49
  365. package/extensions/ublocklite/rulesets/strictblock/irn-0.json +2 -0
  366. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +185 -176
  367. package/extensions/ublocklite/rulesets/strictblock/kor-1.json +6 -1
  368. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
  369. package/extensions/ublocklite/rulesets/strictblock/pgl.json +8 -11
  370. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +2 -0
  371. package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
  372. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +1 -2
  373. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +15832 -9032
  374. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +2 -0
  375. package/extensions/ublocklite/rulesets/strictblock/tur-0.json +4 -0
  376. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +636 -631
  377. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +3 -2
  378. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +631 -676
  379. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +7 -8
  380. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +30 -0
  381. package/extensions/ublocklite/ublock.zip +0 -0
  382. package/package.json +23 -21
  383. package/scripts/build-open-api.js +15 -1
  384. package/scripts/install-adblock.js +25 -4
  385. package/scripts/start.sh +1 -1
  386. package/scripts/test.sh +2 -2
  387. package/src/limiter.ts +1 -1
  388. package/src/routes/chromium/tests/scrape.spec.ts +48 -0
  389. package/src/sdk-utils.ts +1 -1
  390. package/src/shared/scrape.http.ts +17 -5
  391. package/static/docs/swagger.json +330 -102
  392. package/static/docs/swagger.min.json +329 -101
  393. package/static/function/client.js +273 -171
  394. package/static/function/index.html +273 -171
  395. package/extensions/ublocklite/rulesets/modify-headers/annoyances-overlays.json +0 -108
  396. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +0 -316
  397. package/extensions/ublocklite/rulesets/modify-headers/cze-0.json +0 -25
  398. package/extensions/ublocklite/rulesets/modify-headers/deu-0.json +0 -24
  399. package/extensions/ublocklite/rulesets/modify-headers/easylist.json +0 -14
  400. package/extensions/ublocklite/rulesets/modify-headers/easyprivacy.json +0 -48
  401. package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +0 -215
  402. package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +0 -45
  403. package/extensions/ublocklite/rulesets/modify-headers/isr-0.json +0 -50
  404. package/extensions/ublocklite/rulesets/modify-headers/rus-0.json +0 -41
  405. package/extensions/ublocklite/rulesets/modify-headers/rus-1.json +0 -22
  406. package/extensions/ublocklite/rulesets/modify-headers/swe-1.json +0 -46
  407. package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +0 -53
  408. package/extensions/ublocklite/rulesets/modify-headers/ubol-tests.json +0 -25
  409. package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +0 -162
  410. package/extensions/ublocklite/rulesets/redirect/adguard-mobile.json +0 -20
  411. package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +0 -15
  412. package/extensions/ublocklite/rulesets/redirect/chn-0.json +0 -40
  413. package/extensions/ublocklite/rulesets/redirect/cze-0.json +0 -76
  414. package/extensions/ublocklite/rulesets/redirect/deu-0.json +0 -79
  415. package/extensions/ublocklite/rulesets/redirect/easylist.json +0 -103
  416. package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +0 -137
  417. package/extensions/ublocklite/rulesets/redirect/fin-0.json +0 -121
  418. package/extensions/ublocklite/rulesets/redirect/fra-0.json +0 -35
  419. package/extensions/ublocklite/rulesets/redirect/hun-0.json +0 -38
  420. package/extensions/ublocklite/rulesets/redirect/irn-0.json +0 -73
  421. package/extensions/ublocklite/rulesets/redirect/isr-0.json +0 -17
  422. package/extensions/ublocklite/rulesets/redirect/jpn-1.json +0 -30
  423. package/extensions/ublocklite/rulesets/redirect/kor-1.json +0 -25
  424. package/extensions/ublocklite/rulesets/redirect/ltu-0.json +0 -33
  425. package/extensions/ublocklite/rulesets/redirect/nld-0.json +0 -79
  426. package/extensions/ublocklite/rulesets/redirect/nor-0.json +0 -132
  427. package/extensions/ublocklite/rulesets/redirect/pol-0.json +0 -15
  428. package/extensions/ublocklite/rulesets/redirect/rou-1.json +0 -53
  429. package/extensions/ublocklite/rulesets/redirect/rus-0.json +0 -21
  430. package/extensions/ublocklite/rulesets/redirect/rus-1.json +0 -118
  431. package/extensions/ublocklite/rulesets/redirect/spa-1.json +0 -27
  432. package/extensions/ublocklite/rulesets/redirect/swe-1.json +0 -14
  433. package/extensions/ublocklite/rulesets/redirect/tha-0.json +0 -78
  434. package/extensions/ublocklite/rulesets/redirect/tur-0.json +0 -24
  435. package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +0 -18
  436. package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +0 -556
  437. package/extensions/ublocklite/rulesets/redirect/ubol-tests.json +0 -22
  438. package/extensions/ublocklite/rulesets/redirect/ukr-0.json +0 -18
  439. package/extensions/ublocklite/rulesets/redirect/vie-1.json +0 -85
  440. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +0 -612
  441. package/extensions/ublocklite/rulesets/removeparam/annoyances-overlays.json +0 -27
  442. package/extensions/ublocklite/rulesets/removeparam/chn-0.json +0 -48
  443. package/extensions/ublocklite/rulesets/removeparam/est-0.json +0 -26
  444. package/extensions/ublocklite/rulesets/removeparam/fin-0.json +0 -52
  445. package/extensions/ublocklite/rulesets/removeparam/irn-0.json +0 -18
  446. package/extensions/ublocklite/rulesets/removeparam/kor-1.json +0 -26
  447. package/extensions/ublocklite/rulesets/removeparam/rus-0.json +0 -19
  448. package/extensions/ublocklite/rulesets/removeparam/rus-1.json +0 -98
  449. package/extensions/ublocklite/rulesets/removeparam/swe-1.json +0 -125
  450. package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +0 -63
  451. package/extensions/ublocklite/rulesets/removeparam/ukr-0.json +0 -49
@@ -20,27 +20,116 @@
20
20
 
21
21
  */
22
22
 
23
- // ruleset: ublock-filters
23
+ // ruleset: kor-1
24
24
 
25
25
  // Important!
26
26
  // Isolate from global scope
27
27
 
28
28
  // Start of local scope
29
- (function uBOL_evaldataPrune() {
29
+ (function uBOL_jsonPruneXhrResponse() {
30
30
 
31
31
  /******************************************************************************/
32
32
 
33
- function evaldataPrune(
33
+ function jsonPruneXhrResponse(
34
34
  rawPrunePaths = '',
35
35
  rawNeedlePaths = ''
36
36
  ) {
37
- proxyApplyFn('eval', function(context) {
38
- const before = context.reflect();
39
- if ( typeof before !== 'object' ) { return before; }
40
- if ( before === null ) { return null; }
41
- const after = objectPruneFn(before, rawPrunePaths, rawNeedlePaths);
42
- return after || before;
43
- });
37
+ const safe = safeSelf();
38
+ const logPrefix = safe.makeLogPrefix('json-prune-xhr-response', rawPrunePaths, rawNeedlePaths);
39
+ const xhrInstances = new WeakMap();
40
+ const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
41
+ const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url');
42
+ const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true });
43
+ self.XMLHttpRequest = class extends self.XMLHttpRequest {
44
+ open(method, url, ...args) {
45
+ const xhrDetails = { method, url };
46
+ let outcome = 'match';
47
+ if ( propNeedles.size !== 0 ) {
48
+ if ( matchObjectPropertiesFn(propNeedles, xhrDetails) === undefined ) {
49
+ outcome = 'nomatch';
50
+ }
51
+ }
52
+ if ( outcome === 'match' ) {
53
+ if ( safe.logLevel > 1 ) {
54
+ safe.uboLog(logPrefix, `Matched optional "propsToMatch", "${extraArgs.propsToMatch}"`);
55
+ }
56
+ xhrInstances.set(this, xhrDetails);
57
+ }
58
+ return super.open(method, url, ...args);
59
+ }
60
+ get response() {
61
+ const innerResponse = super.response;
62
+ const xhrDetails = xhrInstances.get(this);
63
+ if ( xhrDetails === undefined ) {
64
+ return innerResponse;
65
+ }
66
+ const responseLength = typeof innerResponse === 'string'
67
+ ? innerResponse.length
68
+ : undefined;
69
+ if ( xhrDetails.lastResponseLength !== responseLength ) {
70
+ xhrDetails.response = undefined;
71
+ xhrDetails.lastResponseLength = responseLength;
72
+ }
73
+ if ( xhrDetails.response !== undefined ) {
74
+ return xhrDetails.response;
75
+ }
76
+ let objBefore;
77
+ if ( typeof innerResponse === 'object' ) {
78
+ objBefore = innerResponse;
79
+ } else if ( typeof innerResponse === 'string' ) {
80
+ try {
81
+ objBefore = safe.JSON_parse(innerResponse);
82
+ } catch {
83
+ }
84
+ }
85
+ if ( typeof objBefore !== 'object' ) {
86
+ return (xhrDetails.response = innerResponse);
87
+ }
88
+ const objAfter = objectPruneFn(
89
+ objBefore,
90
+ rawPrunePaths,
91
+ rawNeedlePaths,
92
+ stackNeedle,
93
+ extraArgs
94
+ );
95
+ let outerResponse;
96
+ if ( typeof objAfter === 'object' ) {
97
+ outerResponse = typeof innerResponse === 'string'
98
+ ? safe.JSON_stringify(objAfter)
99
+ : objAfter;
100
+ safe.uboLog(logPrefix, 'Pruned');
101
+ } else {
102
+ outerResponse = innerResponse;
103
+ }
104
+ return (xhrDetails.response = outerResponse);
105
+ }
106
+ get responseText() {
107
+ const response = this.response;
108
+ return typeof response !== 'string'
109
+ ? super.responseText
110
+ : response;
111
+ }
112
+ };
113
+ }
114
+
115
+ function matchObjectPropertiesFn(propNeedles, ...objs) {
116
+ const safe = safeSelf();
117
+ const matched = [];
118
+ for ( const obj of objs ) {
119
+ if ( obj instanceof Object === false ) { continue; }
120
+ for ( const [ prop, details ] of propNeedles ) {
121
+ let value = obj[prop];
122
+ if ( value === undefined ) { continue; }
123
+ if ( typeof value !== 'string' ) {
124
+ try { value = safe.JSON_stringify(value); }
125
+ catch { }
126
+ if ( typeof value !== 'string' ) { continue; }
127
+ }
128
+ if ( safe.testPattern(details, value) === false ) { return; }
129
+ matched.push(`${prop}: ${value}`);
130
+ }
131
+ }
132
+ return matched;
44
133
  }
45
134
 
46
135
  function objectPruneFn(
@@ -85,195 +174,25 @@ function objectPruneFn(
85
174
  if ( outcome === 'match' ) { return obj; }
86
175
  }
87
176
 
88
- function proxyApplyFn(
89
- target = '',
90
- handler = ''
91
- ) {
92
- let context = globalThis;
93
- let prop = target;
94
- for (;;) {
95
- const pos = prop.indexOf('.');
96
- if ( pos === -1 ) { break; }
97
- context = context[prop.slice(0, pos)];
98
- if ( context instanceof Object === false ) { return; }
99
- prop = prop.slice(pos+1);
100
- }
101
- const fn = context[prop];
102
- if ( typeof fn !== 'function' ) { return; }
103
- if ( proxyApplyFn.CtorContext === undefined ) {
104
- proxyApplyFn.ctorContexts = [];
105
- proxyApplyFn.CtorContext = class {
106
- constructor(...args) {
107
- this.init(...args);
108
- }
109
- init(callFn, callArgs) {
110
- this.callFn = callFn;
111
- this.callArgs = callArgs;
112
- return this;
113
- }
114
- reflect() {
115
- const r = Reflect.construct(this.callFn, this.callArgs);
116
- this.callFn = this.callArgs = this.private = undefined;
117
- proxyApplyFn.ctorContexts.push(this);
118
- return r;
119
- }
120
- static factory(...args) {
121
- return proxyApplyFn.ctorContexts.length !== 0
122
- ? proxyApplyFn.ctorContexts.pop().init(...args)
123
- : new proxyApplyFn.CtorContext(...args);
124
- }
125
- };
126
- proxyApplyFn.applyContexts = [];
127
- proxyApplyFn.ApplyContext = class {
128
- constructor(...args) {
129
- this.init(...args);
130
- }
131
- init(callFn, thisArg, callArgs) {
132
- this.callFn = callFn;
133
- this.thisArg = thisArg;
134
- this.callArgs = callArgs;
135
- return this;
136
- }
137
- reflect() {
138
- const r = Reflect.apply(this.callFn, this.thisArg, this.callArgs);
139
- this.callFn = this.thisArg = this.callArgs = this.private = undefined;
140
- proxyApplyFn.applyContexts.push(this);
141
- return r;
142
- }
143
- static factory(...args) {
144
- return proxyApplyFn.applyContexts.length !== 0
145
- ? proxyApplyFn.applyContexts.pop().init(...args)
146
- : new proxyApplyFn.ApplyContext(...args);
147
- }
148
- };
149
- }
150
- const fnStr = fn.toString();
151
- const toString = (function toString() { return fnStr; }).bind(null);
152
- const proxyDetails = {
153
- apply(target, thisArg, args) {
154
- return handler(proxyApplyFn.ApplyContext.factory(target, thisArg, args));
155
- },
156
- get(target, prop) {
157
- if ( prop === 'toString' ) { return toString; }
158
- return Reflect.get(target, prop);
159
- },
160
- };
161
- if ( fn.prototype?.constructor === fn ) {
162
- proxyDetails.construct = function(target, args) {
163
- return handler(proxyApplyFn.CtorContext.factory(target, args));
164
- };
165
- }
166
- context[prop] = new Proxy(fn, proxyDetails);
167
- }
168
-
169
- function matchesStackTraceFn(
170
- needleDetails,
171
- logLevel = ''
172
- ) {
177
+ function parsePropertiesToMatchFn(propsToMatch, implicit = '') {
173
178
  const safe = safeSelf();
174
- const exceptionToken = getExceptionTokenFn();
175
- const error = new safe.Error(exceptionToken);
176
- const docURL = new URL(self.location.href);
177
- docURL.hash = '';
178
- // Normalize stack trace
179
- const reLine = /(.*?@)?(\S+)(:\d+):\d+\)?$/;
180
- const lines = [];
181
- for ( let line of safe.String_split.call(error.stack, /[\n\r]+/) ) {
182
- if ( line.includes(exceptionToken) ) { continue; }
183
- line = line.trim();
184
- const match = safe.RegExp_exec.call(reLine, line);
185
- if ( match === null ) { continue; }
186
- let url = match[2];
187
- if ( url.startsWith('(') ) { url = url.slice(1); }
188
- if ( url === docURL.href ) {
189
- url = 'inlineScript';
190
- } else if ( url.startsWith('<anonymous>') ) {
191
- url = 'injectedScript';
179
+ const needles = new Map();
180
+ if ( propsToMatch === undefined || propsToMatch === '' ) { return needles; }
181
+ const options = { canNegate: true };
182
+ for ( const needle of safe.String_split.call(propsToMatch, /\s+/) ) {
183
+ let [ prop, pattern ] = safe.String_split.call(needle, ':');
184
+ if ( prop === '' ) { continue; }
185
+ if ( pattern !== undefined && /[^$\w -]/.test(prop) ) {
186
+ prop = `${prop}:${pattern}`;
187
+ pattern = undefined;
192
188
  }
193
- let fn = match[1] !== undefined
194
- ? match[1].slice(0, -1)
195
- : line.slice(0, match.index).trim();
196
- if ( fn.startsWith('at') ) { fn = fn.slice(2).trim(); }
197
- let rowcol = match[3];
198
- lines.push(' ' + `${fn} ${url}${rowcol}:1`.trim());
199
- }
200
- lines[0] = `stackDepth:${lines.length-1}`;
201
- const stack = lines.join('\t');
202
- const r = needleDetails.matchAll !== true &&
203
- safe.testPattern(needleDetails, stack);
204
- if (
205
- logLevel === 'all' ||
206
- logLevel === 'match' && r ||
207
- logLevel === 'nomatch' && !r
208
- ) {
209
- safe.uboLog(stack.replace(/\t/g, '\n'));
210
- }
211
- return r;
212
- }
213
-
214
- function objectFindOwnerFn(
215
- root,
216
- path,
217
- prune = false
218
- ) {
219
- const safe = safeSelf();
220
- let owner = root;
221
- let chain = path;
222
- for (;;) {
223
- if ( typeof owner !== 'object' || owner === null ) { return false; }
224
- const pos = chain.indexOf('.');
225
- if ( pos === -1 ) {
226
- if ( prune === false ) {
227
- return safe.Object_hasOwn(owner, chain);
228
- }
229
- let modified = false;
230
- if ( chain === '*' ) {
231
- for ( const key in owner ) {
232
- if ( safe.Object_hasOwn(owner, key) === false ) { continue; }
233
- delete owner[key];
234
- modified = true;
235
- }
236
- } else if ( safe.Object_hasOwn(owner, chain) ) {
237
- delete owner[chain];
238
- modified = true;
239
- }
240
- return modified;
189
+ if ( pattern !== undefined ) {
190
+ needles.set(prop, safe.initPattern(pattern, options));
191
+ } else if ( implicit !== '' ) {
192
+ needles.set(implicit, safe.initPattern(prop, options));
241
193
  }
242
- const prop = chain.slice(0, pos);
243
- const next = chain.slice(pos + 1);
244
- let found = false;
245
- if ( prop === '[-]' && Array.isArray(owner) ) {
246
- let i = owner.length;
247
- while ( i-- ) {
248
- if ( objectFindOwnerFn(owner[i], next) === false ) { continue; }
249
- owner.splice(i, 1);
250
- found = true;
251
- }
252
- return found;
253
- }
254
- if ( prop === '{-}' && owner instanceof Object ) {
255
- for ( const key of Object.keys(owner) ) {
256
- if ( objectFindOwnerFn(owner[key], next) === false ) { continue; }
257
- delete owner[key];
258
- found = true;
259
- }
260
- return found;
261
- }
262
- if (
263
- prop === '[]' && Array.isArray(owner) ||
264
- prop === '{}' && owner instanceof Object ||
265
- prop === '*' && owner instanceof Object
266
- ) {
267
- for ( const key of Object.keys(owner) ) {
268
- if (objectFindOwnerFn(owner[key], next, prune) === false ) { continue; }
269
- found = true;
270
- }
271
- return found;
272
- }
273
- if ( safe.Object_hasOwn(owner, prop) === false ) { return false; }
274
- owner = owner[prop];
275
- chain = chain.slice(pos + 1);
276
194
  }
195
+ return needles;
277
196
  }
278
197
 
279
198
  function safeSelf() {
@@ -466,6 +385,116 @@ function safeSelf() {
466
385
  return safe;
467
386
  }
468
387
 
388
+ function matchesStackTraceFn(
389
+ needleDetails,
390
+ logLevel = ''
391
+ ) {
392
+ const safe = safeSelf();
393
+ const exceptionToken = getExceptionTokenFn();
394
+ const error = new safe.Error(exceptionToken);
395
+ const docURL = new URL(self.location.href);
396
+ docURL.hash = '';
397
+ // Normalize stack trace
398
+ const reLine = /(.*?@)?(\S+)(:\d+):\d+\)?$/;
399
+ const lines = [];
400
+ for ( let line of safe.String_split.call(error.stack, /[\n\r]+/) ) {
401
+ if ( line.includes(exceptionToken) ) { continue; }
402
+ line = line.trim();
403
+ const match = safe.RegExp_exec.call(reLine, line);
404
+ if ( match === null ) { continue; }
405
+ let url = match[2];
406
+ if ( url.startsWith('(') ) { url = url.slice(1); }
407
+ if ( url === docURL.href ) {
408
+ url = 'inlineScript';
409
+ } else if ( url.startsWith('<anonymous>') ) {
410
+ url = 'injectedScript';
411
+ }
412
+ let fn = match[1] !== undefined
413
+ ? match[1].slice(0, -1)
414
+ : line.slice(0, match.index).trim();
415
+ if ( fn.startsWith('at') ) { fn = fn.slice(2).trim(); }
416
+ let rowcol = match[3];
417
+ lines.push(' ' + `${fn} ${url}${rowcol}:1`.trim());
418
+ }
419
+ lines[0] = `stackDepth:${lines.length-1}`;
420
+ const stack = lines.join('\t');
421
+ const r = needleDetails.matchAll !== true &&
422
+ safe.testPattern(needleDetails, stack);
423
+ if (
424
+ logLevel === 'all' ||
425
+ logLevel === 'match' && r ||
426
+ logLevel === 'nomatch' && !r
427
+ ) {
428
+ safe.uboLog(stack.replace(/\t/g, '\n'));
429
+ }
430
+ return r;
431
+ }
432
+
433
+ function objectFindOwnerFn(
434
+ root,
435
+ path,
436
+ prune = false
437
+ ) {
438
+ const safe = safeSelf();
439
+ let owner = root;
440
+ let chain = path;
441
+ for (;;) {
442
+ if ( typeof owner !== 'object' || owner === null ) { return false; }
443
+ const pos = chain.indexOf('.');
444
+ if ( pos === -1 ) {
445
+ if ( prune === false ) {
446
+ return safe.Object_hasOwn(owner, chain);
447
+ }
448
+ let modified = false;
449
+ if ( chain === '*' ) {
450
+ for ( const key in owner ) {
451
+ if ( safe.Object_hasOwn(owner, key) === false ) { continue; }
452
+ delete owner[key];
453
+ modified = true;
454
+ }
455
+ } else if ( safe.Object_hasOwn(owner, chain) ) {
456
+ delete owner[chain];
457
+ modified = true;
458
+ }
459
+ return modified;
460
+ }
461
+ const prop = chain.slice(0, pos);
462
+ const next = chain.slice(pos + 1);
463
+ let found = false;
464
+ if ( prop === '[-]' && Array.isArray(owner) ) {
465
+ let i = owner.length;
466
+ while ( i-- ) {
467
+ if ( objectFindOwnerFn(owner[i], next) === false ) { continue; }
468
+ owner.splice(i, 1);
469
+ found = true;
470
+ }
471
+ return found;
472
+ }
473
+ if ( prop === '{-}' && owner instanceof Object ) {
474
+ for ( const key of Object.keys(owner) ) {
475
+ if ( objectFindOwnerFn(owner[key], next) === false ) { continue; }
476
+ delete owner[key];
477
+ found = true;
478
+ }
479
+ return found;
480
+ }
481
+ if (
482
+ prop === '[]' && Array.isArray(owner) ||
483
+ prop === '{}' && owner instanceof Object ||
484
+ prop === '*' && owner instanceof Object
485
+ ) {
486
+ for ( const key of Object.keys(owner) ) {
487
+ if (objectFindOwnerFn(owner[key], next, prune) === false ) { continue; }
488
+ found = true;
489
+ }
490
+ return found;
491
+ }
492
+ if ( safe.Object_hasOwn(owner, prop) === false ) { return false; }
493
+ owner = owner[prop];
494
+ chain = chain.slice(pos + 1);
495
+ }
496
+ }
497
+
469
498
  function getExceptionTokenFn() {
470
499
  const token = getRandomTokenFn();
471
500
  const oe = self.onerror;
@@ -487,8 +516,8 @@ function getRandomTokenFn() {
487
516
  /******************************************************************************/
488
517
 
489
518
  const scriptletGlobals = {}; // eslint-disable-line
490
- const argsList = [["entity.commercial"]];
491
- const hostnamesMap = new Map([["m1.nivod.tv",0]]);
519
+ const argsList = [["layers.[-].metadata.name.{=}.POI_Ads","","propsToMatch","url:/PCWeb_Real.json"]];
520
+ const hostnamesMap = new Map([["map.naver.com",0]]);
492
521
  const exceptionsMap = new Map([]);
493
522
  const hasEntities = false;
494
523
  const hasAncestors = false;
@@ -556,7 +585,7 @@ if ( hasAncestors ) {
556
585
  // Apply scriplets
557
586
  for ( const i of todoIndices ) {
558
587
  if ( tonotdoIndices.has(i) ) { continue; }
559
- try { evaldataPrune(...argsList[i]); }
588
+ try { jsonPruneXhrResponse(...argsList[i]); }
560
589
  catch { }
561
590
  }
562
591
 
@@ -425,8 +425,8 @@ function getRandomTokenFn() {
425
425
  /******************************************************************************/
426
426
 
427
427
  const scriptletGlobals = {}; // eslint-disable-line
428
- const argsList = [["tpl apply","tpl.[].c"],["data","data.getBannerAdExchange"],["powerLink","powerLink.ads"],["adRecommend.adUnits.[]"],["data.BrandAd"],["data.supertopADNos"],["ads"]];
429
- const hostnamesMap = new Map([["m.fmkorea.com",0],["doctornow.co.kr",1],["search.11st.co.kr",2],["msearch.shopping.naver.com",3],["search.shopping.naver.com",4],["enuri.com",5],["shoppinghow.kakao.com",6]]);
428
+ const argsList = [["tpl apply","tpl.[].c"],["[].data.poiRecommendations.recommendations.[].items.[-].adClickLog.clickUrl"],["data","data.getBannerAdExchange"],["powerLink","powerLink.ads"],["adRecommend.adUnits.[]"],["data.BrandAd"],["data.supertopADNos"],["ads"]];
429
+ const hostnamesMap = new Map([["m.fmkorea.com",0],["pcmap.place.naver.com",1],["m.place.naver.com",1],["doctornow.co.kr",2],["search.11st.co.kr",3],["msearch.shopping.naver.com",4],["search.shopping.naver.com",5],["enuri.com",6],["shoppinghow.kakao.com",7]]);
430
430
  const exceptionsMap = new Map([]);
431
431
  const hasEntities = false;
432
432
  const hasAncestors = false;
@@ -41,6 +41,7 @@ function preventFetchFn(
41
41
  responseType = ''
42
42
  ) {
43
43
  const safe = safeSelf();
44
+ const setTimeout = self.setTimeout;
44
45
  const scriptletName = `${trusted ? 'trusted-' : ''}prevent-fetch`;
45
46
  const logPrefix = safe.makeLogPrefix(
46
47
  scriptletName,
@@ -48,6 +49,7 @@ function preventFetchFn(
48
49
  responseBody,
49
50
  responseType
50
51
  );
52
+ const extraArgs = safe.getExtraArgs(Array.from(arguments), 4);
51
53
  const needles = [];
52
54
  for ( const condition of safe.String_split.call(propsToMatch, /\s+/) ) {
53
55
  if ( condition === '' ) { continue; }
@@ -135,6 +137,11 @@ function preventFetchFn(
135
137
  responseProps
136
138
  );
137
139
  safe.Object_defineProperties(response, props);
140
+ if ( extraArgs.throttle ) {
141
+ return new Promise(resolve => {
142
+ setTimeout(( ) => { resolve(response); }, extraArgs.throttle);
143
+ });
144
+ }
138
145
  return response;
139
146
  });
140
147
  });
@@ -362,8 +362,8 @@ function safeSelf() {
362
362
  /******************************************************************************/
363
363
 
364
364
  const scriptletGlobals = {}; // eslint-disable-line
365
- const argsList = [["height && 1 <= height && height <= 20"],["coupangAd"],["popup_goods"],["piBlock"],["","15000"],["/\\.displayMessage\\(/"],["banner_book"],["blockCheck2022"],["ad.innerHTML.replace"],["document[_0x"]];
366
- const hostnamesMap = new Map([["m.humoruniv.com",0],["enjoyplan.tistory.com",1],["10000recipe.com",2],["moneytoring.co.kr",3],["postincome.co.kr",3],["itinformation.kr",3],["digitstar77.com",3],["filetender.com",4],["zuzunza.com",5],["iphonedev.co.kr",5],["tistory.com",5],["sysnet.pe.kr",6],["genshin.gamedot.org",7],["stockinfo7.com",8],["lover932.net",9],["lover933.net",9],["lover934.net",9],["lover935.net",9],["lover936.net",9],["lover937.net",9],["lover938.net",9],["lover939.net",9],["lover940.net",9],["lover941.net",9]]);
365
+ const argsList = [["height && 1 <= height && height <= 20"],["coupangAd"],["popup_goods"],["piBlock"],["","15000"],["/\\.displayMessage\\(/"],["window.getComputedStyle"],["adBlockedMessage"],["banner_book"],["blockCheck2022"],["ad.innerHTML.replace"],["document[_0x"]];
366
+ const hostnamesMap = new Map([["m.humoruniv.com",0],["enjoyplan.tistory.com",1],["10000recipe.com",2],["moneytoring.co.kr",3],["postincome.co.kr",3],["itinformation.kr",3],["digitstar77.com",3],["filetender.com",4],["zuzunza.com",5],["iphonedev.co.kr",5],["tistory.com",5],["chzzkban.xyz",6],["mylocation.co.kr",7],["sysnet.pe.kr",8],["genshin.gamedot.org",9],["stockinfo7.com",10],["lover932.net",11],["lover933.net",11],["lover934.net",11],["lover935.net",11],["lover936.net",11],["lover937.net",11],["lover938.net",11],["lover939.net",11],["lover940.net",11],["lover941.net",11]]);
367
367
  const exceptionsMap = new Map([]);
368
368
  const hasEntities = false;
369
369
  const hasAncestors = false;
@@ -460,8 +460,8 @@ function validateConstantFn(trusted, raw, extraArgs = {}) {
460
460
  /******************************************************************************/
461
461
 
462
462
  const scriptletGlobals = {}; // eslint-disable-line
463
- const argsList = [["_ads_zum_main_initbanner_750_zum_main_br_widget_336","true"],["list_end_run_read_top_boom","noopFunc"],["list_end_run_pds_notice_boom","noopFunc"],["list_end_run_comment_bottom_boom","noopFunc"],["list_end_run_center_boom","noopFunc"],["list_end_run_list_bottom_boom","noopFunc"],["list_end_run","noopFunc"],["commonTrailer","undefined"],["Math.uuid","","","asFunction"],["jQuery.fn.getUrlParameter","","asFunction"],["window.__NEXT_DATA__.props.pageProps.initialState.post.adhistory","{}"],["$is.powerLink.loadPowerLink","noopFunc"],["SbsHtml5PlayerContainer.prototype.renderAdSequence","noopFunc"],["pum_vars","undefined"],["player.renderAdSequence","undefined"],["bannerpop.popup","noopFunc"],["admode","0"],["player.advertisement_finished","true"],["getAdcrUrl",""],["random_imglink","noopFunc"],["vrixadsdk","undefined"],["hahaha","noopFunc"],["adsBlocked","noopFunc"],["adblockChecker","noopFunc"],["checkAdBlock","undefined"],["googletag.getVersion","trueFunc"],["linkPass","true"],["DHAntiAdBlocker","true"],["checkAds","noopFunc"],["NAVER_ADPOST_V2","noopFunc"]];
464
- const hostnamesMap = new Map([["zum.com",0],["m.humoruniv.com",[1,2,3,4,5,6]],["platformgreat.kr",7],["hub.zum.com",8],["mememedia.co.kr",9],["humors.zigcou.com",10],["shopping.interpark.com",11],["sbs.co.kr",[12,14]],["fun-iyagi.co.kr",13],["timecoffee.co.kr",13],["333aaa.site",13],["domin.co.kr",15],["uwayapply.com",16],["tvchosun.com",17],["naver.com",18],["koreapas.com",19],["imbc.com",20],["kilho.net",21],["meeco.kr",22],["checkwhoiam.tistory.com",23],["minipol.tistory.com",24],["start.klauncher.kr",25],["dinfo.3dpchip.com",26],["sogirl.so",27],["tistory.com",28],["sajuplus.net",28],["auto.danawa.com",29]]);
463
+ const argsList = [["_ads_zum_main_initbanner_750_zum_main_br_widget_336","true"],["list_end_run_read_top_boom","noopFunc"],["list_end_run_pds_notice_boom","noopFunc"],["list_end_run_comment_bottom_boom","noopFunc"],["list_end_run_center_boom","noopFunc"],["list_end_run_list_bottom_boom","noopFunc"],["list_end_run","noopFunc"],["commonTrailer","undefined"],["Math.uuid","","","asFunction"],["jQuery.fn.getUrlParameter","","asFunction"],["window.__NEXT_DATA__.props.pageProps.initialState.post.adhistory","{}"],["$is.powerLink.loadPowerLink","noopFunc"],["SbsHtml5PlayerContainer.prototype.renderAdSequence","noopFunc"],["pum_vars","undefined"],["player.renderAdSequence","undefined"],["bannerpop.popup","noopFunc"],["player.advertisement_finished","true"],["getAdcrUrl",""],["random_imglink","noopFunc"],["vrixadsdk","undefined"],["hahaha","noopFunc"],["adsBlocked","noopFunc"],["adblockChecker","noopFunc"],["checkAdBlock","undefined"],["googletag.getVersion","trueFunc"],["linkPass","true"],["DHAntiAdBlocker","true"],["checkAds","noopFunc"],["NAVER_ADPOST_V2","noopFunc"]];
464
+ const hostnamesMap = new Map([["zum.com",0],["m.humoruniv.com",[1,2,3,4,5,6]],["platformgreat.kr",7],["hub.zum.com",8],["mememedia.co.kr",9],["humors.zigcou.com",10],["shopping.interpark.com",11],["sbs.co.kr",[12,14]],["fun-iyagi.co.kr",13],["timecoffee.co.kr",13],["333aaa.site",13],["domin.co.kr",15],["tvchosun.com",16],["naver.com",17],["koreapas.com",18],["imbc.com",19],["kilho.net",20],["meeco.kr",21],["checkwhoiam.tistory.com",22],["minipol.tistory.com",23],["start.klauncher.kr",24],["dinfo.3dpchip.com",25],["sogirl.so",26],["tistory.com",27],["sajuplus.net",27],["auto.danawa.com",28]]);
465
465
  const exceptionsMap = new Map([]);
466
466
  const hasEntities = false;
467
467
  const hasAncestors = false;
@@ -41,6 +41,7 @@ function preventFetchFn(
41
41
  responseType = ''
42
42
  ) {
43
43
  const safe = safeSelf();
44
+ const setTimeout = self.setTimeout;
44
45
  const scriptletName = `${trusted ? 'trusted-' : ''}prevent-fetch`;
45
46
  const logPrefix = safe.makeLogPrefix(
46
47
  scriptletName,
@@ -48,6 +49,7 @@ function preventFetchFn(
48
49
  responseBody,
49
50
  responseType
50
51
  );
52
+ const extraArgs = safe.getExtraArgs(Array.from(arguments), 4);
51
53
  const needles = [];
52
54
  for ( const condition of safe.String_split.call(propsToMatch, /\s+/) ) {
53
55
  if ( condition === '' ) { continue; }
@@ -135,6 +137,11 @@ function preventFetchFn(
135
137
  responseProps
136
138
  );
137
139
  safe.Object_defineProperties(response, props);
140
+ if ( extraArgs.throttle ) {
141
+ return new Promise(resolve => {
142
+ setTimeout(( ) => { resolve(response); }, extraArgs.throttle);
143
+ });
144
+ }
138
145
  return response;
139
146
  });
140
147
  });
@@ -41,6 +41,7 @@ function preventFetchFn(
41
41
  responseType = ''
42
42
  ) {
43
43
  const safe = safeSelf();
44
+ const setTimeout = self.setTimeout;
44
45
  const scriptletName = `${trusted ? 'trusted-' : ''}prevent-fetch`;
45
46
  const logPrefix = safe.makeLogPrefix(
46
47
  scriptletName,
@@ -48,6 +49,7 @@ function preventFetchFn(
48
49
  responseBody,
49
50
  responseType
50
51
  );
52
+ const extraArgs = safe.getExtraArgs(Array.from(arguments), 4);
51
53
  const needles = [];
52
54
  for ( const condition of safe.String_split.call(propsToMatch, /\s+/) ) {
53
55
  if ( condition === '' ) { continue; }
@@ -135,6 +137,11 @@ function preventFetchFn(
135
137
  responseProps
136
138
  );
137
139
  safe.Object_defineProperties(response, props);
140
+ if ( extraArgs.throttle ) {
141
+ return new Promise(resolve => {
142
+ setTimeout(( ) => { resolve(response); }, extraArgs.throttle);
143
+ });
144
+ }
138
145
  return response;
139
146
  });
140
147
  });
@@ -371,8 +371,8 @@ function getRandomTokenFn() {
371
371
  /******************************************************************************/
372
372
 
373
373
  const scriptletGlobals = {}; // eslint-disable-line
374
- const argsList = [["Math.floor","offsetHeight"],["onload","noBackPlease"],["setTimeout","admc"]];
375
- const hostnamesMap = new Map([["competentedigitale.ro",0],["cool-etv.net",1],["posturi.live",2]]);
374
+ const argsList = [["Math.floor","offsetHeight"],["onload","noBackPlease"],["setTimeout","admc"],["document.write","unescape"]];
375
+ const hostnamesMap = new Map([["competentedigitale.ro",0],["cool-etv.net",1],["posturi.live",2],["player.desenefaine.net",3]]);
376
376
  const exceptionsMap = new Map([]);
377
377
  const hasEntities = false;
378
378
  const hasAncestors = false;
@@ -368,7 +368,7 @@ function safeSelf() {
368
368
  /******************************************************************************/
369
369
 
370
370
  const scriptletGlobals = {}; // eslint-disable-line
371
- const argsList = [["script","adsbygoogle"],["script","/jQuery.*reload/"],["script","document.head.appendChild"],["script","ai_adb"],["script","maxbet"]];
371
+ const argsList = [["script","adsbygoogle"],["script","/jQuery.*reload/"],["script","document.head.appendChild"],["script","ai_adb"],["style","/@media.*url/gms"]];
372
372
  const hostnamesMap = new Map([["turdanews.net",0],["sampmoduri.ro",1],["filme2023.online",2],["clujust.ro",3],["gsp.ro",4]]);
373
373
  const exceptionsMap = new Map([]);
374
374
  const hasEntities = false;