AdguardTeam / AdguardTeam/Scriptlets

Add "prevent-console-hijack(ing)" scriptlet?

未关闭
#167 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Feature request Priority: P4
主要语言
JavaScript
星标
195
派生
33
PR 合并指标
30 天内没有已合并 PR

描述

#### Hello,
 
A lot of websites like [TF1.fr](https://github.com/AdguardTeam/AdguardFilters/pull/102134) hijack `window.console` — allowing them, if necessary, to send the results of `console.error`, etc. to their servers.

#### This forced me to create this userscript in Tampermonkey because of my many uses of `console.xxx` during my tests:

```javascript
// ==UserScript==
// @name Force keeping native window.console on different websites
// @namespace http://tampermonkey.net/
// @version 0.3
// @description Force keeping native window.console on different websites (currently: various catch-up TV websites).
// @author Contribucious
// @match http*://*.6play.fr/*
// @match http*://*.rtlplay.be/*
// @match http*://*.tf1.fr/*
// @run-at document-start
// ==/UserScript==

(function() {
'use strict';

// Based on: https://humanwhocodes.com/blog/2014/04/22/creating-defensive-objects-with-es6-proxies/

// Function(s)
function createDefensiveObject(target, wanted) {
return new Proxy(target, {
get(target, prop) {
if (prop in wanted) {
return wanted[prop];
}
}
});
}

// Main
unsafeWindow.console = createDefensiveObject(window.console, unsafeWindow.console);
})();

```
###### [`// @grant none`](https://www.tampermonkey.net/documentation.php#_grant) must not be present (i.e. sandbox required here for this to work).
 

:arrow_right: What about adding an equivalent in **AdGuard**, to be added [here](https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#debug-scriptlets) afterwards, as:
- `example.org#%#//scriptlet('prevent-console-hijack')` or
- `example.org#%#//scriptlet('prevent-console-hijacking')`,

… to keep a name similar to `prevent-window-open` and others? 🙂

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。