我使用 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
被识别到的原因是自动化特征被识别到,通过js来隐藏自动化特征可以解决这个问题。
相关下载地址:
https://github.com/requireCool/stealth.min.js