diff --git a/crawl4ai/async_configs.py b/crawl4ai/async_configs.py index c93516bd..9b5af2bb 100644 --- a/crawl4ai/async_configs.py +++ b/crawl4ai/async_configs.py @@ -510,7 +510,7 @@ class BrowserConfig: chrome_channel=kwargs.get("chrome_channel", "chromium"), channel=kwargs.get("channel", "chromium"), proxy=kwargs.get("proxy"), - proxy_config=kwargs.get("proxy_config", None), + proxy_config=ProxyConfig.from_dict(kwargs.get("proxy_config")) if isinstance(kwargs.get("proxy_config"), dict) else kwargs.get("proxy_config", None), viewport_width=kwargs.get("viewport_width", 1080), viewport_height=kwargs.get("viewport_height", 600), accept_downloads=kwargs.get("accept_downloads", False), @@ -546,7 +546,7 @@ class BrowserConfig: "chrome_channel": self.chrome_channel, "channel": self.channel, "proxy": self.proxy, - "proxy_config": self.proxy_config, + "proxy_config": self.proxy_config.to_dict() if hasattr(self.proxy_config, 'to_dict') else self.proxy_config, "viewport_width": self.viewport_width, "viewport_height": self.viewport_height, "accept_downloads": self.accept_downloads, @@ -1121,7 +1121,7 @@ class CrawlerRunConfig(): prettiify=kwargs.get("prettiify", False), parser_type=kwargs.get("parser_type", "lxml"), scraping_strategy=kwargs.get("scraping_strategy"), - proxy_config=kwargs.get("proxy_config"), + proxy_config=ProxyConfig.from_dict(kwargs.get("proxy_config")) if isinstance(kwargs.get("proxy_config"), dict) else kwargs.get("proxy_config"), proxy_rotation_strategy=kwargs.get("proxy_rotation_strategy"), # Browser Location and Identity Parameters locale=kwargs.get("locale", None), @@ -1234,7 +1234,7 @@ class CrawlerRunConfig(): "prettiify": self.prettiify, "parser_type": self.parser_type, "scraping_strategy": self.scraping_strategy, - "proxy_config": self.proxy_config, + "proxy_config": self.proxy_config.to_dict() if hasattr(self.proxy_config, 'to_dict') else self.proxy_config, "proxy_rotation_strategy": self.proxy_rotation_strategy, "locale": self.locale, "timezone_id": self.timezone_id, diff --git a/crawl4ai/browser_manager.py b/crawl4ai/browser_manager.py index d4e074cf..95ff9c3a 100644 --- a/crawl4ai/browser_manager.py +++ b/crawl4ai/browser_manager.py @@ -858,14 +858,12 @@ class BrowserManager: if crawlerRunConfig: # Check if there is value for crawlerRunConfig.proxy_config set add that to context if crawlerRunConfig.proxy_config: - proxy_settings = { - "server": crawlerRunConfig.proxy_config.server, - } - if crawlerRunConfig.proxy_config.username: - proxy_settings.update({ - "username": crawlerRunConfig.proxy_config.username, - "password": crawlerRunConfig.proxy_config.password, - }) + from playwright.async_api import ProxySettings + proxy_settings = ProxySettings( + server=crawlerRunConfig.proxy_config.server, + username=crawlerRunConfig.proxy_config.username, + password=crawlerRunConfig.proxy_config.password, + ) context_settings["proxy"] = proxy_settings if self.config.text_mode: