welin 3 minggu lalu
induk
melakukan
7768b8b369
3 mengubah file dengan 19 tambahan dan 89 penghapusan
  1. 0 88
      config/proxies.json
  2. 1 0
      docker-compose.yml
  3. 18 1
      plugins/tls_plugin2.py

+ 0 - 88
config/proxies.json

@@ -1,93 +1,5 @@
 {
     "isp_all": [
-        {
-            "id": 100021,
-            "ip": "195.178.151.14",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100022,
-            "ip": "195.178.151.20",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100023,
-            "ip": "195.178.151.134",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100024,
-            "ip": "195.178.151.187",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100025,
-            "ip": "165.254.9.248",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100026,
-            "ip": "165.254.9.156",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100027,
-            "ip": "109.72.116.223",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100028,
-            "ip": "109.72.116.124",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100029,
-            "ip": "109.72.116.184",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100030,
-            "ip": "89.33.195.58",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
-        {
-            "id": 100031,
-            "ip": "89.33.195.43",
-            "password": "919e0ee7ee",
-            "port": 12323,
-            "scheme": "http",
-            "username": "14a7fe11fea49"
-        },
         {
             "id": 100032,
             "ip": "95.170.29.68",

+ 1 - 0
docker-compose.yml

@@ -15,6 +15,7 @@ services:
       - ./plugins:/app/plugins
     environment:
       - TZ=Asia/Shanghai
+      # entrypoint 已启动 Xvfb :99,Camoufox 默认有头即可用虚拟屏;若改真无头可设: CAMOUFOX_HEADLESS=1
       - DISPLAY=:99
       - CHROME_BIN=/usr/bin/chromium
     # 资源限制

+ 18 - 1
plugins/tls_plugin2.py

@@ -19,6 +19,21 @@ from vs_types import VSPlgConfig, AppointmentType, VSQueryResult, VSBookResult,
 from utils.cloudflare_bypass_for_scraping2 import CloudflareBypasser
 
 
+def _camoufox_headless_from_env():
+    """
+    Ubuntu/无显示器 下通过环境变量选择 Camoufox 模式(与 NewBrowser 一致):
+    - 未设置 / 0 / false:有头(需真实 DISPLAY 或自行开 Xvfb 并 export DISPLAY=:99)
+    - 1 / true / yes / headless:Playwright 真无头(无需 X)
+    - virtual / xvfb:由 Camoufox 起 Xvfb 虚拟屏(需安装 Xvfb,适合要「有界面栈」又无可接显示器的 Linux)
+    """
+    v = (os.environ.get("CAMOUFOX_HEADLESS") or "").strip().lower()
+    if v in ("1", "true", "yes", "headless"):
+        return True
+    if v in ("virtual", "xvfb", "vdisplay"):
+        return "virtual"
+    return False
+
+
 class BrowserResponse:
     """模拟 requests.Response"""
     def __init__(self, result_dict):
@@ -232,10 +247,12 @@ class TlsPlugin(IVSPlg):
 
         try:
             self.playwright = sync_playwright().start()
+            headless_opt = _camoufox_headless_from_env()
+            self._log(f"Camoufox headless={headless_opt!r} (env CAMOUFOX_HEADLESS)")
             self.browser_ctx = NewBrowser(
                 self.playwright,
                 persistent_context=True,
-                headless=False,
+                headless=headless_opt,
                 user_data_dir=self.user_data_path,
                 proxy=proxy_cfg,
                 window=(1920, 1080),