如何在Robot Framework中用Selenium库火狐浏览器绕过GitLab访问前的浏览器检测
解决方案
1. 修正Firefox偏好配置(优先尝试)
你之前的配置错误在于布尔类型的偏好值传入了字符串格式,且缺少必要的反检测参数,替换为如下配置即可覆盖绝大多数检测场景:
*** Settings *** Library SeleniumLibrary *** Test Cases *** 访问GitLab并下载指定文件 # 初始化Firefox配置对象 ${ff_options}= Evaluate sys.modules['selenium.webdriver'].FirefoxOptions() sys, selenium.webdriver # 禁用webdriver特征标记 Call Method ${ff_options} add_preference dom.webdriver.enabled ${False} Call Method ${ff_options} add_preference useAutomationExtension ${False} # 移除自动化控制标识 Call Method ${ff_options} add_argument --disable-blink-features=AutomationControlled # 伪造正常用户的User-Agent,不要使用geckodriver默认UA Call Method ${ff_options} add_preference general.useragent.override Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0 # 禁用沙箱(Linux服务器环境可选添加) Call Method ${ff_options} add_argument --no-sandbox Call Method ${ff_options} add_argument --disable-dev-shm-usage # 基于自定义配置启动浏览器 Open Browser browser=firefox options=${ff_options} # 访问前清除所有残留Cookie避免触发风控 Delete All Cookies Go To ${UrlGitLab} # 等待检测页面加载完成 Wait Until Page Contains Checking your browser before accessing gitlab.com timeout=10s # 等待检测通过,最长等待15秒 Wait Until Page Does Not Contain Checking your browser before accessing gitlab.com timeout=15s # 此处添加后续下载文件的业务逻辑
2. 结合undetected-geckodriver实现强绕过
如果上述基础配置仍然无法通过检测,可使用专门针对Firefox的反检测驱动生成实例后挂载到SeleniumLibrary使用:
- 先安装依赖包:
pip install undetected-geckodriver - 替换启动浏览器的代码为以下内容:
*** Settings *** Library SeleniumLibrary *** Test Cases *** 使用反检测驱动访问GitLab # 生成已绕过特征检测的Firefox驱动实例 ${driver}= Evaluate undetected_geckodriver.Geckodriver() undetected_geckodriver # 将驱动挂载到当前SeleniumLibrary实例 Register Driver To Running Browser ${driver} firefox Go To ${UrlGitLab} # 后续业务逻辑
3. 额外注意事项
- 不要使用Firefox无头模式,无头模式下的特征标记极易被识别,服务器无图形界面环境可配合xvfb创建虚拟显示运行有头浏览器
- 同一IP短时间内不要多次重复请求GitLab地址,可在访问前添加3-5秒的随机延迟降低风控等级
- 若访问的是企业私有部署的GitLab,可联系运维将脚本运行的服务器IP加入站点安全检测白名单,可直接跳过所有检测步骤,是稳定性最高的方案
- 下载文件可优先调用GitLab公开API获取下载链接,配合RequestsLibrary直接下载,无需模拟页面点击操作,可进一步降低被检测概率
内容的提问来源于stack exchange,提问作者StackLloyd
相关产品推荐
相关产品推荐

