Closed e3rd closed 10 months ago
Zkus aktuálního mastera – funguje ti to? :)
Jo, teď už je skrytý všechno.
Teda, asi jsem to zakřiknul... Včerejší večerní verze správně skrývala všechny nevyžádaný posty. Aktuální verze (updatovaná 2.9.2021 v 0:08) skrývá úplně všechno po prvním postu.
Zkusil jsem manuálně změnit launcher.js na předchozí verzi a to opět funguje správně. Takže někde v tomhle je chyba:
if (n.tagName === "SPAN" && n.style.top === '3em' && (Array.from(n.parentElement.querySelectorAll('span')).filter(s => s.style.top !== '3em').map(s => s.textContent).join("").includes(lang["Sponsored"].slice(1)) || n.textContent.length === 1 && n.nextElementSibling.textContent.length === 1)) {
jakože předposlední verze ti jela dobře, poslední špatně, současná nejhůř, takže ses vrátil na předposlední? Mně se teď reklamy dva dny nezobrazují vůbec – ani jedna (!) – tak to nemám zatím jak ozkoušet.
Když je první řádek funkce is_garbage tohle:
if ([lang["Sponsored"].slice(1), lang["Sponsored"]].includes(n.tagName === "SPAN" && n.style.top === '3em' && Array.from(n.parentElement.querySelectorAll('span')).filter(s => s.style.top !== '3em').map(s => s.textContent).join(""))) {
tak funguje perfektně, když je tam to v komentu nahoře tak funguje špatně (jako ve screenshotu).
Fakt jo, a nevynechává ti některé posty? Já myslel, že právě tenhle řádek ti některý post propustil.
Ne, timhle řádkem to nebylo. Mám za to že jsi v lang indexoval špatnym klíčem "Suggested for you"? Nicméně se objevila nová věc: data-visualcompletion.html.txt
Před chvílí jsem se přihlásil do fb a opět byly vidět posty "sponzorováno" i "návrhy pro vás". Tak jsem se odhlásil, zavřel soukromé okno, otevřel soukromé okno, přihlásil se do fb a nevyžádané posty byly skryté. Tady je html jednoho postu který předtím pronikl: html1.txt
[fb-getridad] Startup with lang:
. Pokud ti to někdy plugin nebude fungovat, čekni, zda je tam tenhle řádek – zjistíme tím, zda funguje špatně, nebo zda se z nějakého důvodu vůbec nespustil.inkriminovaný řádek jsem zkusil upravit na
if (n.tagName === "SPAN" && n.style.top === '3em' &&
(Array.from(n.parentElement.querySelectorAll('span')).filter(s => s.style.top !== '3em').map(s => s.textContent).join("").includes(lang["Sponsored"].slice(1))
// || n.textContent.length === 1 && n.nextElementSibling.textContent.length === 1
)) {
return true
}
s tím, že je zakomentovaná část, která ti mohla dělat problémy.
Teď to vypadá, že vše funguje dobře. Díky
Dej vědět, až zas nebude :D
ZKusíš aktuální master, jestli to funguje? Konečně jsem se k tomu dostal :)
Jj, u mě jo, ale tyhle exempláře tam zas nemám. Zas ti vypadaj trošku jinak než minule :D Já nevim, jestli si na tobě FB pořád zkouší novej formát
Zkusil jsem to vzít od podlahy, tak co teď? :D
Teď to blokuje všechny nevyžádané, ale i některé žádoucí posty, například tenhle: html.txt Plus, od asi osmnáctého postu na zdi to blokuje úplně všechno.
Neeeee :D Díky za post
Von ti cpe slova "Sponzorováno" i do datumu! Tady v tom jsou znaky řetězce "20. září" i slova "Sponzorováno"!
Vydal jsem teď další verzi, kdy navíc kontroluje, že jsou písmena slova Sponzorováno ve správném pořadí. Ale když to nepomůže, budu muset přijít na to, jak vyhodnotit styly (každý písmeno má jinej styl a některý styly je skrejvaj).
Teď funguje perfektně! Snad to fb zase za pár dní nezmění :D
Haha, to mám fakt radost! Tak se budu těšit, až to zas přestane :D
Proč to ten jeden sponzorovaný neskrylo, netuším :o Ale zkusil jsem zase pořešit, aby to přestalo skrývat ty žádoucí. Zkusil bys aktuální master? A jestli se zase stane, že to bude zabíjet poctivé posty, tak si třeba zavideovoláme a já se podívám přímo do konzole, jak to u nich máš. (Nebo udělej screenshot, třeba písmena "p" ze "sponsored", jaké má computed styly – teď filtruju, že nesmí mít display: none a position-top 3em, ale možná fb skrývá ta písmena dalším stylováním. :) )
Teď to háže tuhle chybovou hlášku: Jinak když dostanu příznivou mutaci fb (ve většině případů) tak funguje dobře, ale když dostanu nepříznivou tak jsou všechny posty "Sponzorováno" neskrytý, posty "Sponzorováno · platí za to" skrytý (co jsem zatim viděl), a "Návrhy" většinou skrytý ale minimálně jeden to taky neskrylo (tento: suggested.txt ).
Zkusil jsem to ve firefoxu a tam mi to zatim fungovalo vždy. Tys to u sebe zkoušel v nějakym Chromiu? Určitě by se šiklo zjistit jestli původcem je chromium, nebo to že jsem zrovna já v množině lidí, který chce fb za každou cenu vnutit reklamy (nebo na nich testuje jak překonat adblock).
Při skrytých poctivých postech dám vědět.
Chybová hláška by teď měla zmizet, zkus zkus
příznivou mutaci fb (ve většině případů)
Počkej, ono vždycky nedostaneš správnou mutaci, správný jazyk? Na tom to stojí a padá. :o
já to jedu v chromu a někdy zkouším ve firefoxu, ale DOM mi vypadá úplně totožně jako v chromu. Používám FB anglicky, napadlo mě, že odlišný DOM není ani tak prohlížečem, jako mutací.
Haha, tohle je vtipný. Chtěl jsem napsat "Ne ne, jazyk je vždycky stejnej, myslel jsem variantu", ale...
Zalogoval jsem se do fb, vše funguje. Šel jsem do zpráv, šel jsem zpět na wall, všechny posty po prvním skrytý. Otevřu konzoli a:
Z nějakýho důvodu se jazyk fb-getridad resetuje na angličtinu, a pak to z nějakýho důvodu skrývá všechny posty po prvním na zdi.
Stává se to jen někdy, dost zřídka, nedokážu spolehlivě vyvolat znovu...
Tak to je dost nadějné! V kódu jsem měl, že to čekalo půl vteřiny a když to nic nenašlo, dalo to angličtinu. Teď čeká až dvacet vteřin, dokud se neobjeví správný element a až pak to vyhodnotí jazyk. Zkus mastera teď :)
Zatim vše vypadá ok. Dám vědět když se zase něco objeví (nebo neobjeví).
Tak zatím vypadá dobře <3
Teď to propustilo tenhle post: html.txt Byl to první post na zdi, všechny následující sponzorovaný to správně skrylo. A lang bylo nastavený správně.
Já jsem to probral teď shora zdola a přišlo mi, že projít měl :D Tak jestli to jinak celkem funguje, tak to asi nebudu řešit. Když to bude moc často, budem muset vymyslet, jak to ladit na dálku
Že projít měl nebo že ho to mělo zablokovat? Jo, je to jenom prkotina, stává se to jenom zřídkakdy a i tak je to jenom jeden post, tak to klidně nech. Od tý doby se to stalo ještě dvakrát, vždycky je to první post na zdi tak to zřejmě bude mít něco do činění s tim, ale nemá cenu se s tim moc babrat. Díky za add-on :)
jj, zablokovat; jako že měl projít funkcí, která ho úspěšně zablokuje. Asi to bude teda prvním postem na zdi, budu o tom trochu vědět :)
šiit!
On Fri, Mar 4, 2022 at 11:33 PM kaha0 @.***> wrote:
Ahoj, nová varianta :) fb.txt https://github.com/e3rd/fb-getridad/files/8189069/fb.txt
— Reply to this email directly, view it on GitHub https://github.com/e3rd/fb-getridad/issues/2#issuecomment-1059579859, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABU64F5V3QC44XPLR2C4JHTU6KFR3ANCNFSM5C67TRDA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you modified the open/close state.Message ID: @.***>
Fakt to trvá? Prostudoval jsem teď ten soubor a zdá se mi, že ho plně pokrývá stávající kód. Slovo "Sponsored" je po písmenkách v jednotlivých tagách a je prokládáno tagy s náhodným obsahem (písmena, čísla, pomlčka), které buď mají display:none
, nebo "position: absolute; top: 3em", aby nebyly vidět. Když jsem si otevřel tvůj příklad v prohlížeči a normálně tam v DevTools použil funkci is_garbage
, tak krásně vrátila True. :)
Možná jsem měl zmínit, že se mi úplně změnil celej facebook. Teď vypadá takhle:
Dal bych ruku do ohně za to, že když se změnil a současně přestal skrývat sponzorovaný posty, zkontroloval jsem konzoli a [fb-getridad] Startup with lang:
tam bylo. Ale teď už to tam neni, netušim proč. Zkusil jsem odinstalovat addon, restartovat prohlížeč, znova stáhnout a nainstalovat addon, pořád nic.
Aha! Teď tam [fb-getridad] Startup with lang:
je, ale se špatnym jazykem.
Navíc mam 100% jistotu že v situaci v předchozím komentu to v konzoli nebylo.
Zkusil jsem to znova a [fb-getridad] Startup with lang:
opět v konzoli neni. Všimnul jsem si, že v konzoli je od samotnýho facebooku hromada chybovejch hlášek, jako ve screenshotu nahoře. Nemůže to mít vliv?
Teď jsem nainstaloval firefox a dělá to přesně to samý. [fb-getridad] Startup with lang:
se buď neobjeví vůbec, nebo [fb-getridad] Lang is not sure.
. A taky 38 Uncaught Errors od facebooku samotnýho.
document.querySelector("input[type=search]")
vrátí null, proto se nenastaví jazyk a funkce fetch_language
ani nic nezaloguje do konzole.
Zkusil jsem to v čistý instalaci Ubuntu + Firefox, chová se naprosto stejně.
Konečně dobrá zpráva! Když necham lang natvrdo nastavený na češtinu a odstranim funkci fetch_language
, tak všechno funguje jak má. Takže zbývá jen vymyslet shibboleth tak, aby fungoval i v novym facebooku.
Hej, tos to hrozně dobře vyzkoumal! Takže příspěvky zůstaly stejné, změnilo se ale políčko, z kterého dostáváme jazyk.
A když si tenhle kód
switch (shibboleth) {
case "Hledejte na Facebooku":
lang = LANG["cs"]
break;
vyměníš za tenhle (o řádek víc)
switch (shibboleth) {
case "Hledejte na Messengeru":
case "Hledejte na Facebooku":
lang = LANG["cs"]
break;
tak se ten shibboleth chytne? Jo-li můžem vydat! :)
Někdy jo, ale většinou ne, protože document.querySelector("input[type=search]")
velmi často vrací null a pak se to k šiboletu ani nedostane. Pak funkce fetch_language
úplně selže, a díky tomu se nezprocesujou počáteční elementy ani se nenastaví observer, a to ani s defaultním jazykem.
Tyjo a doved bys přijít na nějaký volání, který jednoznačně určí jazyk, když ten document.querySelector("input[type=search]")
ještě není ready? Jestli ne, tak můžeš zkusit zavolat document.querySelector("input[type=search]")
, až když se stránka úplně načte, za chvíli? (Že bychom posunuli spuštění doplňku o pár vteřin ještě třeba...)
Zavolat to později jsem zkoušel, mam pocit že když se zaloguju do facebooku a dostanu tu variantu která vrací null, tak vždycky vrací null. Napadlo mě jestli by to nešlo dělat bez šiboletu a kontrolovat každej element na přítomnost všech zakázaných stringů ("Sponsored", "Sponsorisé", "Sponzorováno", ...). To by bylo víc výpočetně náročný ale zase by se ušetřily všechny ty volání setTimeoutUntilTrue...
Máme různé varianty, jak mohou data-pagelet vypadat