51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
|
import time
|
||
|
import random
|
||
|
from selenium import webdriver
|
||
|
from selenium.webdriver.chrome.service import Service
|
||
|
import os
|
||
|
api_info = {
|
||
|
"model": "gpt-4.1-2025-04-14",
|
||
|
"base_url": "https://api.nuwaapi.com/v1",
|
||
|
"api_key": "sk-gZsDzmPpOh1UpVzLzkh9dP05v0nLv9iR0HCazhlO7ZNZ3Ier"
|
||
|
}
|
||
|
|
||
|
# chrome浏览器以及驱动配置
|
||
|
CHROME_BINARY_PATH = os.environ.get("CHROME_BINARY_PATH", "/usr/bin/google-chrome")
|
||
|
CHROMEDRIVER_PATH = os.environ.get("CHROMEDRIVER_PATH", "/usr/local/bin/chromedriver")
|
||
|
# 最大并发数
|
||
|
MAX_CONCURRENT_BROWSERS = 3
|
||
|
|
||
|
#创建浏览器driver
|
||
|
def create_browser():
|
||
|
options = webdriver.ChromeOptions()
|
||
|
options.binary_location = CHROME_BINARY_PATH
|
||
|
# 每个实例随机调试端口
|
||
|
options.add_argument(f"--remote-debugging-port={random.randint(9222, 9322)}")
|
||
|
# options.add_argument("--headless=new")
|
||
|
options.add_argument("--disable-gpu")
|
||
|
options.add_argument("--disable-software-rasterizer")
|
||
|
options.add_argument("--no-sandbox")
|
||
|
options.add_argument("--disable-setuid-sandbox")
|
||
|
options.add_argument("--window-size=1920,1080")
|
||
|
options.add_argument("--disable-dev-shm-usage")
|
||
|
options.add_argument("--disable-blink-features=AutomationControlled")
|
||
|
options.add_experimental_option("excludeSwitches", ["enable-automation"])
|
||
|
options.add_experimental_option("useAutomationExtension", False)
|
||
|
prefs = {
|
||
|
"download.prompt_for_download": False,
|
||
|
"plugins.always_open_pdf_externally": True,
|
||
|
"profile.default_content_setting_values.automatic_downloads": 1,
|
||
|
"safebrowsing.enabled": True,
|
||
|
"safebrowsing.disable_download_protection": True
|
||
|
}
|
||
|
options.add_experimental_option("prefs", prefs)
|
||
|
return webdriver.Chrome(service=Service(CHROMEDRIVER_PATH), options=options)
|
||
|
|
||
|
|
||
|
def _scroll_into_view(driver, el):
|
||
|
try:
|
||
|
driver.execute_script("arguments[0].scrollIntoView({block:'center', inline:'center'});", el)
|
||
|
time.sleep(0.2)
|
||
|
except Exception:
|
||
|
pass
|