From 41d34aba03072d99f3d234ca200c28ebcc615337 Mon Sep 17 00:00:00 2001 From: Yuriy Yuriev Date: Fri, 22 May 2026 01:37:38 +0700 Subject: [PATCH] fix proxy --- handlers/commands.py | 3 +-- services/browser_service.py | 23 ++++++++--------------- services/twitch_api.py | 2 +- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/handlers/commands.py b/handlers/commands.py index 619a4d4..f5e3e8e 100644 --- a/handlers/commands.py +++ b/handlers/commands.py @@ -2196,9 +2196,8 @@ class BotInterface: await send_message_safe(bot, params.chat_id, "⚠️ Баланс исчерпан — задача остановлена") return - reading = params.get_reading_time() try: - result = await self.browser_service.visit_page(params.url, reading) + result = await self.browser_service.visit_page(params.url, params.get_reading_time()) params.total_visits += 1 if result.success: params.successful_visits += 1 diff --git a/services/browser_service.py b/services/browser_service.py index b91ffb3..93d57a8 100644 --- a/services/browser_service.py +++ b/services/browser_service.py @@ -155,9 +155,9 @@ class BrowserService: _set_real_ip(None) logger.info("Direct connection") except asyncio.CancelledError: - # Гарантируем освобождение прокси даже при отмене задачи + # Задача отменена — прокси не виноват, освобождаем без штрафа if proxy: - await self.proxy_manager.release_proxy(proxy, success=False) + await self.proxy_manager.release_proxy(proxy, success=True) raise if proxy_config: @@ -167,15 +167,6 @@ class BrowserService: humanize=True, exclude_addons=[DefaultAddons.UBO], proxy=proxy_config, - firefox_prefs={ - # Запрещаем WebRTC использовать локальные IP-кандидаты - "media.peerconnection.ice.no_host": True, - # Только ICE через прокси — блокирует утечку реального IP - "media.peerconnection.ice.proxy_only_if_behind_proxy": True, - # DNS только через прокси (предотвращает DNS-утечку) - "network.dns.disablePrefetch": True, - "network.prefetch-next": False, - }, ) if proxy_locale: camoufox_kwargs["locale"] = proxy_locale @@ -204,11 +195,12 @@ class BrowserService: await self.socks5_pool.release(proxy) if is_proxy_dead: - logger.warning(f"Visit attempt {attempt + 1} proxy connection failed, retrying with new") + logger.warning(f"Visit attempt {attempt + 1} proxy connection failed, retrying with new proxy") continue elif is_load_error: - logger.warning(f"Visit attempt {attempt + 1} page load error (proxy ok), retrying") - continue + # Ошибка загрузки — не меняем прокси, просто возвращаем результат + # (сайт мог быть временно недоступен, прокси ок) + logger.warning(f"Visit attempt {attempt + 1} page load error: {result.error or 'unknown'}") return result @@ -222,7 +214,8 @@ class BrowserService: except Exception as e: logger.error(f"Visit error: {e}", exc_info=True) if proxy: - await self.proxy_manager.release_proxy(proxy, success=False) + # Ошибка кода/браузера — прокси не виноват + await self.proxy_manager.release_proxy(proxy, success=True) if use_socks5: await self.socks5_pool.release(proxy) return VisitResult(url=url, success=False, error=str(e)) diff --git a/services/twitch_api.py b/services/twitch_api.py index d2cfeea..9f185e6 100644 --- a/services/twitch_api.py +++ b/services/twitch_api.py @@ -39,7 +39,7 @@ async def get_viewer_count(channel: str) -> int | None: stream = data.get("data", {}).get("user", {}).get("stream") count = stream.get("viewersCount", 0) if stream else 0 - logger.info(f"Viewers on {channel}: {count}") + logger.debug(f"Viewers on {channel}: {count}") return count except Exception as e: