Fórum Root.cz

Hlavní témata => Software => Téma založeno: imago 17. 08. 2018, 18:15:07

Název: Jak v prohlížeči „vytrestat“ globální proměnné s daným názvem
Přispěvatel: imago 17. 08. 2018, 18:15:07
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
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: Exceptions 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í.
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: pepikx 17. 08. 2018, 20:42:49
Mozna jednodussi je filtr v adb..cku.
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: Petr 17. 08. 2018, 22:04:07
https://stackoverflow.com/questions/45437583/proxy-on-window#45532444
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: imago 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 (https://github.com/uBlockOrigin/uAssets/issues/2790)) 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
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: Asd 17. 08. 2018, 23:29:02
Jestli vám vadí reklamy, tak zkuste Brave (https://brave.com/). UI nestojí za nic, ale reklamy to už v základu blokuje líp, než rozšíření.
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: imago 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?
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: mmm 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) => {}})
    });
})();
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: mmm 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});
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: imago 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.
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: Ondrej Nemecek 18. 08. 2018, 16:28:00
Tak cookies se zase blokují jinak, přeci.
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: imago 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í

Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: mmm 19. 08. 2018, 15:29:36
proč jsi se nezeptal rovnou na blokaci cookies? Teď působíš jako troll.
Název: Re:jak v prohlížeči "vytrestat" globální proměnné s daným názvem
Přispěvatel: imago 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.