diff --git a/crawl4ai/async_configs.py b/crawl4ai/async_configs.py index 985f6a63..53f4aaed 100644 --- a/crawl4ai/async_configs.py +++ b/crawl4ai/async_configs.py @@ -728,7 +728,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), @@ -770,7 +770,7 @@ class BrowserConfig: "chrome_channel": self.chrome_channel, "channel": self.channel, "proxy": self.proxy, - "proxy_config": self.proxy_config.to_dict() if self.proxy_config else None, + "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, @@ -1788,7 +1788,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"), # Sticky Proxy Session Parameters proxy_session_id=kwargs.get("proxy_session_id"), @@ -1918,7 +1918,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, "proxy_session_id": self.proxy_session_id, "proxy_session_ttl": self.proxy_session_ttl, diff --git a/crawl4ai/browser_manager.py b/crawl4ai/browser_manager.py index 90337c02..4737610e 100644 --- a/crawl4ai/browser_manager.py +++ b/crawl4ai/browser_manager.py @@ -1202,14 +1202,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: