Пример #1
0
def main():
    parser = argparse.ArgumentParser(description='Selenium proxy - O_o')
    parser.add_argument('--batch',
                        nargs=1,
                        required=True,
                        help='name of batch to start')
    parser.add_argument('--vdisplay', nargs='?', help='use virtual display')
    args = parser.parse_args()

    if args.vdisplay:
        vdisplay = Xvfb(width=1280, height=740, colordepth=16)
        vdisplay.start()

    batch_name = args.batch[0]
    settings = get_batch(batch_name)

    if settings == None:
        print('Invalid name batch')
        return

    i = 0
    while (True):
        i = i + 1

        if DEBUG_MODE:
            logging.info('Iterration: {0}'.format(i))
            i += 1

        lang = settings['lang']
        proxies = settings['proxy']['default'][lang]

        for proxy in proxies:
            device_name = None

            if settings['device']['type'] == 'mobile':
                device_name = choice(settings['device']['name'])

            driver = get_driver(proxy, lang, device_name)

            links = settings['links']
            links_ban = links['ban'] if 'ban' in links else []
            links_pop = links['pop'] if 'pop' in links else []

            for link in links_ban:
                mc_interval = settings['maxclick']['interval_h']
                mc_count = settings['maxclick']['count']

                if is_capped(batch_name, mc_interval, mc_count):
                    continue

                _link = link
                driver.get(link)

                link = driver.find_element_by_xpath('//a/img')
                link.click()
                track_click(batch_name, _link)

                if DEBUG_MODE:
                    make_screenshot(driver)

            for link in links_pop:
                driver.get(link)

                if DEBUG_MODE:
                    make_screenshot(driver)

            driver.quit()
            # need to sleep
            time.sleep(DRIVER_DELAY)

    if args.vdisplay:
        vdisplay.close()