google - Python que usa Adblock con Selenium y Firefox Webdriver
selenium python example code (2)
Mi objetivo es usar Adblock Plus con Selenium a través de Python. Pude llegar al punto donde cargará la extensión, pero por defecto no incluye el filtro predeterminado "EasyList". Esto es lo que tengo hasta ahora:
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)
La mayoría de este código fue copiado de http://selenium-python.readthedocs.org/en/latest/faq.html
En realidad, Adblock Plus agregará EasyList por defecto, pero no si configura la preferencia extensions.adblockplus.currentVersion
para deshabilitar las acciones de actualización / primera ejecución. Supongo que su objetivo era evitar que apareciera la página de la primera ejecución, pero también impedía la inicialización del almacenamiento de datos. Tenga en cuenta que tiene más problemas aquí: incluso si Adblock Plus agrega EasyList, aún tardará un tiempo desconocido para descargar.
El mejor curso de acción debería ser inicializar su perfil con un archivo adblockplus/patterns.ini
existente. Puede obtener este archivo de su perfil habitual de Firefox, con EasyList y otras configuraciones de filtro, y copiarlo en /Users/username/Downloads/profilemodel/adblockplus/patterns.ini
. Entonces, lo siguiente debería funcionar:
ffprofile = webdriver.FirefoxProfile("/Users/username/Downloads/profilemodel");
Hay una mejor manera de hacer esto:
1) extrae adblock.xpi con 7-zip o equivalente
2) abra /modules/AppIntegration.jsm con un editor de texto normal
3) encuentre la declaración de función para "notifyUser ()", y reemplácela con un retorno simple. por ejemplo:
/**
* 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;
}
Ahora solo necesita empaquetar los archivos nuevamente en un zip, y cambiar la extensión de .zip a .xpi - Voila!
Esto evitará que Adblock cargue la página de bienvenida, pero aún así configurará la configuración de suscripción necesaria. Asegúrate de NO llamar
ffprofile.set_preference("extensions.adblockplus.currentVersion", "x.x.x")
De lo contrario, no sabrá "reiniciarse"
Tenga en cuenta que esto es para adblock_plus-2.0.3 ya que estoy usando firefox-17. El código puede ser ligeramente diferente, y en una ubicación diferente para las versiones más recientes. Ver: https://issues.adblockplus.org/ticket/206#comment:5