62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
import asyncio
|
|
import os
|
|
import shlex
|
|
import signal
|
|
|
|
from cloakbrowser import launch_async
|
|
|
|
|
|
def _env_bool(name, default):
|
|
raw = os.getenv(name)
|
|
if raw is None:
|
|
return default
|
|
return raw.strip().lower() in {"1", "true", "yes", "on"}
|
|
|
|
|
|
async def main():
|
|
debug_port = os.getenv("CHROME_LOCAL_DEBUG_PORT", "9223")
|
|
args = [
|
|
f"--remote-debugging-port={debug_port}",
|
|
"--remote-debugging-address=127.0.0.1",
|
|
"--remote-allow-origins=*",
|
|
"--window-size=1280,720",
|
|
"--no-sandbox",
|
|
"--disable-dev-shm-usage",
|
|
"--ozone-platform=x11",
|
|
]
|
|
extra_args = os.getenv("CLOAK_ARGS", "").strip()
|
|
if extra_args:
|
|
args.extend(shlex.split(extra_args))
|
|
|
|
launch_kwargs = {
|
|
"headless": _env_bool("CLOAK_HEADLESS", False),
|
|
"humanize": _env_bool("CLOAK_HUMANIZE", True),
|
|
"args": args,
|
|
}
|
|
|
|
if launch_kwargs["humanize"]:
|
|
launch_kwargs["human_preset"] = os.getenv("CLOAK_HUMAN_PRESET", "default")
|
|
|
|
proxy = os.getenv("CLOAK_PROXY", "").strip()
|
|
if proxy:
|
|
launch_kwargs["proxy"] = proxy
|
|
|
|
if _env_bool("CLOAK_GEOIP", False):
|
|
launch_kwargs["geoip"] = True
|
|
|
|
browser = await launch_async(**launch_kwargs)
|
|
print(f"CloakBrowser started on 127.0.0.1:{debug_port}", flush=True)
|
|
|
|
stop_event = asyncio.Event()
|
|
loop = asyncio.get_running_loop()
|
|
for sig in (signal.SIGINT, signal.SIGTERM):
|
|
loop.add_signal_handler(sig, stop_event.set)
|
|
|
|
try:
|
|
await stop_event.wait()
|
|
finally:
|
|
await browser.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|