Izinkan 'blokir objek' dari situs tertentu

8

Saya ingin mengizinkan "objek yang diblokir", termasuk font, untuk situs tertentu dengan plugin NoScript FireFox.

Saya mengerti mengapa NoScript memblokir font , tetapi untuk beberapa situs web tepercaya saya ingin memperbolehkannya.

Saya membaca cara mengizinkan skrip dari satu domain saja dan cara mengaktifkan beberapa skrip tertentu selain manual ABE . Tetapi saya tidak bisa membuatnya bekerja. Berikut beberapa aturan ABE yang saya coba untuk Toggl:

Site .gstatic.com .bootstrapcdn.com
Accept from .toggl.com

Site fonts.gstatic.com maxcdn.bootstrapcdn.com
Accept INCLUSION(SCRIPT, OBJ, CSS) from .toggl.com

Site fonts.gstatic.com maxcdn.bootstrapcdn.com
Accept from .toggl.com

Namun, tak satu pun dari set aturan ini akan memungkinkan penyertaan font untuk Toggl. Apakah Anda melihat kesalahan saya?

(NoScript 2.6.9.6rc3 pada FireFox 34.0.5)

Jura
sumber

Jawaban:

5

yang situs noscript negara:

Misalnya, mengatur nilai noscript.allowedMimeRegExppreferensi ke

  • FRAME@https?://somesite\.com
  • FONT@https?://some-other-site\.com
  • WebGL@https://www\.khronos\.org

akan secara permanen mengizinkan FRAME / IFRAME memuat dari somesite.com, font web dari some-other-site.com dan konten WebGL 3D dari https://www.khronos.org.

Saya tidak berpikir ABE bisa melakukannya. Satu cara hacky untuk mengaktifkan font hanya untuk situs / domain tertentu adalah dengan menggunakan Vimperator / Pentadactyl dan mengubah pengaturan MimeRegExp secara otomatis pada acara LocationChange. Untuk mengembalikan pengaturan saat keluar dari halaman, Anda bisa menggunakan fungsi sederhana ini (mendapatkannya dari Anekos ) di .vimperatorrc yang menggunakan ekspresi dengan tampilan negatif:

js <<EOM
function add_AutoCommand(URI, onEnter, onLeave) {
    let entered = false;
    autocommands.add('LocationChange', '(?!' + URI + ')', function () {
      if (entered) {
        entered = false;
        onLeave();
      }
    });
    autocommands.add('LocationChange', URI, function () {
        onEnter();
        entered = true;
    });
}
add_AutoCommand(https?://allow-font-on-this-site\.com, 
    :set! noscript.allowedMimeRegExp="FONT@https?://some-other-site\.com", 
    :set! noscript.allowedMimeRegExp=" "
);
EOM

Saya belum menguji ini tetapi saya akan.

EDIT : seharusnya

add_AutoCommand('https?:\/\/allow-font-on-this-site\\.com.*', 
    function(){options.setPref("noscript.allowedMimeRegExp",
        "FONT@http://fonts.gstatic.com")}, 
    function(){options.setPref("noscript.allowedMimeRegExp", 
        "")}
);

... tapi noscript tidak mengambil preferensi kecuali halaman dimuat ulang, jadi muat ulang secara manual atau gunakan tabs.reload(config.browser.mCurrentTab, false);

Tampaknya Anda harus menetapkan boolean dan batas waktu untuk mencegah LocationChange untuk mengeksekusi (dengan demikian, mengulangi) memuat ulang. Mungkin autocmd lain pada event PageLoadPre mungkin digunakan untuk boolean. Ini semakin jelek, saya tahu. Maaf.

ps. aplikasi yang lebih berguna dari prefacing berbasis URL sederhana jelas mengubah direktori unduhan.

EDIT (2017): Dengan uBlock Origin Anda dapat secara khusus menargetkan jenis objek, file, atau perilaku html tertentu.

Baik aturan dinamis maupun statis menentukan bahwa asal diizinkan untuk domain / url. Saya telah menggunakan ini selama beberapa tahun sekarang. Jenis termasuk font serta skrip inline , stylesheet , gambar , objek , skrip , xmlhttprequest , sub_frame , media , websocket , popunder , dan popup .

contoh aturan:

* * 3p block
no-remote-fonts: * true
no-remote-fonts: allow-font-on-this-site.com false
allow-font-on-this-site.com font-cdn.org noop

yang artinya:

  1. blokir permintaan pihak ketiga dari halaman mana saja ke mana saja
  2. blokir font pihak ketiga pada halaman mana saja dari mana saja
  3. aktifkan kembali font pihak ketiga pada halaman di domain allow-font-on-this-site.com dari mana saja
  4. opsional mengaktifkan kembali permintaan pada halaman kami untuk berasal dari domain font-cdn.org

Dengan noop ('no operation') kami masih menerapkan penyaringan aturan statis (umumnya didefinisikan dalam aturan terdistribusi yang dikenal sebagai daftar pemblokiran iklan atau malvertising).

Bart
sumber
1
Terima kasih atas jawaban menyeluruh dan waktu yang Anda berikan.
Jura