使用undetected_chromedriver.v2设置下载路径时出现不识别prefs选项报错如何解决
报错原因
undetected_chromedriver.v2 为了绕过Chrome的反爬指纹检测,对Chrome启动配置做了定制化处理,它的uc.ChromeOptions不支持原生Selenium的add_experimental_option('prefs', xxx)写法,直接传入prefs配置会被识别为非法参数,触发上述报错。
解决方案
你可以直接删除原来把prefs添加到options的代码,在初始化uc.Chrome时通过官方预留的prefs参数传入下载配置即可,修改后的参考代码如下:
import undetected_chromedriver.v2 as uc chrome_options = uc.ChromeOptions() chrome_options.add_argument("--window-size=800,800") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--start-maximized") # 注意原变量名phone number含空格,实际使用请修正为合法变量名,比如phone_number chrome_options.user_data_dir = project_settings.LOCAL_PROFILES_STORAGE_PATH + "\\" + phone_number download_path = "D://driver" preferences = {"download.default_directory": download_path} # 移除原有的 chrome_options.add_experimental_option('prefs', preferences) 行 chrome_options.to_capabilities() chrome_options.add_argument('--no-first-run --no-service-autorun --password-store=basic') chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('--profile-directory=Default') # 初始化uc.Chrome时直接传入prefs参数 return uc.Chrome(options=chrome_options, prefs=preferences)
注意事项
- 请提前手动创建你设置的下载路径
D://driver,如果路径不存在Chrome会自动使用默认下载路径,不会自动创建目标文件夹 - 如果使用自定义的user_data_dir用户配置目录,原有目录里的Chrome下载配置优先级会高于本次传入的prefs,若配置不生效可以先清空原有用户配置目录再测试
- Windows系统下路径写法尽量使用正斜杠
/或者双反斜杠\\,避免单斜杠触发转义导致路径识别错误
内容的提问来源于stack exchange,提问作者Haya ali
相关产品推荐
相关产品推荐

