У меня есть 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}