browser.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.common.keys import Keys
  4. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  5. from webdriver_manager.chrome import ChromeDriverManager
  6. from fake_useragent import UserAgent
  7. class Browser:
  8. """ Класс представляющий браузер """
  9. def get_browser(self, display_browser, proxy=None):
  10. """ Настроить и получить браузер """
  11. user_agent = UserAgent()
  12. user_agent = user_agent.random
  13. driver = ChromeDriverManager().install()
  14. options = webdriver.ChromeOptions()
  15. options.add_argument(f'--user-agent={user_agent}')
  16. options.add_argument(f'--disable-blink-features=AutomationControlled')
  17. if not display_browser == 'yes': # Если браузер не нужно отображать
  18. options.add_argument('--headless')
  19. if proxy: # Если собираемся парсить через прокси
  20. browser = self.get_browser_with_proxy(user_agent, driver, options, proxy)
  21. return browser
  22. else: # Если не собираемся парсить через прокси
  23. browser = webdriver.Chrome(
  24. driver,
  25. options=options
  26. )
  27. return browser
  28. def get_browser_with_proxy(self, user_agent, driver, options, proxy):
  29. """ Возвращаем браузер с прокси """
  30. caps = DesiredCapabilities.CHROME
  31. caps['marrionette'] = True
  32. caps['proxy'] = {
  33. 'proxyType': 'MANUAL',
  34. 'httpProxy': proxy,
  35. 'ftpProxy': proxy,
  36. 'sslProxy': proxy
  37. }
  38. browser = webdriver.Chrome(
  39. driver,
  40. options=options,
  41. desired_capabilities=caps
  42. )
  43. return browser