Jak v prohlížeči „vytrestat“ globální proměnné s daným názvem

imago

Jak v prohlížeči "vytrestám" globální proměnné? Myslím tím, že mám seznam zakázaných proměnných a chci ,aby při pokusu o její přiřazení z nějakého skriptu provedla mnou definovaná funkce s argumentem jména parametru (klidně prázdná funkce).
například pokud stránka má script přilinkovaný
Kód: [Vybrat]
bla();
 Babis= {agent: true; odsouzen: true; naroknadotaci: () => true};

//nebo
window.Babis="Bureš";
aby se neprovedlo nic
« Poslední změna: 19. 08. 2018, 21:14:29 od Petr Krčmář »


Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #1 kdy: 17. 08. 2018, 18:58:05 »
Proč?

Zakázat provedení není vůbec snadné, může tam být totiž něco jako

Kód: [Vybrat]
babis = function() { return {agent: true; odsouzen: true; naroknadotaci: () => true} }()
a provede se to velice rychle při inicializaci. Pak už ti zbývá pouze načíst stránku a sám si zpracovávat obsah script tagů a sám si z textu odstraňovat co nechceš, což je dost buggy.

Obecně ale stačí pokud projdeš object window a odstraníš co tam nechceš mít, avšak až po provedení/inicializaci ale pořád velice rychle po načtení.

pepikx

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #2 kdy: 17. 08. 2018, 20:42:49 »
Mozna jednodussi je filtr v adb..cku.


imago

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #4 kdy: 17. 08. 2018, 23:17:53 »
Právěže[/b] není v adblocku . Jinak bych se neptal

Navíc Wladír Palant za  adblock má na ruce [url=https://www.technologyreview.com/s/543311/the-ad-blocking-kingpin-reshaping-the-web-as-he-prefers-it/]krev[/zrl], tím, že přes eyeo firmu (možná ghostery se vám vybaví) používal mafiánské praktiky na whitelistování. Navíc takové featury jako site-key jsou vyloženě pitomé. Proto používám uBlock Origin, možná lepší ještě bude Nano Defender (nanoCore).

Dost politiky... mě prostě v chromium selektivní  filtrování inline scriptů nejde... (buď mohu zakázat inline scripty normálně v liště), jenže to znefunkční stránku (třeba videa nejdou, není problém si je vyšťourat přes misc.video na idnes např)
Ale (v souladu s [url=https://github.com/gorhill/uBlock/wiki/Inline-script-tag-filtering#caveats]poznámkou že v chromium toto nejde na wiki
) mi nejde ##script:contains (nově ##^script:has-text() )

ale dokonce ani nejde
Kód: [Vybrat]
maminka.cz##script:inject(abort-current-inline-script.js, adbDetect)
domena.cz##script:inject(cookie-remover.js, adb)
domena.cz##script:inject(abort-on-property-read.js, adbDetect)
domena.cz##script:inject(abort-on-property-write.js, adbDetect)
domena.cz##script:inject(set-constant.js, adbDetect, trueFunc)
domena.cz##script:inject(set-constant.js, testerr, trueFunc)
domena.cz##script:inject(noeval.js)
Prostě to nejde,  i když se v loggeru zobrazí žlutě  filtr inject, což značí, že by měl bý použit (a skutečně jiné filtry jdou). Resp to možná jde 2 requesty na stránce, apak stejně se to zadělá cookies a blije to reklamy.

nahraďte domena za :
Kód: [Vybrat]
https://www.idnes.cz/
https://www.novinky.cz/
https://www.aktualne.cz/
https://ihned.cz/
https://www.info.cz/
http://blesk.cz/
http://ahaonline.cz/
https://www.ahaonline.cz/
https://www.extra.cz/
https://www.super.cz/
https://www.zive.cz/
http://isport.blesk.cz/
http://www.auto.cz/
http://www.reflex.cz/
https://www.e15.cz/
https://avmania.e15.cz/
https://www.maminka.cz/
https://www.mobilmania.cz/
https://www.centrum.cz/
http://atlas.centrum.cz/
http://www.volny.cz/
http://tiscali.cz/
http://games.tiscali.cz/
http://nedd.tiscali.cz/
https://cestovani.tiscali.cz/
idnes.cz
novinky.cz
aktualne.cz
ihned.cz
info.cz
reflex.cz
zive.cz
mobilmania.cz
e15.cz
centrum.cz
volny.cz
tiscali.cz
blesk.cz
ahaonline.cz
extra.cz
super.cz
auto.cz
maminka.cz
iprima.cz
nasepenize.cz
osobnosti.cz
karaoketexty.cz

O to víc je žádoucí, abych nemusel explicitně vyjmenovávat seznam domén, které používají agresivní praktiky hijackování reklam (tzn aby to běželo na všech doménách).
 - Jednak proto, že script:inject / script:contains musí mít specifikvoanou doménu ( a aspoň že umí v rámci jednoho filtru seskupovat domény přes dom1,dom2##script:inject)
- pak, že seznam stránek se může rozrustat


Asd

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #5 kdy: 17. 08. 2018, 23:29:02 »
Jestli vám vadí reklamy, tak zkuste Brave. UI nestojí za nic, ale reklamy to už v základu blokuje líp, než rozšíření.

imago

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #6 kdy: 18. 08. 2018, 14:16:51 »
dobře, tak jsme se oslím můstkem přesunuli od modifikace JS runtime k blokacím reklam a následně k výběru prohlížečů..

Používáš brave? Umí rozšíření,userscripty, správu cookies a oprávnění (navigator,battery, geolocation. getSelection, webgl, localstorage fejkovat, protože chromium objekt nedifinuje a brání se jeho definice, čímž pak skripty na stránkách nefungují  kvůli házení Exception undefined property window.localStorage/sessionStorage)a co je vlastně jeho základ. Brave mám v hledáčku ale nějak se mi na něm nezdá jeho "jakoby" letadlový model + filozofie "placení reklam" + napojení na Ponziho schéma digitálních měn.

A hlavní otázka, Poradí si s těmi reklami, které uvádím výše (stačí si otevřít jednu stránku ze seznamu výše, projít zkusmo 4 odkazy, v defaultním režimu (bez vypnutých cookies a inline scriptů)

A vůbec, na základě čeho tvrdíš že lépe blokuje reklamy? Jak konrétně to d dělá? Poradí si i s g00/INstartlogic,Upmanager apod?  má nějakou AI  nebo na čem je zeloženo blokování reklam v základu?

mmm

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #7 kdy: 18. 08. 2018, 15:10:15 »
Jak v prohlížeči "vytrestám" globální proměnné? Myslím tím, že mám seznam zakázaných proměnných a chci ,aby při pokusu o její přiřazení z nějakého skriptu provedla mnou definovaná funkce s argumentem jména parametru (klidně prázdná funkce).
například pokud stránka má script přilinkovaný
Kód: [Vybrat]
bla();
 Babis= {agent: true; odsouzen: true; naroknadotaci: () => true};

//nebo
window.Babis="Bureš";
aby se neprovedlo nic

muzes nastavit prazdne settery userscriptem

treba

Kód: [Vybrat]
// ==UserScript==
// @name         banned globals
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://*
// @grant        unsafeWindow
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';
    var bannedNames = ['Babis', 'Zeman'];
    bannedNames.forEach((name) => {
         Object.defineProperty(unsafeWindow, name, {set: (val) => {}})
    });
})();

mmm

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #8 kdy: 18. 08. 2018, 15:14:20 »
jeste bych predal configurable: false, aby to neslo prepsat

Kód: [Vybrat]
Object.defineProperty(unsafeWindow, name, {set: (val) => {}, configurable: false});

imago

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #9 kdy: 18. 08. 2018, 16:12:59 »
Nejde to. Sice mi to s příšlušným userjs hlásí v konzoli adbDetect že je undefined (i když před tím provedu nebo neprovedu adbDetect=4), avšak stále se nastavuje cookie.

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #10 kdy: 18. 08. 2018, 16:28:00 »
Tak cookies se zase blokují jinak, přeci.

imago

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #11 kdy: 19. 08. 2018, 15:08:25 »
Jistě. Nevím, proč to chceš furt přetlačit do jiné roviny. Ale ty cookie nejdou ze serveru, ale (na klientu!) z té dané funkce.

Mám podle tebe si zakázat cookies na všech webech? (ne že by to nebylo dobré), Nebo POKUD NAJDU použít doplněk na správu cookies, který zvládne blokovat cookies dle jména? Posledně jsem zkoušel cookies controller pro firefox a výsledkem byla totálně rozesraná správa cookies, najma v debuggeri se ukazovalo něco jiného než skutečný stav. (Ano, vím, že firefox a jeho doplňky jsou v rozkladu, protože tam udávají směr vývoje narcisové, co implementují kraviny jako nějaké screenshoty (s exploitem ještě) nebo personalizaci nebo telemetrie do každého prdu)

Nebo zakázat inline javascripty (a jelikože v chromium mi nejde zprovoznit selektivní blokování inline js script:contains()), je snad ještě horší, protože zrušen inline JS znefukční stránku víc než cookies (když pominu že chromium zprasil tuto možnost tím, že současně disabluje localStorage/sessionStorage bez možnosti dummy redefinice)

Takže jako další řešení mi vychází "vplížit" se do JS runtime a dělat tam Maxwellova démona, že budu dělat čurbes při pokusu o definici (nebo volání) daných funkcí (window["adbDetect"])

opravdu tyto reakcionářské odpovědi nepotřebuji, protože jsem si jimi už prošel, vyzkoušel a vyhnodnotil jako nefunkční


mmm

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #12 kdy: 19. 08. 2018, 15:29:36 »
proč jsi se nezeptal rovnou na blokaci cookies? Teď působíš jako troll.

imago

Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
« Odpověď #13 kdy: 19. 08. 2018, 19:29:34 »
oplatim ti stejnou mincí, ale na rozdíl od tebe pravdivnou   $~~~ působíš jak debil. o cookies nebylo ani slovo v původním dotazu.