Sziasztok,
FF 57 bétán vagyok és itt már nem működik "Yes Script" és "No Script" kiegészítő. Ugye "Yes Script" azt csinálja, hogy minden oldalon engedi alapból a JS-t és megjelölhetek oldalt ahol ki akarom kapcsolni. Ez az egész oldalon kikapcsolja. Kényelmesebb mint "No Script" ha nem kell ez utóbbinak a rengeteg beállítási lehetősége.
57-es verziótól változtattak Mozilláék:
https://blog.mozilla.org/addons/2016/11/23/add-ons-in-2017/
By the end of 2017, and with the release of Firefox 57, we’ll move to WebExtensions exclusively, and will stop loading any other extension types on desktop.
Beszéltem "Yes Script" fejlesztőjével, de nem tervezi konvertálni a kiegészítőjét WebExtension-re.
Csupán arra lenne szükségem, hogy oldalanként tudjam szabályozni JS blokkolását ( "blokkolnám.." ;) ).
prefs.js vagy más állításával meg tudom ezt tenni kiegészítő nélkül? Még azon is gondolkodok ha minden kötél szakad, hogy lefejlesztenék egy kiegészítőt ha egyszerű a böngésző API. De elég lenne az előbbi is ha tud működni.
Kösz.
- 3592 megtekintés
Hozzászólások
"5.1.x is the first restartless NoScript desktop version, and most likely the last hybrid (embedded WebExtension) before the pure WebExtension release."
"Before Firefox 57 is released in the stable channel, a pure WebExtension NoScript will be available an you'll be automatically migrated to it."
https://forums.informaction.com/viewtopic.php?f=7&t=23173
----
"Kb. egy hónapja elkezdtem írni egy Coelho-emulátort, ami kattintásra generál random Coelho-kompatibilis tartalmat."
- A hozzászóláshoz be kell jelentkezni
Furthermore, you need a "blueish" Firefox, either Firefox Develer Edition or Nightly. The preference trick doesn't work in "orange" Firefox (beta/release).
Nekem beta van.
- A hozzászóláshoz be kell jelentkezni
Ezért nem fogom feltenni az 57-et. Tavaszig lesz ESR aztán majd meglátjuk. Addig remélem egy fork beindul.
--
GPLv3-as hozzászólás.
- A hozzászóláshoz be kell jelentkezni
Hány fork kell még belőle?
- A hozzászóláshoz be kell jelentkezni
Addigra lesz megfelelő NoScript verzió szerintem - ha ez érdekes neked.
- A hozzászóláshoz be kell jelentkezni
22 addont használok (mindegyik fontos), ebből csak 1 extensionös, a többi xulos.
Mozillások nagyon lábon lövik magukat ezzel a váltással...
--
GPLv3-as hozzászólás.
- A hozzászóláshoz be kell jelentkezni
Milyen addon-ok ezek?
- A hozzászóláshoz be kell jelentkezni
"Unlike Firefox, Pale Moon will continue to offer full support for XUL and XPCOM binary-component extensions and there is no plan to discard the current extension system in lieu of Chrome-like alternatives (WebExtensions).
Mozilla has already marked XUL extensions and bootstrapped extensions as "legacy" and will be phasing out support for all but WebExtensions, which will affect many Firefox extensions. We have no plans to do this and many "legacy" Firefox extensions will continue to be possible on Pale Moon when targeting it."
https://www.palemoon.org/roadmap.shtml
----
"Kb. egy hónapja elkezdtem írni egy Coelho-emulátort, ami kattintásra generál random Coelho-kompatibilis tartalmat."
- A hozzászóláshoz be kell jelentkezni
Egyébként nem fejlesztett közületek valaki kiegészítőt? Kíváncsi lennék mennyire bonyolult és időigényes csinálni egy fekete listát JS blokkoláshoz FF által használt API-val. A NoScript is megcsinálja valahogy.
Sajnos üzleti érdekek működnek itt is. Mindig is vágytam egy olyan beépített funkcióra a böngészőben, hogy egy oldalon tiltom a JS-t. Csak hát ugye a reklámok bevétele miatti összefonódó piaci érdekek miatt ezt nem fogják megtenni.
Ezt nézem:
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Examples
- A hozzászóláshoz be kell jelentkezni
Roppant egyszerű: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webReques…
Szerinteem script bármelyik random adblock is megfelel.
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
Inkább ezen indultam el:
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Your_first_We…
Módosítottam egy példát. Könnyen tudom tesztelni is. Arra gondoltam hogy a document.body.innerHTML-ből kikapom az összes script-et. Bár lehet hogy ezt az általad megadott listener-rel kéne tenni hogy még betöltődés előtt fusson le.
Szerinted mi lenne a legegyszerűbb a fekete lista megadására? Lehet olyat hogy egy helyi text fájlt kelljen szerkeszteni? Nekem ennyi elég lenne. Mennyire macerás UI-t csinálni? Nincs sok idő erőforrásom a dologra.
- A hozzászóláshoz be kell jelentkezni
Az egész body innerHTML-jét módosítani nem szerencsés legalább két szempontból:
- újra kell renderelni mindent, ami elég drága
- semmi nem garantálja, hogy a script nem fog töltődni és futni, mert ha jól gondolom, akkor a content scriptek
DOMContentLoad
után futnak, ami sokszor már rég késő. Tehát, amikor te updateled az innerHTML-t, egy-két script már letöltődött és lefutott.
UI-hoz HTML/CSS/JavaScript kell. https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Implement_a_s…
Az relatív, hogy mennyire macerás, mert gyorsan össze lehet kókányolni bármit is, meg kiváló terep arra is, hogy a végtelenül elbonyolítsd az egész fejlesztést és új pepita mintás halálcsillagot készíts dupla szuperlézerrel. :)
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
Ez nem vészes, valszeg lefejlesztem. Egy YesScript klónt akarok saját kóddal és ezért meg tudok bízni benne. Mert ha jól gondolom, egy kiegészítő nem tartalmazza a forrás kódot (.jar fájl?).
Mondjuk ez a fejlesztés arra is jó ha egyéb más speciális igényem felmerül, gyorsan meg tudjam oldani.
- A hozzászóláshoz be kell jelentkezni
Szerintem tartalmazza, mármint az egy zip, amiben JavaScript van.
- A hozzászóláshoz be kell jelentkezni
OK kösz.
- A hozzászóláshoz be kell jelentkezni
Mi a gond vajon ezzel a kóddal?
browser.webRequest.onBeforeRequest.addListener(
function (){
console.log("hello");
},
{
"urls": ["*://mydomain.com/*"],
types: ["main_frame"]
},
["blocking"]
)
- A hozzászóláshoz be kell jelentkezni
return {cancel: true};
to cancel the request, include a property cancel with the value true.
- A hozzászóláshoz be kell jelentkezni
Nem megy azzal sem. Ez a példa kód sem megy (az első legegyszerűbb):
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webReques…
Ha a .js fájl elejére beteszek egy ilyet, akkor az működik a match-elt weboldalon, tehát a kód lefut:
document.body.style.border = "20px solid orange";
Csak az onBeforeRequest nem megy.
- A hozzászóláshoz be kell jelentkezni
Az első nem blokkol, csak logol. This code logs the URL for every resource requested...
A request cancelhez a callbacknek egy objectet kell visszaadnia, aminek van egy cancel property-je true értékkel.
chrome.webRequest.onBeforeRequest.addListener(function (details) {
const shouldBlock = isBlockingEnabledAndShouldIBlockThis(details);
return {
cancel: shouldBlock
};
}, {urls: [pattern]}, ["blocking"]);
- A hozzászóláshoz be kell jelentkezni
Az vili, csak a konzolon nem jelenik meg nálam semmilyen output. Tehát írnám majd tovább meg beállítanám a blocking-ot meg mindent, csak először szeretnék egy működő példát hogy tudjak mihez viszonyítani debugging közben. De nincs log.
- A hozzászóláshoz be kell jelentkezni
Az a background page consolan latszik csak.
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
Ott sem jelenik meg (Ctrl+Sh+J), ezt nézegetem de nem műkszik egyelőre:
https://stackoverflow.com/questions/38426510/firefox-webextensions-webr…
- A hozzászóláshoz be kell jelentkezni
Nem lehet hogy FF 57-es verzió miatt nem megy? Pedig úgy látom ez az API már nem Addon hanem WebExtension, szóval ennek az újnak kéne lenni.
- A hozzászóláshoz be kell jelentkezni
FF 55 alatt sem megy. Feladom, ennyi nem ér, a saját pár soros példaprogramjuk sem megy. Kösz az eddigi segítséget.
- A hozzászóláshoz be kell jelentkezni
Csak azt tudom mondani, ami rajtad ugyan nem segít, hogy nálam megy. :)
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
:) tudnál adni pár soros példa kódot esetleg?
Szerk.: egyébként ezzel próbálkozok:
manifest.json
{
"description": "some test",
"manifest_version": 2,
"name": "testttt",
"version": "1.0",
"icons": {
"48": "icon.svg"
},
"applications": {
"gecko": {
"id": "testttt@mozilla.org",
"strict_min_version": "45.0"
}
},
"permissions": [
"webRequest", "webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["*://mydomain.com/*"],
"js": ["test.js"]
}
]
}
test.js (ez működik):
document.body.style.border = "20px solid orange";
background.js (ez nem működik, se a log nem látszik, se az alert popup nem jön):
browser.webRequest.onBeforeRequest.addListener(
function(requestDetails){
console.log("Loading: " + requestDetails.url);
alert("test");
},
{urls: ["https://mydomain.com/*"]},
["requestBody", "blocking"]
);
Ez utóbbihoz itt egy pastebin a könnyebb olvashatóságért:
http://paste.ubuntu.com/25653766/
- A hozzászóláshoz be kell jelentkezni
https://gist.github.com/Ajnasz/fb7777184200504d4e47ad892583984a
To use the webRequest API for a given host, you must have the "webRequest" API permission. You must also have the host permission for both the host that initiated the request, and the target of the request. For example, if "foo.com" loads a resource from "bar.com", you must have permission for both those hosts. Note that this is stricter than Chrome, which only requires the host permission for the request's target.
Mivel gondolom minden weboldalon szeretnéd használni, ezért az <all_urls>
kell a permissionök közé. https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Match_patterns
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
Az all_urls-en már túl vagyok, úgy sem jó, viszont most csak 1 adott domain-el akarom tesztelni. Addig akarok eljutni, hogy a lehető legegyszerűbb módon működön az a pár sor. De nem megy. Nincs se log, se alert. Tudsz nekem olyan kombinációt mutatni, ami konkrétan működik nálad?
És egyébként hálásan köszönöm a segítséget.
- A hozzászóláshoz be kell jelentkezni
Ami a gistben van, az konkrétan nálam működik. Logol is és blokkol is, akár itt a hupon is próbálhatod, a youtube embeded blokkolja. A content scriptet kivettem, mert nem kell hozzá.
Utána én ezt használva teszteltem: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Getting_start…
npm install --global web-ext
web-ext run
- A hozzászóláshoz be kell jelentkezni
Működik a gist kód, köszi. Játszok vele és megírom majd hogy sikerült-e elkapnom a requestBody-t. Kösz a segítséget.
- A hozzászóláshoz be kell jelentkezni
Egyelőre nem találok infót az API leírásban sem a példa kódok között arról, hogy tudnám a body-t manipulálni mielőtt betöltődik. Gondolom te is ezt teszed hupper kieg-ben.
Egy hint-et tudnál adni hogy milyen API-t vagy funkciót kell használni ehhez? Ugyanis megnéztem a "requestBody" object által visszaadott adatot, de ott nem a body-t adja vissza. Nem világos Mozilla gondolatmenete erről, nem látom még át az API-t ilyen szinten. Viszont te is ezt csinálod nem? Vagy te a content_script-ben végzed el a módosítást utólag és nem a background.js-ben?
Milyen objektumon keresztül férek hozzá a body-hoz?
- A hozzászóláshoz be kell jelentkezni
http://paste.ubuntu.com/25657038/
Ez a kód képeket blokkol és az oldal így kép nélkül töltődik be. Tehát az "image" type működik. Nem működik viszont a "script", most ezt nyomozom..
- A hozzászóláshoz be kell jelentkezni
off: azt meg lehet valahogy oldani leendő FF57 alatt, hogy a stop/reload gomb a rendes helyén legyen, ne az address bar végén legyenek, hanem azon kívül? Classic Theme Restorer megcsinálja, de az nyilván nem fog működni FF57-tel.
- A hozzászóláshoz be kell jelentkezni
57 bétában kikerült az address barból.
--
ne terelj
- A hozzászóláshoz be kell jelentkezni
Köszi az infót.
Ez fantasztikus, így egy showstopperrel kevesebb áll a majdani FF57-re frissítésem útjában :)
- A hozzászóláshoz be kell jelentkezni
Off: Szinte biztos, hogy valahol a világon már van egy Legifjabb Vér István, aki azon a technológián dolgozik, aminek a kedvéért öt év múlva a WebExtension-t fogják megszüntetni. (Persze addigra már a Firefox is egy systemd modul lesz.)
- A hozzászóláshoz be kell jelentkezni
Jelen esetben az rémlik nekem hogy a Chrome-mal való közelebbi kompatibilitás is cél volt. Ahogy most nézegetem az API-t és netes infókat, hasonlónak is tűnik, ez viszont már sokat fog számítani addon fejlesztőknek, ha több platformra lehet kevesebb munkával fejleszteni és karbantartani kódot.
- A hozzászóláshoz be kell jelentkezni
az a gond, hogy aki nem addon fejlesztésből él hanem csak hobbiból fejleszt az itt lecsatlakozik a firefox-ról. Ez nagyon nagy kár mivel amellett, hogy a firefox szabad szoftver, az addonok jelentették az életet számára.
--
GPLv3-as hozzászólás.
- A hozzászóláshoz be kell jelentkezni
Végre sikerült megtalálnom a működő megoldást. Köszönet Ajnásznak a türelmes segítségért és útbaigazításért, illetve az alábbi fórum tagjainak (megoldás legalul):
https://discourse.mozilla.org/t/block-javascript-on-specific-sites/19808
Működő background.js kód itt:
http://paste.ubuntu.com/25662977/
// info: WebExtension to block scripts on specific sites
// https://discourse.mozilla.org/t/block-javascript-on-specific-sites/19808
// https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
browser.webRequest.onHeadersReceived.addListener(
function(details){
//console.log(details);
// include the original response header too merging the two arrays here
var rh = details.responseHeaders.concat([{name: "Content-Security-Policy", value: "script-src 'none'"}]);
return {responseHeaders: rh};
},
{urls: ["*://mydomain.com/*"]},
["blocking", "responseHeaders"]
);
Mivel background script-ből nem tudtuk blokkolni a weboldal script-jeit, content script-ből pedig előbb futnak le mint a kiegészítőm script-je, ezért Baptiste javasolt egy elég furfangos trükköt: adjunk a weboldal által küldött fejléchez (response header) CSP-t amivel meg lehet tiltani hogy bármilyen script elinduljon. Bővebb infó erről itt:
https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
Ügyes és működik és semmilyen script nem tud elindulni. Azért nem volt egyszerű. Mozilláék dokumentációja nem tér ki ilyen megoldásokra. Nem is céljuk. Egyszerűen nem akarják segíteni a script tiltást amit megértek. Viszont én akkor is meg akartam csinálni, mert sok esetben hasznos.
- A hozzászóláshoz be kell jelentkezni
Oh, arrol nem volt szo, hogy inline scriptrol beszelunk. :)
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
Nem is, elég lett volna az előbbi is aztán megoldottam volna tag-ek manipulálásával ahogy a másik fórumban is írták, csak ez sem működött.
- A hozzászóláshoz be kell jelentkezni
Már micsoda nem működött? Script file betöltésének blokkolása?
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
bookmark
- A hozzászóláshoz be kell jelentkezni