webdriver-manager启动Firefox报API限流错误无需GH_TOKEN的解决方法
触发该错误的核心逻辑是:webdriver-manager默认调用GitHub公共API查询匹配当前Firefox版本的最新geckodriver版本,而GitHub对未携带认证token的公共API请求做了速率限制,单IP每小时最多可发起60次请求,超出阈值就会抛出该提示。
YouTube教程里的演示者未碰到该问题,仅因为他们操作时对应网络出口IP的请求量未达到限流阈值,不存在必须配置GH_TOKEN才能运行的强制要求。
方案1:弃用webdriver-manager,使用Selenium内置驱动管理(最推荐)
Selenium 4.6及以上版本已经内置了Selenium Manager工具,会自动匹配、下载、配置对应浏览器版本的驱动,完全不需要额外引入webdriver-manager依赖,从根源上避开GitHub API限流问题。
首先执行命令调整依赖:
pip uninstall webdriver-manager -y pip install --upgrade selenium
之后简化测试代码即可,不需要手动编写驱动安装逻辑:
from selenium import webdriver import time driver = webdriver.Firefox() driver.get("https://google.com") time.sleep(5) driver.quit()
注:原测试代码未导入time模块,即便驱动配置正常也会触发名称错误,上述代码已补全该缺失项。
方案2:固定geckodriver版本,跳过在线版本查询
如果暂时不想升级Selenium版本,可以在调用GeckoDriverManager时明确指定兼容当前Firefox版本的geckodriver版本号,此时webdriver-manager不会发起GitHub API请求查询最新版本,仅会检查本地缓存是否存在对应驱动,不存在时直接下载对应版本文件,不会触发限流。
针对你使用的Firefox 101.0版本,兼容的geckodriver版本为v0.31.0,修改后的代码如下:
from selenium import webdriver from selenium.webdriver.firefox.service import Service from webdriver_manager.firefox import GeckoDriverManager import time driver = webdriver.Firefox( service=Service(GeckoDriverManager(version="v0.31.0").install()) ) driver.get("https://google.com") time.sleep(5) driver.quit()
注意:如果后续升级Firefox版本,需要同步调整传入的version参数为兼容的geckodriver版本号。
方案3:手动管理驱动,完全跳过webdriver-manager联网逻辑
可以彻底弃用webdriver-manager的自动管理能力,手动下载对应版本的geckodriver解压到本地固定路径,代码中直接指定驱动路径即可,全程不会发起GitHub API请求:
from selenium import webdriver from selenium.webdriver.firefox.service import Service import time # 将路径替换为本地geckodriver的实际存放路径 driver = webdriver.Firefox(service=Service("C:/drivers/geckodriver.exe")) driver.get("https://google.com") time.sleep(5) driver.quit()
内容的提问来源于stack exchange,提问作者Zenith_1024

