Проверка, загружает ли URL-адрес содержимое автоматически или не использует Headless Chromium в AWS Lambda - PullRequest
0 голосов
/ 01 мая 2020

У меня есть URL, и мне нужно проверить, загружает ли данный URL автоматически контент или нет ?. Если это не так, значение должно быть ложным.

Я использую хром без головы с селеном в AWS Лямбда. Я создаю папку для загрузок в папке / tmp , где я проверил, загружает ли он контент или нет. Мне не нужно загружать весь контент, я просто хочу определить, действительно ли URL автоматически загружает контент.

Например: www.malwaredomainlist.com/hostslist/yesterday_urls.php

def check_for_downloadable_url():

    if len(os.listdir('/tmp/downloads') ) == 0:
        return False
    else:    
        return True

def lambda_handler(event, context):

    page_data = None
    is_downloadable_url = None

    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--window-size=1280x1696')
    chrome_options.add_argument('--user-data-dir=/tmp/user-data')
    chrome_options.add_argument('--hide-scrollbars')
    chrome_options.add_argument('--log-level=0')
    chrome_options.add_argument('--v=99')    
    chrome_options.add_argument('--enable-logging')
    chrome_options.add_argument('--single-process')
    chrome_options.add_argument('--data-path=/tmp/data-path')
    chrome_options.add_argument('--ignore-certificate-errors')
    chrome_options.add_argument('--homedir=/tmp')
    chrome_options.add_argument('--disk-cache-dir=/tmp/cache-dir')
    chrome_options.add_argument('--disable-software-rasterizer')
    chrome_options.add_argument("--enable-javascript")
    prefs =   {
        "download.default_directory": "/tmp/downloads",
        "download.prompt_for_download": False,
        "download.directory_upgrade": True,
        "safebrowsing_for_trusted_sources_enabled": False,
        "safebrowsing.enabled": False
    }

    chrome_options.add_experimental_option('prefs', prefs)
    chrome_options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36')
    chrome_options.binary_location = os.getcwd() + "/bin/headless-chromium"
    exe_path = os.getcwd() + "/bin/chromedriver"
    driver = webdriver.Chrome(executable_path=exe_path,chrome_options=chrome_options)
    url = event["url"]

    if not os.path.exists("/tmp/downloads/"):
        os.mkdir("/tmp/downloads/")
    try:
        driver.set_page_load_timeout(30)
        driver.get(url)
        time.sleep(10)
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        a = driver.execute_script(javascript_func)
        time.sleep(10)
        page_data = driver.page_source        
        is_downloadable_url = check_for_downloadable_url()
    except Exception as e:
        print (str(e))
    finally:
        close_driver_obj(driver)

    return {"page_data":page_data,"is_downloadable_url":is_downloadable_url}
...