使用Apache2部署Django时出现fake_useragent数据加载错误如何解决?
问题根因
这个报错和Django本身、Apache mod_wsgi部署逻辑没有直接关联,核心是你项目依赖的fake_useragent0.1.11版本的官方数据源页面结构发生了变更,导致库自带的解析规则失效,无法正常拉取浏览器UA数据。
两种运行方式表现不同的原因也很明确:你本地用runserver启动项目时,fake_useragent已经在你的个人用户目录下缓存了之前拉取成功的UA数据,不需要重新请求远端接口,所以不会触发报错;而Apache mod_wsgi运行时的进程身份通常是www-data,和你启动runserver的用户身份不同,无法读取个人用户目录下的缓存文件,所以会重新发起拉取请求,触发解析错误。
解决方法
方法1:升级fake_useragent到最新版本
旧版本0.1.11已经停止维护,官方新版已经修复了数据源解析问题,直接在你的虚拟环境中执行升级命令即可:pip install -U fake-useragent
升级完成后重启Apache服务即可生效。方法2:手动指定本地UA缓存文件(适合无法升级依赖版本的场景)
你可以提前从正常运行的环境中导出UA缓存数据,保存为JSON文件,在代码中初始化fake_useragent时直接指定本地缓存路径即可:
from fake_useragent import UserAgent ua = UserAgent(path='/var/www/common_res/fake_useragent.json')
注意要给Apache运行身份www-data开放这个缓存文件的读取权限。
- 方法3:临时禁用SSL校验(不推荐长期使用)
部分场景下添加关闭校验的参数即可绕过拉取失败问题:
ua = UserAgent(verify_ssl=False)
内容的提问来源于stack exchange,提问作者Navid777
相关产品推荐
相关产品推荐

