12

私の目標は、Python を介して Selenium で Adblock Plus を使用することです。拡張機能をロードするところまで到達できましたが、デフォルトではデフォルト フィルタ「EasyList」が含まれていません。これが私がこれまでに持っているものです:

 from selenium import webdriver
 from time import sleep
 ffprofile = webdriver.FirefoxProfile()
 adblockfile = '/Users/username/Downloads/adblock_plus-2.4-tb+fx+an+sm.xpi'
 ffprofile.add_extension(adblockfile)
 ffprofile.set_preference("extensions.adblockplus.currentVersion", "2.4")
 browser = webdriver.Firefox(ffprofile)
 while(True):
    browser.get("www.cnn.com")
    sleep(5)

このコードのほとんどはhttp://selenium-python.readthedocs.org/en/latest/faq.htmlから盗まれたものです

4

3 に答える 3

13

extensions.adblockplus.currentVersion実際、Adblock Plus はデフォルトで EasyList を追加しますが、更新/初回実行アクションを無効にするように設定した場合は追加されません。あなたの目標は、最初の実行ページが表示されないようにすることでしたが、データ ストレージの初期化も妨げていたと思います。ここにはさらに問題があることに注意してください。Adblock Plus が EasyList を追加したとしても、ダウンロードには不明な時間がかかります。

より良い行動は、既存のadblockplus/patterns.iniファイルでプロファイルを初期化することです。EasyList やその他のフィルタ設定を使用して、通常の Firefox プロファイルからこのファイルを取得し、/Users/username/Downloads/profilemodel/adblockplus/patterns.ini. 次に、以下が機能するはずです。

ffprofile = webdriver.FirefoxProfile("/Users/username/Downloads/profilemodel");
于 2013-12-30T08:20:03.967 に答える
2

これを行うには、より良い方法があります。

1) 7-zip または同等のファイルで adblock.xpi を抽出します。

2) 通常のテキスト エディタで /modules/AppIntegration.jsm を開きます

3) 「notifyUser()」の関数宣言を見つけて、これを単純な return に置き換えます。例えば:

/**
* function notifyUser()
* {
*   let wrapper = (wrappers.length ? wrappers[0] : null);
*   if (wrapper && wrapper.addTab)
*   {
*       wrapper.addTab("chrome://adblockplus/content/ui/firstRun.xul");
*   }
*   else
*   {
*       Utils.windowWatcher.openWindow(wrapper ? wrapper.window : null,
*                                                                    "chrome://adblockplus/content/ui/firstRun.xul",
*                                                                    "_blank", "chrome,centerscreen,resizable,dialog=no", null);
*   }
* }
*/

function notifyUser()
{
    return;
}

あとは、ファイルを zip にパッケージ化し、拡張子を .zip から .xpi に変更するだけです。

これにより、adblock によるウェルカム ページの読み込みが停止しますが、必要なサブスクリプション設定は構成されます。絶対に電話しないでください

ffprofile.set_preference("extensions.adblockplus.currentVersion", "x.x.x")

そうしないと、「自分自身を起動する」ことがわかりません。

私はfirefox-17を使用しているため、これはadblock_plus-2.0.3用であることに注意してください。コードは若干異なる場合があり、新しいバージョンでは別の場所にあります。参照: https://issues.adblockplus.org/ticket/206#comment:5

于 2014-10-29T16:39:33.407 に答える