From d5b66b8e781cac9931d237c5cf690f22a05af2bb Mon Sep 17 00:00:00 2001 From: vbanos Date: Mon, 10 Nov 2025 12:27:06 +0100 Subject: [PATCH 1/2] Limit screenshot width and height There are cases where screenshot width / height become huge. We need to limit them to avoid system overload. Set default limits of width=2k and height=10k pixels. Define `Browser` params to override limits when necessary. --- brozzler/browser.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/brozzler/browser.py b/brozzler/browser.py index 0ca0f67..1455737 100644 --- a/brozzler/browser.py +++ b/brozzler/browser.py @@ -388,6 +388,8 @@ class Browser: self.is_browsing = False self._command_id = Counter() self._wait_interval = 0.5 + self._max_screenshot_width = kwargs.get('max_screenshot_width', 2000) + self._max_screenshot_height = kwargs.get('max_screenshot_height', 10000) def __enter__(self): self.start() @@ -808,8 +810,8 @@ class Browser: lambda: self.websock_thread.received_result(msg_id), timeout=timeout ) message = self.websock_thread.pop_result(msg_id) - width = message["result"]["contentSize"]["width"] - height = message["result"]["contentSize"]["height"] + width = min(message["result"]["contentSize"]["width"], self._max_screenshot_width) + height = min(message["result"]["contentSize"]["height"], self._max_screenshot_height) clip = dict(x=0, y=0, width=width, height=height, scale=1) deviceScaleFactor = 1 screenOrientation = {"angle": 0, "type": "portraitPrimary"} From 63dd934fa73833541fe334e2d6cb3945a1205ee6 Mon Sep 17 00:00:00 2001 From: vbanos Date: Wed, 19 Nov 2025 13:24:16 +0100 Subject: [PATCH 2/2] Set default height to 20k and fix formatting --- brozzler/browser.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/brozzler/browser.py b/brozzler/browser.py index 1455737..33d1889 100644 --- a/brozzler/browser.py +++ b/brozzler/browser.py @@ -388,8 +388,8 @@ class Browser: self.is_browsing = False self._command_id = Counter() self._wait_interval = 0.5 - self._max_screenshot_width = kwargs.get('max_screenshot_width', 2000) - self._max_screenshot_height = kwargs.get('max_screenshot_height', 10000) + self._max_screenshot_width = kwargs.get("max_screenshot_width", 2000) + self._max_screenshot_height = kwargs.get("max_screenshot_height", 20000) def __enter__(self): self.start() @@ -810,8 +810,12 @@ class Browser: lambda: self.websock_thread.received_result(msg_id), timeout=timeout ) message = self.websock_thread.pop_result(msg_id) - width = min(message["result"]["contentSize"]["width"], self._max_screenshot_width) - height = min(message["result"]["contentSize"]["height"], self._max_screenshot_height) + width = min( + message["result"]["contentSize"]["width"], self._max_screenshot_width + ) + height = min( + message["result"]["contentSize"]["height"], self._max_screenshot_height + ) clip = dict(x=0, y=0, width=width, height=height, scale=1) deviceScaleFactor = 1 screenOrientation = {"angle": 0, "type": "portraitPrimary"}