diff --git a/CHANGELOG.md b/CHANGELOG.md index cde1582..3a26f5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## v3.3.19 (2024/05/23) +* Fix occasional headless issue on Linux when set to "false". Thanks @21hsmw + ## v3.3.18 (2024/05/20) * Fix LANG ENV for Linux diff --git a/Dockerfile b/Dockerfile index 2cb2be8..699db27 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,17 +62,17 @@ ENTRYPOINT ["/usr/bin/dumb-init", "--"] CMD ["/usr/local/bin/python", "-u", "/app/flaresolverr.py"] # Local build -# docker build -t ngosang/flaresolverr:3.3.18 . -# docker run -p 8191:8191 ngosang/flaresolverr:3.3.18 +# docker build -t ngosang/flaresolverr:3.3.19 . +# docker run -p 8191:8191 ngosang/flaresolverr:3.3.19 # Multi-arch build # docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # docker buildx create --use -# docker buildx build -t ngosang/flaresolverr:3.3.18 --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64/v8 . +# docker buildx build -t ngosang/flaresolverr:3.3.19 --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64/v8 . # add --push to publish in DockerHub # Test multi-arch build # docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # docker buildx create --use -# docker buildx build -t ngosang/flaresolverr:3.3.18 --platform linux/arm/v7 --load . -# docker run -p 8191:8191 --platform linux/arm/v7 ngosang/flaresolverr:3.3.18 +# docker buildx build -t ngosang/flaresolverr:3.3.19 --platform linux/arm/v7 --load . +# docker run -p 8191:8191 --platform linux/arm/v7 ngosang/flaresolverr:3.3.19 diff --git a/package.json b/package.json index 6b2460a..6cfb1f7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "flaresolverr", - "version": "3.3.18", + "version": "3.3.19", "description": "Proxy server to bypass Cloudflare protection", "author": "Diego Heras (ngosang / ngosang@hotmail.es)", "license": "MIT" diff --git a/src/flaresolverr.py b/src/flaresolverr.py index 9e5f8de..3596fe1 100644 --- a/src/flaresolverr.py +++ b/src/flaresolverr.py @@ -101,6 +101,9 @@ if __name__ == "__main__": logging.info(f'FlareSolverr {utils.get_flaresolverr_version()}') logging.debug('Debug log enabled') + # Get current OS for global variable + utils.get_current_platform() + # test browser installation flaresolverr_service.test_browser_installation() diff --git a/src/flaresolverr_service.py b/src/flaresolverr_service.py index a92e5c9..e702526 100644 --- a/src/flaresolverr_service.py +++ b/src/flaresolverr_service.py @@ -245,7 +245,8 @@ def _resolve_challenge(req: V1RequestBase, method: str) -> ChallengeResolutionT: raise Exception('Error solving the challenge. ' + str(e).replace('\n', '\\n')) finally: if not req.session and driver is not None: - driver.close() + if utils.PLATFORM_VERSION == "nt": + driver.close() driver.quit() logging.debug('A used instance of webdriver has been destroyed') diff --git a/src/sessions.py b/src/sessions.py index dab0cdc..30bb3c1 100644 --- a/src/sessions.py +++ b/src/sessions.py @@ -66,7 +66,8 @@ class SessionsStorage: return False session = self.sessions.pop(session_id) - session.driver.close() + if utils.PLATFORM_VERSION == "nt": + session.driver.close() session.driver.quit() return True diff --git a/src/undetected_chromedriver/devtool.py b/src/undetected_chromedriver/devtool.py index 7322ad5..915d417 100644 --- a/src/undetected_chromedriver/devtool.py +++ b/src/undetected_chromedriver/devtool.py @@ -2,6 +2,7 @@ import asyncio from collections.abc import Mapping from collections.abc import Sequence from functools import wraps +import os import logging import threading import time @@ -187,5 +188,6 @@ def test(): time.sleep(10) - driver.close() + if os.name == "nt": + driver.close() driver.quit() diff --git a/src/utils.py b/src/utils.py index 7c6d4f3..a5bd1ef 100644 --- a/src/utils.py +++ b/src/utils.py @@ -11,6 +11,7 @@ from selenium.webdriver.chrome.webdriver import WebDriver import undetected_chromedriver as uc FLARESOLVERR_VERSION = None +PLATFORM_VERSION = None CHROME_EXE_PATH = None CHROME_MAJOR_VERSION = None USER_AGENT = None @@ -38,6 +39,13 @@ def get_flaresolverr_version() -> str: FLARESOLVERR_VERSION = json.loads(f.read())['version'] return FLARESOLVERR_VERSION +def get_current_platform() -> str: + global PLATFORM_VERSION + if PLATFORM_VERSION is not None: + return PLATFORM_VERSION + PLATFORM_VERSION = os.name + return PLATFORM_VERSION + def create_proxy_extension(proxy: dict) -> str: parsed_url = urllib.parse.urlparse(proxy['url']) @@ -314,7 +322,8 @@ def get_user_agent(driver=None) -> str: raise Exception("Error getting browser User-Agent. " + str(e)) finally: if driver is not None: - driver.close() + if PLATFORM_VERSION == "nt": + driver.close() driver.quit()