1
This commit is contained in:
1 parent
56bce08861
commit
701a82a1fe
1 file changed
+50
@@ -27,6 +27,32 @@ import logging
|
|||||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
def patch_chrome_binary():
|
||||||
|
"""Патчит бинарный файл Chrome для удаления строки cdc_, которую ищут антифроды"""
|
||||||
|
possible_paths = [
|
||||||
|
"/opt/google/chrome/chrome",
|
||||||
|
"/usr/bin/google-chrome",
|
||||||
|
"/usr/bin/chromium",
|
||||||
|
]
|
||||||
|
|
||||||
|
for path in possible_paths:
|
||||||
|
if os.path.exists(path) and not os.path.islink(path):
|
||||||
|
try:
|
||||||
|
logger.info(f"Attempting to patch Chrome binary at {path}...")
|
||||||
|
with open(path, 'rb') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
if b'cdc_' in content:
|
||||||
|
logger.info(f"Found cdc_ in {path}, patching...")
|
||||||
|
new_content = content.replace(b'cdc_', b'abc_')
|
||||||
|
with open(path, 'wb') as f:
|
||||||
|
f.write(new_content)
|
||||||
|
logger.info(f"Successfully patched {path}")
|
||||||
|
else:
|
||||||
|
logger.info(f"cdc_ not found in {path} or already patched.")
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Could not patch {path}: {e}")
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def lifespan(app: FastAPI):
|
async def lifespan(app: FastAPI):
|
||||||
# Startup logic
|
# Startup logic
|
||||||
@@ -34,6 +60,9 @@ async def lifespan(app: FastAPI):
|
|||||||
from importlib import metadata
|
from importlib import metadata
|
||||||
logger.info(f"Python version: {sys.version}")
|
logger.info(f"Python version: {sys.version}")
|
||||||
|
|
||||||
|
# Патчим Chrome для максимальной скрытности
|
||||||
|
patch_chrome_binary()
|
||||||
|
|
||||||
# Автоматический запуск Chrome при старте, если включен Remote Debugging
|
# Автоматический запуск Chrome при старте, если включен Remote Debugging
|
||||||
if REMOTE_DEBUGGING_ENABLED:
|
if REMOTE_DEBUGGING_ENABLED:
|
||||||
logger.info("Remote Debugging enabled, starting Chrome on startup...")
|
logger.info("Remote Debugging enabled, starting Chrome on startup...")
|
||||||
@@ -162,6 +191,20 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str):
|
|||||||
user_data_dir = "/app/browser-data/main_profile"
|
user_data_dir = "/app/browser-data/main_profile"
|
||||||
os.makedirs(user_data_dir, exist_ok=True)
|
os.makedirs(user_data_dir, exist_ok=True)
|
||||||
|
|
||||||
|
# Удаляем файл блокировки профиля, если он остался от предыдущего запуска
|
||||||
|
# В Linux это обычно симлинк SingletonLock
|
||||||
|
for lock_name in ["SingletonLock", "SingletonCookie", "SingletonSocket"]:
|
||||||
|
lock_path = os.path.join(user_data_dir, lock_name)
|
||||||
|
if os.path.exists(lock_path) or os.path.islink(lock_path):
|
||||||
|
try:
|
||||||
|
logger.info(f"[{task_id}] Removing stale Chrome lock: {lock_path}")
|
||||||
|
if os.path.islink(lock_path):
|
||||||
|
os.unlink(lock_path)
|
||||||
|
else:
|
||||||
|
os.remove(lock_path)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"[{task_id}] Could not remove lock {lock_name}: {e}")
|
||||||
|
|
||||||
# Внутренний порт для Chrome
|
# Внутренний порт для Chrome
|
||||||
CHROME_INTERNAL_PORT = REMOTE_DEBUGGING_PORT + 1 # 9223
|
CHROME_INTERNAL_PORT = REMOTE_DEBUGGING_PORT + 1 # 9223
|
||||||
|
|
||||||
@@ -191,6 +234,13 @@ async def run_browser_task(task_id: str, task: str, max_steps: int, model: str):
|
|||||||
"--use-mock-keychain",
|
"--use-mock-keychain",
|
||||||
"--force-color-profile=srgb",
|
"--force-color-profile=srgb",
|
||||||
"--disable-features=IsolateOrigins,site-per-process",
|
"--disable-features=IsolateOrigins,site-per-process",
|
||||||
|
"--disable-notifications",
|
||||||
|
"--disable-popup-blocking",
|
||||||
|
"--disable-print-preview",
|
||||||
|
"--disable-prompt-on-repost",
|
||||||
|
"--disable-sync",
|
||||||
|
"--no-pings",
|
||||||
|
"--mute-audio",
|
||||||
"about:blank"
|
"about:blank"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user