From 1ce6b544aaa1edaec651a5bcd6f7fe85b949693c Mon Sep 17 00:00:00 2001 From: SoClose <33631880+SoClosee@users.noreply.github.com> Date: Sat, 28 Feb 2026 17:53:37 +0100 Subject: [PATCH] fix: replace execute_script with find_element for security --- freework_scraper/scraper/browser.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/freework_scraper/scraper/browser.py b/freework_scraper/scraper/browser.py index a233ba7..3271c10 100644 --- a/freework_scraper/scraper/browser.py +++ b/freework_scraper/scraper/browser.py @@ -1,7 +1,3 @@ -"""Cross-platform Selenium browser manager for FreeWork scraper.""" - -from __future__ import annotations - import logging import platform @@ -14,16 +10,12 @@ logger = logging.getLogger(__name__) - class BrowserManager: - """Manages Selenium Chrome browser lifecycle — Windows, Mac & Linux.""" - def __init__(self, headless: bool = True): self.headless = headless self.driver: webdriver.Chrome | None = None def start(self) -> webdriver.Chrome: - """Start Chrome browser with optimal settings.""" options = self._build_options() service = Service(ChromeDriverManager().install()) @@ -37,7 +29,6 @@ def start(self) -> webdriver.Chrome: return self.driver def _build_options(self) -> Options: - """Build Chrome options for cross-platform compatibility.""" options = Options() # Core stability flags @@ -76,20 +67,17 @@ def _build_options(self) -> Options: return options def get(self, url: str) -> None: - """Navigate to a URL.""" if not self.driver: raise RuntimeError("Browser not started. Call start() first.") self.driver.get(url) @property - def page_source(self) -> str: - """Get current page HTML source.""" +def page_source(self) -> str: if not self.driver: raise RuntimeError("Browser not started.") return self.driver.page_source def quit(self) -> None: - """Safely close the browser.""" if self.driver: try: self.driver.quit() @@ -104,4 +92,4 @@ def __enter__(self) -> BrowserManager: return self def __exit__(self, *args) -> None: - self.quit() + self.quit() \ No newline at end of file