diff options
author | Heiner Lohaus <hlohaus@users.noreply.github.com> | 2024-03-15 11:46:06 +0100 |
---|---|---|
committer | Heiner Lohaus <hlohaus@users.noreply.github.com> | 2024-03-15 11:46:06 +0100 |
commit | 8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0 (patch) | |
tree | ea190c7017d8e8982e63a502da0a828d5ba42f94 /g4f/requests/__init__.py | |
parent | Add export / import conversations (diff) | |
download | gpt4free-8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0.tar gpt4free-8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0.tar.gz gpt4free-8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0.tar.bz2 gpt4free-8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0.tar.lz gpt4free-8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0.tar.xz gpt4free-8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0.tar.zst gpt4free-8cc6000ffbf4e12bf6c1d5e5878d376e36857ec0.zip |
Diffstat (limited to 'g4f/requests/__init__.py')
-rw-r--r-- | g4f/requests/__init__.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/g4f/requests/__init__.py b/g4f/requests/__init__.py index 3bb68e9c..cfc6af42 100644 --- a/g4f/requests/__init__.py +++ b/g4f/requests/__init__.py @@ -12,11 +12,40 @@ except ImportError: from typing import Type as Session, Type as Response from .aiohttp import StreamResponse, StreamSession has_curl_cffi = False +try: + import webview + import asyncio + has_webview = True +except ImportError: + has_webview = False from ..webdriver import WebDriver, WebDriverSession from ..webdriver import bypass_cloudflare, get_driver_cookies from ..errors import MissingRequirementsError, RateLimitError, ResponseStatusError -from .defaults import DEFAULT_HEADERS +from .defaults import DEFAULT_HEADERS, WEBVIEW_HAEDERS + +async def get_args_from_webview(url: str): + if not has_webview: + raise MissingRequirementsError('Install "webview" package') + window = webview.create_window("", url, hidden=True) + await asyncio.sleep(2) + body = None + while body is None: + try: + await asyncio.sleep(1) + body = window.dom.get_element("body:not(.no-js)") + except: + ... + headers = { + **WEBVIEW_HAEDERS, + "User-Agent": window.evaluate_js("this.navigator.userAgent"), + "Accept-Language": window.evaluate_js("this.navigator.language"), + "Referer": window.real_url + } + cookies = [list(*cookie.items()) for cookie in window.get_cookies()] + cookies = dict([(name, cookie.value) for name, cookie in cookies]) + window.destroy() + return {"headers": headers, "cookies": cookies} def get_args_from_browser( url: str, |