如何使用seleniumwire+chromedriver绕过安全检查访问登录页面?

我使用 seleniumwire+chromedriver 访问目标站点的登录页面,但无法建立链接。

我已经采取了一些措施来防止服务器检测到我正在使用 selenium,但它似乎没有生效。当我使用 Google 访问目标站点时,能够正常访问。我访问的网站有较为严格的安全检查,需要安装相关证书并插入 UK 才能登录。但是,无关人员仍然可以正常访问登录页面。所以只是访问登陆页面的话应该不会校验证书,现在我面临的问题是,即使是登录页面也无法访问。

def creat_driver():
    # 创建 ChromeOptions 对象
    chrome_options = Options()
    # 隐藏自动化标识
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    # 启用无头模式
    # chrome_options.add_argument("--headless")
    # 禁用自动化扩展
    chrome_options.add_experimental_option('useAutomationExtension', False)
    # 禁用gpu加速
    chrome_options.add_argument("--disable-gpu")
    # 禁用 Blink 引擎中的 AutomationControlled 特性
    chrome_options.add_argument("disable-blink-features=AutomationControlled")
    # 创建 Service 对象
    ser = Service(executable_path=config_info['chromedriver_path'])
    # 初始化selenium-wire WebDriver,使用之前创建的 Service 对象和 ChromeOptions 对象
    driver = webdriver.Chrome(service=ser, options=chrome_options)
    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined});")
    # 设置窗口大小为全屏
    driver.maximize_window()
    return driver
阅读 842
1 个回答
✓ 已被采纳

被识别到的原因是自动化特征被识别到,通过js来隐藏自动化特征可以解决这个问题。

    with open('stealth.min.js') as f:
        js = f.read()

    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": js,
    })

相关下载地址:
https://github.com/requireCool/stealth.min.js

宣传栏