undetected_chromedriver 控制已打开的浏览器

复制代码
def get_options():
    options = ChromeOptions()
    options.add_argument("--disable-blink-features=AutomationControlled")
    # options.add_experimental_option("excludeSwitches", ["enable-automation"])
    # options.add_experimental_option("useAutomationExtension", False)
    options.add_argument("--disable-extensions")
    options.add_argument("--no-default-browser-check")
    options.add_argument("--no-first-run")
    options.add_argument("--disable-popup-blocking")
    options.add_argument("--disable-default-apps")
    options.add_argument("--disable-infobars")
    # options.add_argument("--disable-gpu")
    # options.add_argument("--disable-notifications")
    options.add_argument("--disable-translate")
    options.add_argument("--disable-device-discovery-notifications")
    options.add_argument("--no-sandbox")
    # options.add_argument("--disable-dev-shm-usage")
    options.add_argument("--window-size=1920x1080")
    options.add_argument("--disable-features=VizDisplayCompositor")
    return options

def getchromeversion():
    if 'win' in sys.platform:
        import winreg
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Google\Chrome\BLBeacon')
        chrome_version = winreg.QueryValueEx(key, 'version')[0]
        return chrome_version
    else:
        from webdriver_manager.utils import get_browser_version_from_os
        browserVersion = get_browser_version_from_os("google-chrome")  # 获取当前系统chrome浏览器的版本号
        print(f'Chrome version is {browserVersion}')
        mainBrowserVersion = browserVersion.split(".")[0]  # 获取chrome浏览器的主版本号
        return browserVersion


def get_session_url(port):
    url = f'http://127.0.0.1:{port}/json/version'
    try:
        res = requests.get(url)
        print(res.text)
        webSocketDebuggerUrl = json.loads(res.text)['webSocketDebuggerUrl']
    except:
        # 命令行启动
        time.sleep(random.randint(4, 6))


def start_brower():
    from undetected_chromedriver import Chrome, ChromeOptions, find_chrome_executable
    user_data_name = "chrome1"
    port = 9315
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
    current_path = os.path.dirname(os.path.realpath(sys.argv[0]))
    # 浏览器用户配置文件
    user_data_dir = os.path.join(current_path, user_data_name)
    # 浏览器版本号
    version = getchromeversion().split('.')[0]
    # 下载驱动
    currentpath = os.path.dirname(os.path.realpath(sys.argv[0]))
    executable_path = os.path.join(currentpath, 'chromedriver_win32', f'chromedriver_{version}.exe')
    if not os.path.exists(executable_path):
        # get_chromedriver_version(path, version)
        print('自动下载驱动')
    # 浏览器路径
    chrome_path = find_chrome_executable()
    print('executable_path:', executable_path)
    print('user_data_dir:', user_data_dir)
    print('chrome_path:', chrome_path)

    option = get_options()
    option.add_argument(fr'--user-data-dir="{user_data_dir}"')
    option.add_argument(f"--user-agent={user_agent}")
    option.debugger_address = f"127.0.0.1:{port}"
    driver = Chrome(options=option, executable_path=executable_path)
    print(driver.title)
    time.sleep(2)
    driver.get('https://blog.csdn.net/lwdfzr/article/details/135410359')
    time.sleep(random.randint(3, 5))
复制代码
undetected_chromedriver 通过端口控制已打开的浏览器时,会打开一个多余的空白窗口,

鼠标放在Chrome() 按ctrl+B查看源码,找到这段代码,注释掉

相关推荐
Ray Liang1 分钟前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮17 分钟前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling20 分钟前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
AI攻城狮3 小时前
用 Playwright 实现博客一键发布到稀土掘金
python·自动化运维
曲幽4 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
孟健19 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞21 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽1 天前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程1 天前
一天一个Python库:jsonschema - JSON 数据验证利器
python