web-dev-qa-db-ja.com

特定のサイトからの「オブジェクトのブロック」を許可する

NoScript FireFoxプラグインを使用して、特定のサイトでフォントを含む「ブロックされたオブジェクト」を許可したいと思います。

私は理解しています NoScriptがフォントをブロックする理由 ですが、信頼できるいくつかのWebサイトでは、それでも許可したいと思います。

1つのドメインからのみスクリプトを許可する方法 および 特定のスクリプトを有効にする方法ABEマニュアル 以外に読みました。しかし、私はそれを機能させることはできません。これが私がTogglのために試したいくつかのABEルールです:

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

ただし、これらのルールセットのいずれも、Togglのフォントを含めることはできません。私がどこで間違っているのか分かりますか?

(FireFox34.0.5のNoScript2.6.9.6rc3)

8
Jura

noscriptサイト 状態:

たとえば、_noscript.allowedMimeRegExp_プリファレンス値をに設定します

  • _FRAME@https?://somesite\.com_
  • _FONT@https?://some-other-site\.com_
  • _WebGL@https://www\.khronos\.org_

somesite.comからのFRAME/IFRAMEの読み込み、some-other-site.comからのWebフォント、および_https://www.khronos.org_からのWebGL3Dコンテンツを永続的に許可します。

阿部にはできないと思います。特定のサイト/ドメインに対してのみフォントを有効にするハックな方法の1つは、Vimperator/Pentadactylを使用し、LocationChangeイベントでMimeRegExp設定を自動的に変更することです。ページを離れるときに設定を元に戻すには、負の先読みを持つ式を使用する.vimperatorrcで次の単純な関数( Anekos から取得)を使用できます。

_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
_

私はこれをテストしていませんが、テストします。

[〜#〜]編集[〜#〜]

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

...ただし、ページがリロードされない限り、noscriptは設定を取得しないため、手動でリロードするか、tabs.reload(config.browser.mCurrentTab, false);を使用します。

LocationChangeがリロードを再度実行(つまりループ)しないように、ブール値とタイムアウトを設定する必要があるようです。おそらく、PageLoadPreイベントの別のautocmdがブール値に使用される可能性があります。これは私が知っているかなり醜いものになっています。ごめんなさい。

ps。単純なURLベースの設定切り替えのより便利なアプリケーションは、明らかにダウンロードディレクトリを変更することです。

[〜#〜] edit [〜#〜](2017): Block Origin を使用すると、特定のタイプの特定のタイプをターゲットにできますhtmlオブジェクト、ファイル、または動作。

動的ルールと静的ルールの両方で、ドメイン/ URLにオリジンを許可するように指定しています。私はこれを数年使用しています。タイプには、fontinline-scriptstylesheetimageobjectscriptxmlhttprequestsub_framemediawebsocketpopunderおよびpopup

ルールの例:

_* * 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
_

つまり:

  1. 任意のページから任意の場所へのサードパーティの要求をブロックする
  2. どこからでも任意のページでサードパーティのフォントをブロックする
  3. ドメインallow-font-on-this-site.comのページでサードパーティのフォントをどこからでも再度有効にする
  4. オプションで、ドメインfont-cdn.orgのオリジンに対するページのリクエストを再度有効にします

noop( 'no operation')を使用しても、静的ルールフィルタリング(通常、広告ブロックまたはマルバタイジングリストとして知られる分散ルールで定義されます)を適用します。

5
Bart