コード例 #1
0
 def __init__(self, url, layout_type):
     self.url = url
     self.layout_type = layout_type
     binary = FirefoxBinary(
         '/Applications/Firefox.app/Contents/MacOS/firefox')
     binary.add_command_line_options('-headless')
     self.driver = webdriver.Firefox(firefox_binary=binary)
コード例 #2
0
ファイル: firefox.py プロジェクト: Hibiskua/QA_task
    def __init__(self,
                 profile=None,
                 extensions=None,
                 user_agent=None,
                 profile_preferences=None,
                 fullscreen=False,
                 wait_time=2,
                 timeout=90,
                 capabilities=None,
                 headless=False,
                 **kwargs):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference('general.useragent.override',
                                           user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": '1'})
            binary = FirefoxBinary()
            binary.add_command_line_options('-headless')
            kwargs['firefox_binary'] = binary

        self.driver = Firefox(firefox_profile,
                              capabilities=firefox_capabilities,
                              timeout=timeout,
                              **kwargs)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
コード例 #3
0
 def __init__(self, maquine: Maquine, headless=True, firefox_path='firefox'):
     self._maquine = maquine
     try:
         if headless:
             os.environ['MOZ_HEADLESS'] = '1'
             binary = FirefoxBinary(firefox_path, log_file=sys.stdout)
             binary.add_command_line_options('--headless')
             self._driver = webdriver.Firefox(firefox_binary=binary)
         else:
             self._driver = webdriver.Firefox()
         self._requests = requests
         self._is_login = False
     except SessionNotCreatedException as ex:
         raise ZklibWebFirefoxNotFoundException(ex.msg)
コード例 #4
0
ファイル: firefox.py プロジェクト: sporteasy/splinter
    def __init__(self, profile=None, extensions=None, user_agent=None,
                 profile_preferences=None, fullscreen=False, wait_time=2,
                 timeout=90, capabilities=None, headless=False, **kwargs):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference('extensions.logging.enabled', False)
        firefox_profile.set_preference('network.dns.disableIPv6', False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        if 'accepted_languages' in kwargs:
            firefox_profile.set_preference('intl.accept_languages', kwargs['accepted_languages'])
            del kwargs['accepted_languages']

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference(
                'general.useragent.override', user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": '1'})
            binary = FirefoxBinary()
            binary.add_command_line_options('-headless')
            kwargs['firefox_binary'] = binary

        self.driver = Firefox(firefox_profile,
                              capabilities=firefox_capabilities,
                              timeout=timeout, **kwargs)

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
コード例 #5
0
def takeimage(itemID):
	#setup browser for running in background
	os.environ['MOZ_HEADLESS'] = '1'
	binary = FirefoxBinary(FIREFOX_PATH, log_file=sys.stdout)
	binary.add_command_line_options('-headless')
	browser = webdriver.Firefox(executable_path=GECKODRIVER_PATH,firefox_binary=binary)
	#request item url
	browser.get(dbUrl + itemID)

	try:
		browser.find_element_by_class_name('tooltip').screenshot(cachefolder + str(itemID) + '.png')
		print('Tooltip for item id : %s found at %s\nSaved at %s' % (itemID, str(dbUrl + str(itemID)), str(cachefolder+ str(itemID) + '.png')))
	except:
		print('Tooltip for item id : %s not found at %s' % (itemID, str(dbUrl + str(itemID))))
	browser.close()
コード例 #6
0
    async def process(self, body):
        logging.info('Web screenshot plugin process called')

        # Old method
        #driver = webdriver.PhantomJS()

        # New with headless ff
        # https://intoli.com/blog/running-selenium-with-headless-firefox/
        os.environ['MOZ_HEADLESS'] = '1'
        binary = FirefoxBinary('/usr/bin/firefox', log_file=sys.stdout)
        binary.add_command_line_options('-headless')
        driver = webdriver.Firefox(
                firefox_binary=binary
            )

        driver.set_window_size(body.get('width', 1024), body.get('height', 768))
        driver.get(body['page'])

        try:
            WebDriverWait(driver, body['wait']).until(
                EC.presence_of_element_located((By.XPATH, body.get('xpath', '/html')))
            )
        except Exception as e:
            logging.error(e)
            logging.error("Couldn't wait for element")

        screen = driver.get_screenshot_as_base64()

        # .close() with headless leaves geckodriver
        driver.quit()

        logging.debug('Processing finished')

        return {
                "head": '### {} <a href="{}">clickable</a>'.format(body['page'], body['page']),
                "body": '<img src="data:image/png;base64, {}" alt="Screenshot" />'.format(screen)
                }
コード例 #7
0
        cv2.imwrite('./output/pictorial/' + str(num) + '-' + title + '.png',
                    screenshot)  #Save
    elif (image_ratio < (THRESHOLD_TEXT * 100)):
        cv2.imwrite('./output/text/' + str(num) + '-' + title + '.png',
                    screenshot)  #Save
    else:
        cv2.imwrite('./output/mixed/' + str(num) + '-' + title + '.png',
                    screenshot)  #Save


# main
if __name__ == '__main__':
    # csvの読み込み
    tag_list_num = count_row_csv(CSV_INPUT_PATH)
    csv_web_list = pd.read_csv(CSV_INPUT_PATH)

    print('行数: ' + str(tag_list_num))

    binary = FirefoxBinary('/Applications/Firefox.app/Contents/MacOS/firefox')
    binary.add_command_line_options('-headless')
    driver = webdriver.Firefox(firefox_binary=binary)
    driver.set_window_size(SCREEN_W, SCREEN_H)

    for i in range(tag_list_num):
        print('解析対象' + str(i + 1) + ': ' + str(csv_web_list.iat[i, 2]))
        analyze_page(driver, i + 1, csv_web_list.iat[i, 1],
                     csv_web_list.iat[i, 2])

    # Close Web Browser
    driver.quit()
コード例 #8
0
 def __init__(self):
     os.environ["MOZ_HEADLESS"] = "1"
     binary = FirefoxBinary()
     binary.add_command_line_options("-headless")
     super(Render, self).__init__(firefox_binary=binary)
コード例 #9
0
class ProxiedBrowser(object):
    def __init__(self, dir, tor_port=9150):
        self.dir = dir
        self.tor_port = int(tor_port)

    def open(self):
        cap_dir = join(self.dir, "caps")
        try:
            os.makedirs(cap_dir)
        except:
            pass
        self.proxy = TCP(cap_dir=cap_dir, tor_port=self.tor_port)
        self.proxy.start()
        while not self.proxy.running:
            logger.info("Waiting for proxy to start...")
            sleep(1)

        logger.info("Starting Xvfb virtual display")
        self.vdisplay = Xvfb(width=1280, height=740)
        self.vdisplay.start()

        logger.info("Webdriver starting..")
        self.binary = FirefoxBinary(firefox_path=join(self.dir, FIREFOX_PATH),
                                    log_file=open("firefox.log", "w"))
        self.binary.add_command_line_options("--verbose")
        self.profile = FirefoxProfile(
            profile_directory=join(self.dir, FIREFOX_PROFILE))
        self.profile.set_preference("network.proxy.socks_port",
                                    self.proxy.port)
        self.profile.set_preference("extensions.torlauncher.start_tor",
                                    False)  # We started tor manually earlier.
        self.profile.set_preference("browser.startup.homepage", "")
        self.profile.set_preference("browser.startup.page", 0)
        self.profile.update_preferences()

        try:
            self.driver = webdriver.Firefox(firefox_binary=self.binary,
                                            firefox_profile=self.profile)
            sleep(2)  # hack: wait until homepage etc have loaded.
        except Exception as ex:
            self.proxy.close()
            raise ex
        return self

    def __enter__(self):
        return self.open()

    def get(self, url):
        print("Fetching {url}".format(url=url))
        self.proxy.consume_results(
        )  # clear anything previous, e.g the browsers homepage, whatever update checkers etc.
        self.driver.get(url)
        capture_files = self.proxy.consume_results()
        responses = list()
        for capture_file in capture_files:
            responses += extract_from_capturefile(capture_file)
            os.remove(capture_file)
        return responses

    def close(self):
        logging.info("Closing webdriver")
        self.driver.quit()
        logging.info("Closing virtual display")
        self.vdisplay.stop()
        logging.info("Closing proxy")
        self.proxy.close()
        self.proxy.join()

    def __exit__(self, type, value, traceback):
        self.close()
コード例 #10
0
def main():
    xvfbCmdLine = "/usr/bin/Xvfb :11 -nolisten tcp -ac -cc 4 -screen 0 1200x800x24"
    xvfbProcess = Popen(xvfbCmdLine, shell=True, stderr=STDOUT)

    binary = FirefoxBinary(firefox_path="../Personalized-Reco/firefox/firefox")
    binary.add_command_line_options('--display=:11.0')
    driver = webdriver.Firefox(firefox_binary=binary)
    driver.set_window_size(1200, 800)  # optional

    for single_date in daterange(start_date, end_date):
        try:
            if single_date.month == 1:
                url = "http://www.theguardian.com/theguardian/{0}/jan/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 2:
                url = "http://www.theguardian.com/theguardian/{0}/feb/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 3:
                url = "http://www.theguardian.com/theguardian/{0}/mar/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 4:
                url = "http://www.theguardian.com/theguardian/{0}/apr/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 5:
                url = "http://www.theguardian.com/theguardian/{0}/may/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 6:
                url = "http://www.theguardian.com/theguardian/{0}/jun/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 7:
                url = "http://www.theguardian.com/theguardian/{0}/jul/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 8:
                url = "http://www.theguardian.com/theguardian/{0}/aug/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 9:
                url = "http://www.theguardian.com/theguardian/{0}/sep/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 10:
                url = "http://www.theguardian.com/theguardian/{0}/oct/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 11:
                url = "http://www.theguardian.com/theguardian/{0}/nov/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))
            elif single_date.month == 12:
                url = "http://www.theguardian.com/theguardian/{0}/dec/{1}".format(
                    single_date.strftime('%Y'), single_date.strftime('%d'))

            cursor = c.execute(
                'SELECT COUNT(*) FROM printNewspaper WHERE url = (?)', (url, ))
            articlecount = 0
            for row in cursor:
                articleCount = int(row[0])

            if articleCount == 0:
                driver.get(url)
                content = driver.page_source
                compressedHTMLDump = buffer(
                    zlib.compress(content.encode('utf8')))
                c.execute('INSERT INTO printNewspaper VALUES (?, ?)',
                          (url, compressedHTMLDump))
                time.sleep(randint(120, 300))

        except Exception as e:
            print e

    conn.close()
    driver.quit()
    xvfbProcess.kill()
    xvfbProcess.wait()
コード例 #11
0
ファイル: firefox.py プロジェクト: miohtama/splinter
    def __init__(
        self,
        profile=None,
        extensions=None,
        user_agent=None,
        profile_preferences=None,
        fullscreen=False,
        wait_time=2,
        timeout=90,
        capabilities=None,
        headless=False,
        incognito=False,
        **kwargs
    ):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference("extensions.logging.enabled", False)
        firefox_profile.set_preference("network.dns.disableIPv6", False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        firefox_options = Options()

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference("general.useragent.override", user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": "1"})
            if 'firefox_binary' in kwargs:
                if isinstance(kwargs['firefox_binary'], six.string_types):
                    binary = FirefoxBinary(kwargs['firefox_binary'])
                else:
                    binary = kwargs['firefox_binary']
            else:
                binary = FirefoxBinary()
            binary.add_command_line_options("-headless")
            kwargs["firefox_binary"] = binary

        if incognito:
            firefox_options.add_argument("-private")

        self.driver = Firefox(
            firefox_profile,
            capabilities=firefox_capabilities,
            options=firefox_options,
            timeout=timeout,
            **kwargs
        )

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)
コード例 #12
0
ファイル: drivers.py プロジェクト: filintod/pyremotelogin
    def _get_driver(cls,
                    download_folder,
                    disable_caching=True,
                    allow_popups=True,
                    allow_untrusted_ssl=True,
                    disable_proxy=False,
                    driver_executables_folder=None,
                    cmd_line_args=(),
                    headless=None,
                    **kwargs):
        """

        Args:
            download_folder:
            disable_caching:
            allow_popups:
            allow_untrusted_ssl:
            disable_proxy:
            driver_executables_folder:
            cmd_line_args:
            **kwargs: FirefoxDriver kwargs.  It can also contain firefox_binary path to the firefox executable in case we want to use a
                      different version (ie dev version)

        Returns:

        """
        profile = webdriver.FirefoxProfile()
        if headless is None:
            headless = settings.HEADLESS

        profile.accept_untrusted_certs = allow_untrusted_ssl
        profile.assume_untrusted_cert_issuer = allow_untrusted_ssl

        preferences = [("browser.helperApps.neverAsk.saveToDisk",
                        ','.join(settings.SELENIUM_MIME_TO_SAVE)),
                       ("browser.download.manager.showWhenStarting", False),
                       ("browser.download.manager.showAlertOnComplete", False),
                       ("browser.download.panel.shown", False),
                       ("browser.download.dir", download_folder),
                       ("browser.download.folderList", 2),
                       ("browser.download.useDownloadDir", True),
                       ("browser.download.closeWhenDone", True),
                       ("browser.helperApps.deleteTempFileOnExit", True),
                       ("browser.download.useWindow", False),
                       ("toolkit.startup.max_resumed_crashes", "-1"),
                       ("browser.allowpopups", allow_popups)]

        if disable_caching:
            preferences.extend([("browser.cache.disk.enable", False),
                                ("browser.cache.memory.enable", False),
                                ("browser.cache.offline.enable", False),
                                ("network.http.use-cache", False)])

        if disable_proxy:
            preferences.append(("network.proxy.type", 0))

        for k, v in preferences:
            profile.set_preference(k, v)

        profile.update_preferences()

        firefox_binary = FirefoxBinary(kwargs.get('firefox_binary'))

        if headless and cls.NATIVE_HEADLESS:
            cmd_line_args = list(cmd_line_args)
            cmd_line_args.append('--headless')
            os.environ['MOZ_HEADLESS'] = 1

        if cmd_line_args:
            firefox_binary.add_command_line_options(*cmd_line_args)

        # https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/firefox/index.html
        return cls(firefox_profile=profile,
                   executable_path=get_driver_executable_path(
                       'firefox', driver_executables_folder),
                   **kwargs)
コード例 #13
0
class TorBrowser:
    '''
    Refactoring for 2020 12 version of Tor Browser Bundle
    '''
    def __init__(self,
                 browser_path,
                 binary_path=None,
                 profile_path=None,
                 executable_path=None,
                 socks_port=9050,
                 control_port=9051,
                 extensions=None,
                 capabilities=None,
                 headless=False,
                 capture_screen=False,
                 url=None):

        assert browser_path is not None

        self.browser_path = browser_path
        self.binary_path = binary_path
        self.profile_path = profile_path
        self.executable_path = executable_path

        self.socks_port = socks_port
        self.control_port = control_port
        self.extensions = extensions
        self.capabilities = capabilities
        self.headless = headless
        self.capture_screen = capture_screen
        self.url = url

        self.profile = None
        self.binary = None  # firefox
        self.options = None
        self.webdriver = None
        self.tor_controller = TorController()  # Start tor process..

        self._initialize()

    def _initialize(self):

        self._init_browser()
        self.profile = FirefoxProfile(self.profile_path)
        self._init_profile()
        self._init_extensions()
        self._init_capabilities()
        self._init_binary()
        self._init_options()
        self._init_webdriver()

    def _init_browser(self):

        if self.binary_path is None:
            # tor-browser_en-US/Browser/firefox
            self.binary_path = os.path.join(self.browser_path,
                                            os.path.join('Browser', 'firefox'))
        if self.profile_path is None:
            # tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default
            self.profile_path = os.path.join(
                self.browser_path,
                os.path.join(
                    'Browser',
                    os.path.join(
                        'TorBrowser',
                        os.path.join(
                            'Data', os.path.join('Browser',
                                                 'profile.default')))))

    def _init_profile(self):

        self.profile.set_preference('browser.cache.disk.enable', False)
        self.profile.set_preference('browser.cache.memory.enable', False)
        self.profile.set_preference('browser.cache.offline.enable', False)
        self.profile.set_preference('browser.startup.page', '0')
        self.profile.set_preference('browser.startup.homepage', 'about:newtab')
        self.profile.set_preference('network.http.use-cache', False)
        self.profile.set_preference('network.proxy.type', 1)
        self.profile.set_preference('network.proxy.socks', '127.0.0.1')
        self.profile.set_preference('network.proxy.socks_port',
                                    self.socks_port)
        self.profile.set_preference('extensions.torlauncher.promp_at_startup',
                                    0)
        self.profile.set_preference('network.http.use-cache', False)
        self.profile.set_preference('webdriver.load.strategy', 'conservative')
        self.profile.set_preference('extensions.torlauncher.start_tor', False)
        self.profile.set_preference(
            'extensions.torbutton.versioncheck_enabled', False)
        self.profile.set_preference('permissions.memory_only', False)
        # update_preference('webdriver.load.strategy', 'normal')
        # update_preference('app.update.enabled', False)
        # update_preference('extensions.torbutton.versioncheck_enabled', False)
        # update_preference('extensions.torbutton.prompted_language', True)
        # update_preference('extensions.torbutton.socks_port', self.socks_port)
        # update_preference('extensions.torlauncher.control_port', self.control_port)
        # update_preference('extensions.torlauncher.start_tor', True)
        # update_preference('extensions.torbutton.block_dis', False)
        # update_preference('extensions.torbutton.custom.socks_host', '127.0.0.1')
        # update_preference('extensions.torbutton.custom.socks_port', self.socks_port)
        # update_preference('extensions.torbutton.inserted_button', True)
        # update_preference('extensions.torbutton.launch_warning', False)
        # update_preference('privacy.spoof_english', 2)
        # update_preference('extensions.torbutton.loglevel', 2)
        # update_preference('extensions.torbutton.logmethod', 0)
        # update_preference('extensions.torbutton.settings_method', 'custom')
        # update_preference('extensions.torbutton.use_privoxy', False)
        # update_preference('extensions.torlauncher.control_port', self.control_port)
        # update_preference('extensions.torlauncher.loglevel', 2)
        # update_preference('extensions.torlauncher.logmethod', 0)
        # update_preference('extensions.torlauncher.prompt_at_startup', False)

        self.profile.update_preferences()

    def _init_extensions(self):

        if self.extensions is not None:
            for extension in self.extensions:
                self.profile.add_extension(extension)

    def _init_capabilities(self):

        if self.capabilities is None:
            self.capabilities = DesiredCapabilities.FIREFOX
            self.capabilities.update({
                'handlesAlerts': True,
                'databaseEnabled': True,
                'javascriptEnabled': True,
                'browserConnectionEnabled': True
            })

    def _init_binary(self):

        self.binary = FirefoxBinary(firefox_path=self.binary_path)
        self.binary.add_command_line_options('--class', '"Tor Browser"')

    def _init_options(self):

        if self.headless is True:
            self.options = Options()
            self.options.headless = self.headless

    def _init_webdriver(self):

        self.webdriver = webdriver.Firefox(
            firefox_profile=self.profile,
            firefox_binary=self.binary,
            timeout=60,
            capabilities=self.capabilities,
            executable_path=self.executable_path,
            options=self.options)

    def connect_url(self, url):

        self.webdriver.get(url)
        WebDriverWait(self.webdriver, timeout=30).until(
            expected_conditions.presence_of_element_located(
                (By.TAG_NAME, 'body')))

    def close(self):
        try:
            self.tor_controller.stop()
            self.webdriver.quit()
        except CannotSendRequest:
            logger.error('CannotSendRequest while quitting TorBrowserDriver')
            self.binary.kill()
        except Exception as e:
            logger.error('Exception while quitting TorBrowserDriver', e)

    def init_canvas_permission(self, url):
        '''
        Create a permission DB and add exception for the canvas image extraction.
        Otherwise screenshots taken by Selenium will be just blank images due to
        canvas fingerprinting defense in Tor Browser Bundle.
        '''
        import sqlite3
        from tld import get_tld

        connection = sqlite3.connect
        permission_db = connection(
            os.path.join(self.profile_path, 'permissions.sqlite'))
        cursor = permission_db.cursor()

        # http://mxr.mozilla.org/mozilla-esr31/source/build/automation.py.in
        cursor.execute("PRAGMA user_version=3")
        cursor.execute("""CREATE TABLE IF NOT EXISTS moz_hosts (
            id INTEGER PRIMARY KEY,
            host TEXT,
            type TEXT,
            permission INTEGER,
            expireType INTEGER,
            expireTime INTEGER,
            appId INTEGER,
            isInBrowserElement INTEGER)""")

        domain = get_tld(url)
        logger.debug('Adding canvas/extractData permission for %s' % domain)
        query = """INSERT INTO 'moz_hosts' VALUES (NULL, '%s', 'canvas/extractData', 1, 0, 0, 0, 0);""" % domain
        cursor.execute(query)
        permission_db.commit()
        cursor.close()

    def take_screenshot(self, save_path):

        if save_path is not None:
            save_path = os.path.join(save_path, 'screenshot.png')
        else:
            save_path = 'screenshot.png'

        self.webdriver.get_screenshot_as_file(save_path)

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.close()
コード例 #14
0
                         "Resources", "courseart")
CArtResized = " "
global FinalPoster
FinalPoster = os.path.join(PLEXROOT, "Plug-ins", "TGC.bundle", "Contents",
                           "Resources", "final-")

# Need for ImageMagick to create proper poster art
IMGcmd = [
    os.path.abspath(CONVERT), PosterTemplate, CArtResized, '-gravity',
    'center', '-composite', FinalPoster
]
RSZcmd = [os.path.abspath(CONVERT), CourseArt, '-resize', '780', CArtResized]

# Firefox and gecko binaries
firefox_binary = FirefoxBinary(os.path.abspath(FIREFOX))
firefox_binary.add_command_line_options('--headless')
gecko_binary = os.path.abspath(GECKODRIVER)

global CURRENTTAB

# Platform
PLATFORM = platform.system()


#CMDFINDER = "where" if platform.system() == "Windows" else "which"
#product_category = {'901' : "Economics & Finance", '902' : 'High School', '904' : 'Fine-Arts', '905' : 'Literature & Language', '907' : 'Philosophy, Intellectual History','909' : 'Religion', '910' : 'Mathematics', '918' : 'History', '926': 'Science', '927': 'Better Living'   }
def is_tool(name):

    return which(name)

コード例 #15
0
ファイル: main.py プロジェクト: IsmaeelAkram/TwitchFollowBot
def run():
    if tor:
        log.info('Getting Tor binary...')
        binary = '/Applications/Tor Browser.app/Contents/MacOS/firefox'
        if os.path.exists(binary) is False:
            raise ValueError("The binary path to Tor firefox does not exist.")
        firefox_binary = FirefoxBinary(binary)
        firefox_binary.add_command_line_options()

        log.info('Starting Tor...')
        browser = webdriver.Firefox(firefox_binary=firefox_binary)
        log.good('Tor started!')
    else:
        log.info('Starting Chrome...')
        chrome_options = ChromeOptions()
        chrome_options.add_argument(
            '--disable-blink-features=AutomationControlled')
        # chrome_options.add_argument("disable-infobars")
        # chrome_options.add_argument("--disable-extensions")
        # chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
        # chrome_options.add_experimental_option('useAutomationExtension', False)
        browser = webdriver.Chrome(options=chrome_options)
        log.good("Chrome started!")

    # Start

    # Gen credentials
    credentials = credential_gen.gen_credentials()
    username = credentials[0]
    password = credentials[1]
    date_of_birth = credentials[2]
    email = credentials[3]

    # Start browser
    log.info('Getting twitch.tv...')
    browser.get("https://twitch.tv")

    sign_up_button = browser.find_element_by_xpath(
        '/html/body/div[1]/div/div[2]/nav/div/div[3]/div[3]/div/div[1]/div[2]/button'
    )
    sign_up_button.click()
    log.good("Clicked signup button...")

    log.info("Waiting to load signup form...")
    time.sleep(3)

    # Sign up

    # Username
    username_field = browser.find_element_by_xpath(
        '//*[@id="signup-username"]')
    username_field.send_keys(username)
    log.good(f'Filled in username: {username}')

    # Password
    password_field = browser.find_element_by_xpath('//*[@id="password-input"]')
    password_field.send_keys(password)
    log.good(f'Filled in password: {password}')

    # Confirm password
    confirm_password_field = browser.find_element_by_xpath(
        '//*[@id="password-input-confirmation"]')
    confirm_password_field.send_keys(password)
    log.good(f'Filled in confirmed password: {password}')

    # Date of birth
    month = browser.find_element_by_xpath(
        f'/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div[3]/form/div/div[3]/div/div[2]/div[1]/select/option[{date_of_birth[0]+1}]'
    ).click()
    day = browser.find_element_by_xpath(
        '/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div[3]/form/div/div[3]/div/div[2]/div[2]/div/input'
    ).send_keys(date_of_birth[1])
    year = browser.find_element_by_xpath(
        '/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div[3]/form/div/div[3]/div/div[2]/div[3]/div/input'
    ).send_keys(date_of_birth[2])

    # Email
    email_field = browser.find_element_by_xpath('//*[@id="email-input"]')
    email_field.send_keys(email)
    log.good(f'Filled in email: {email}')

    log.info('Waiting for submission verification...')
    time.sleep(5)

    # Submit form
    submit_button = browser.find_element_by_xpath(
        '/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div[3]/form/div/div[5]/button'
    )
    submit_button.click()
    log.good('Submitted sign up form.')

    log.info("Waiting 5 seconds...")
    time.sleep(5)

    def remind_later():
        # Remind to verify later
        remind_later = browser.find_element_by_xpath(
            '/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div/div/div[3]/div[2]/div/button'
        )
        remind_later.click()
        log.good('Skipped email verification...')
        log.log_account(username, email, password)
        log.good("Logged account...")

    def complete_captcha():
        browser.switch_to.frame(
            browser.find_element_by_xpath(
                '/html/body/div[1]/div[2]/div[1]/iframe'))
        audio_captcha_button = browser.find_element_by_xpath(
            '//*[@id="fc_meta_audio_btn"]')
        audio_captcha_button.click()
        time.sleep(.5)
        audio_download = browser.find_element_by_xpath(
            '//*[@id="audio_download"]')
        audio_download.click()
        time.sleep(1.5)
        # audio_url = 'https://client-api.arkoselabs.com' + browser.find_element_by_xpath('//*[@id="audio_download"]').href
        list_of_files = glob.glob('/Users/ismaeel/Downloads/*.wav')
        latest_file = max(list_of_files, key=os.path.getctime)
        audio_url = '/Users/ismaeel/Downloads/' + latest_file
        log.info(f'Captcha audio url: ${audio_url}')
        code = arkose_labs.recognize_audio(audio_url)
        browser.switch_to.default_content()

    try:
        remind_later()
    except:
        input("captcha: ")
        # time.sleep(2)
        # complete_captcha()
        # time.sleep(3)
        # remind_later()

    # log.info("Waiting 3 seconds...")
    # time.sleep(3)
    browser.get(f'https://twitch.tv/{user_to_follow}')

    time.sleep(1)

    # Follow
    follow_button = browser.find_element_by_xpath(
        '//*[@id="root"]/div/div[2]/div/main/div[2]/div[3]/div/div/div[2]/div[1]/div[2]/div/div[2]/div[1]/div[2]/div[1]/div/div/div/div/div[1]/div/div/div/div/button'
    )
    follow_button.click()
    log.good(f"Followed {user_to_follow}!")
    browser.quit()
コード例 #16
0
ファイル: firefox.py プロジェクト: bmcculley/splinter
    def __init__(
        self,
        profile=None,
        extensions=None,
        user_agent=None,
        profile_preferences=None,
        fullscreen=False,
        wait_time=2,
        timeout=90,
        capabilities=None,
        headless=False,
        incognito=False,
        **kwargs
    ):

        firefox_profile = FirefoxProfile(profile)
        firefox_profile.set_preference("extensions.logging.enabled", False)
        firefox_profile.set_preference("network.dns.disableIPv6", False)

        firefox_capabilities = DesiredCapabilities().FIREFOX
        firefox_capabilities["marionette"] = True

        firefox_options = Options()

        if capabilities:
            for key, value in capabilities.items():
                firefox_capabilities[key] = value

        if user_agent is not None:
            firefox_profile.set_preference("general.useragent.override", user_agent)

        if profile_preferences:
            for key, value in profile_preferences.items():
                firefox_profile.set_preference(key, value)

        if extensions:
            for extension in extensions:
                firefox_profile.add_extension(extension)

        if headless:
            os.environ.update({"MOZ_HEADLESS": "1"})
            binary = FirefoxBinary()
            binary.add_command_line_options("-headless")
            kwargs["firefox_binary"] = binary

        if incognito:
            firefox_options.add_argument("-private")

        self.driver = Firefox(
            firefox_profile,
            capabilities=firefox_capabilities,
            options=firefox_options,
            timeout=timeout,
            **kwargs
        )

        if fullscreen:
            ActionChains(self.driver).send_keys(Keys.F11).perform()

        self.element_class = WebDriverElement

        self._cookie_manager = CookieManager(self.driver)

        super(WebDriver, self).__init__(wait_time)