使用Selenium Java与ChromeDriver访问网站时遭遇Access Denied权限拒绝问题
解决Selenium ChromeDriver访问网站出现Access Denied的问题
问题描述
使用Selenium搭配Chrome浏览器访问某网站时,持续收到错误提示:
Access Denied You don't have permission to access "website" on this server
常规Chrome浏览器可正常访问该网站,但通过Selenium启动的Chrome实例会触发此错误。相关环境信息:
- Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
- System info: host: 'CHL130688', ip: '10.100.40.93', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '19.0.1'
- Driver info: org.openqa.selenium.chrome.ChromeDriver
解决方法
1. 配置ChromeOptions隐藏自动化特征
网站通常会检测浏览器是否由自动化工具驱动,通过以下参数伪装成正常浏览器:
ChromeOptions options = new ChromeOptions(); // 禁用自动化识别特征 options.addArguments("--disable-blink-features=AutomationControlled"); // 关闭自动化提示条 options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); options.setExperimentalOption("useAutomationExtension", false); // 设置与正常浏览器一致的用户代理(可从Chrome开发者工具的请求头中复制) options.addArguments("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); // 禁用扩展、最大化窗口 options.addArguments("--disable-extensions"); options.addArguments("--start-maximized"); WebDriver driver = new ChromeDriver(options);
2. 匹配ChromeDriver与Chrome浏览器版本
Selenium 3.141.59属于旧版本,必须确保ChromeDriver版本与本地安装的Chrome浏览器主版本号完全一致。比如Chrome版本为118.x,就下载对应版本的ChromeDriver,避免版本不兼容导致的网站识别异常。
3. 加载本地Chrome用户配置文件
直接使用日常访问该网站的Chrome用户数据,让Selenium启动的浏览器继承已有的登录状态和环境:
ChromeOptions options = new ChromeOptions(); // 替换为你的Chrome用户数据路径,Windows下示例:C:\\Users\\你的用户名\\AppData\\Local\\Google\\Chrome\\User Data options.addArguments("user-data-dir=C:\\Users\\XXX\\AppData\\Local\\Google\\Chrome\\User Data"); // 指定使用默认配置文件 options.addArguments("--profile-directory=Default"); WebDriver driver = new ChromeDriver(options);
4. 补充自定义请求头(可选)
如果网站对请求头校验严格,可通过DevTools协议添加额外请求头:
ChromeDriver driver = new ChromeDriver(options); driver.executeCdpCommand("Network.setExtraHTTPHeaders", ImmutableMap.of("headers", ImmutableMap.of("Accept-Language", "zh-CN,zh;q=0.9")));
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

