python - सेलेनियम और फ़ायरफ़ॉक्स वेबड्राइवर के साथ एडब्लॉक का उपयोग करते हुए पायथन




selenium firefox-addon (2)

मेरा लक्ष्य एडब्लॉक प्लस सेलेनियम के साथ पायथन द्वारा उपयोग करना है मैं इसे उस बिंदु पर प्राप्त कर पा रहा हूं जहां वह विस्तार को लोड करेगा, लेकिन डिफ़ॉल्ट रूप से इसमें डिफ़ॉल्ट फिल्टर "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


दरअसल, एडब्लॉक प्लस डिफ़ॉल्ट रूप से EasyList जोड़ देगा - लेकिन यदि आप extensions.adblockplus.currentVersion सेट नहीं करते हैं तो। एडब्लॉपप्लस.कैरेंट विरेशन प्राथमिकता अपडेट / प्रथम-रन वाली क्रियाओं को अक्षम करने के लिए मुझे लगता है कि आपका लक्ष्य प्रथम-रन पृष्ठ को दिखाए जाने से रोक रहा था, लेकिन इससे डेटा संग्रहण आरंभीकरण को भी रोक दिया गया था। ध्यान दें कि आपके पास यहां अधिक समस्याएं हैं: भले ही एडब्लॉक प्लस इज़िललिस्ट जोड़ता है, यह अभी भी डाउनलोड करने के लिए एक अज्ञात समय लेगा।

कार्रवाई का बेहतर तरीका मौजूदा adblockplus/patterns.ini . adblockplus/patterns.ini फ़ाइल के साथ आपके प्रोफ़ाइल को प्रारंभ करना चाहिए। आप इस फाइल को अपने नियमित फ़ायरफ़ॉक्स प्रोफाइल से /Users/username/Downloads/profilemodel/adblockplus/patterns.ini और अन्य फिल्टर सेटिंग्स के साथ प्राप्त कर सकते हैं, और इसे /Users/username/Downloads/profilemodel/adblockplus/patterns.ini डाउनलोड / /Users/username/Downloads/profilemodel/adblockplus/patterns.ini । इसके बाद निम्नलिखित कार्य करना चाहिए:

ffprofile = webdriver.FirefoxProfile("/Users/username/Downloads/profilemodel");

ऐसा करने का एक बेहतर तरीका है:

1) 7-ज़िप या समकक्ष के साथ adblock.xpi निकालें

2) एक नियमित पाठ संपादक के साथ खुले / मॉड्यूल / AppIntegration.jsm

3) "notifyUser ()" के लिए फ़ंक्शन घोषित करना, और इसे एक साधारण वापसी के साथ बदलें उदाहरण के लिए:

/**
* 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 से .xpi - वॉइला से एक्सटेंशन को परिवर्तित करें!

यह एडब्लॉक को स्वागत पृष्ठ लोड करने से रोक देगा, लेकिन यह अभी भी आवश्यक सदस्यता सेटिंग को कॉन्फ़िगर करेगा। सुनिश्चित करें कि कॉल करने के लिए करें

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

अन्यथा, यह "बूट करने के लिए"

कृपया ध्यान दें कि यह adblock_plus-2.0.3 के लिए है क्योंकि मैं फ़ायरफ़ॉक्स -17 का उपयोग कर रहा हूं। कोड थोड़ा भिन्न हो सकता है, और नए संस्करणों के लिए एक अलग स्थान पर हो सकता है। देखें: https://issues.adblockplus.org/ticket/206#comment.To





adblock