import undetected_chromedriver as uc import time import os import urllib from selenium.webdriver.common.by import By from pyvirtualdisplay import Display import sys import urlToarticle from fastapi import FastAPI, Form, Request from fastapi.responses import FileResponse, HTMLResponse from fastapi.templating import Jinja2Templates from pydantic import BaseModel from typing import List import undetected_chromedriver as uc app = FastAPI() templates = Jinja2Templates(directory="templates") driver = None driver_path = '/usr/local/bin/chromedriver' user_data_dir = '/home/ling/.config/google-chrome' profile_directory = 'Default' def re_get_webdriver(): global port global driver global portnum global is_docker result = [] if driver is not None: print('closing....') driver.quit() print('quit....') driver = None try: display = Display(visible=0, size=(1920, 1080)) display.start() options = uc.ChromeOptions() #options.add_argument("--window-size=200,100") # 縮小視窗 #options.add_argument("--window-position=-32000,-32000") # 移到螢幕外 options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-blink-features=AutomationControlled") driver = uc.Chrome(options=options,version_main=132) driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") except Exception as e: print(f"Chrome 啟動失敗: {str(e)}") driver = None return None return driver def get_resource(kw): max_attempts = 2 attempts = 0 while attempts