You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium无头模式访问网站提示Access Denied如何解决

解决方案

核心原因

Access Denied是Chegg的反爬系统识别到了异常访问特征触发的拦截,主要触发点包括:

  1. 你配置的User-Agent版本过于陈旧(Chrome 33为2014年发布的版本,和当前主流浏览器版本偏差极大)
  2. 无头Chrome的默认自动化特征被反爬系统识别
  3. 谷歌云机房IP本身被Chegg标记为非普通用户IP

具体修复步骤

1. 修正基础配置错误

你贴出的代码存在语法问题:User-Agent字符串未闭合、Chrome初始化参数未写全,先修复基础语法问题。

2. 替换为最新的User-Agent

替换为和你服务器上安装的Chrome版本对应的UA,你可以在服务器Chrome地址栏输入chrome://version查看对应UA,示例如下:

user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'

3. 添加反检测启动参数

在原有启动参数基础上添加以下配置,消除自动化特征:

# 移除自动化控制标记
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
# 模拟正常窗口启动
chrome_options.add_argument('--start-maximized')
# 禁用自动化开关标记
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)

4. 移除浏览器webdriver特征

在调用get方法访问页面前,执行以下代码修改浏览器属性:

browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': '''
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
    '''
})

5. 排查IP拦截问题

如果修改上述配置后仍被拦截,先在服务器终端执行curl命令验证IP是否被拉黑:

curl -A "替换为你使用的UA" https://www.chegg.com/auth?action=login

如果curl返回403,说明谷歌云机房IP已被Chegg标记,需要更换为住宅代理IP才能正常访问。

修复后完整参考代码

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# selenium 4+ 版本需要额外导入Service
# from selenium.webdriver.chrome.service import Service

chrome_options = Options()
chrome_options.add_argument('--headless=new') # 采用新版无头模式,兼容性更好
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# 替换为你实际环境对应的User-Agent
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
chrome_options.add_argument(f'user-agent={user_agent}')
# 反检测配置
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
chrome_options.add_argument('--start-maximized')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)

# selenium 4+ 写法
# service = Service(executable_path="/usr/lib/chromium-browser/chromedriver")
# browser = webdriver.Chrome(service=service, options=chrome_options)

# 旧版本selenium写法
browser = webdriver.Chrome(executable_path="/usr/lib/chromium-browser/chromedriver", chrome_options=chrome_options)

# 移除webdriver标记
browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': '''
        Object.defineProperty(navigator, 'webdriver', {
            get: () => undefined
        })
    '''
})

browser.get("https://www.chegg.com/auth?action=login&redirect=https%3A%2F%2Fwww.chegg.com%2F")
print(browser.title)

内容的提问来源于stack exchange,提问作者Jonathan Kho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:21:01