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 from pyvirtualdisplay import Display from selenium.webdriver.chrome.service import Service 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() service = Service(driver_path) 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})") time.sleep(3) print(driver.current_url) except: driver = None return driver return driver def get_resource(kw): max_attempts = 2 attempts = 0 while attempts