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 摘要。