diff --git a/crawl4ai/async_configs.py b/crawl4ai/async_configs.py index 946a6fc0..654f3fbd 100644 --- a/crawl4ai/async_configs.py +++ b/crawl4ai/async_configs.py @@ -477,6 +477,7 @@ class BrowserConfig: debugging_port: int = 9222, host: str = "localhost", enable_stealth: bool = False, + init_scripts: List[str] = None, ): self.browser_type = browser_type @@ -536,6 +537,7 @@ class BrowserConfig: self.debugging_port = debugging_port self.host = host self.enable_stealth = enable_stealth + self.init_scripts = init_scripts if init_scripts is not None else [] fa_user_agenr_generator = ValidUAGenerator() if self.user_agent_mode == "random": @@ -615,6 +617,7 @@ class BrowserConfig: debugging_port=kwargs.get("debugging_port", 9222), host=kwargs.get("host", "localhost"), enable_stealth=kwargs.get("enable_stealth", False), + init_scripts=kwargs.get("init_scripts", []), ) def to_dict(self): @@ -654,9 +657,10 @@ class BrowserConfig: "debugging_port": self.debugging_port, "host": self.host, "enable_stealth": self.enable_stealth, + "init_scripts": self.init_scripts, } - + return result def clone(self, **kwargs): diff --git a/crawl4ai/browser_manager.py b/crawl4ai/browser_manager.py index c3b5fd0a..f0bb0be0 100644 --- a/crawl4ai/browser_manager.py +++ b/crawl4ai/browser_manager.py @@ -890,7 +890,12 @@ class BrowserManager: or crawlerRunConfig.simulate_user or crawlerRunConfig.magic ): - await context.add_init_script(load_js_script("navigator_overrider")) + await context.add_init_script(load_js_script("navigator_overrider")) + + # Apply custom init_scripts from BrowserConfig (for stealth evasions, etc.) + if self.config.init_scripts: + for script in self.config.init_scripts: + await context.add_init_script(script) async def create_browser_context(self, crawlerRunConfig: CrawlerRunConfig = None): """