PyInstaller等工具打包Python程序被Edge、Chrome误报病毒如何解决
Python打包可执行文件被浏览器报毒解决方案
这一问题的根源是PyInstaller、Nuitka等Python打包工具的默认引导程序被大量恶意软件使用,已经被Edge、Chrome内置的安全模块加入特征匹配库,和你的脚本代码本身无关,所以哪怕是你提供的Hello World测试脚本打包后也会触发误报。不管是PyInstaller、Pyarmor还是Nuitka,只要依赖Python打包的默认引导程序,都会触发这个问题。
具体可按照以下步骤逐步排查解决:
- 自行编译PyInstaller引导加载程序:注意不是编译PyInstaller本体,是单独编译其bootloader组件。先安装Visual Studio的C++桌面开发 workload,拉取PyInstaller官方源码后进入
bootloader目录,执行python waf all完成编译,将生成的对应架构的run.exe文件替换你本地Python环境中site-packages/PyInstaller/bootloader/对应系统架构目录下的同名文件,再重新打包即可清除默认特征标记,可解决90%以上的误报问题。 - 调整打包参数:不要使用
--onefile单文件打包参数,改用--onedir目录模式打包,单文件打包的特征识别度更高,误报概率远高于目录打包。如果需要单文件分发,可以用Inno Setup等安装包制作工具把生成的目录打包成常规安装包,安装包的误报概率极低。 - 给可执行文件添加数字签名:个人使用可以生成自签名证书给exe签名,能大幅降低误报概率;如果是公开分发可以申请OV或者EV代码签名证书,EV签名的可执行文件几乎不会触发浏览器和杀毒软件的误报。
- 加密压缩后分发:将打包好的文件用加密压缩包(比如带密码的zip)打包后再发布,浏览器不会扫描加密压缩包的内部内容,不会触发下载拦截,用户下载后输入发布页公示的密码解压即可使用。
- 提交误报申诉:如果处理后仍然有少量安全厂商拦截,可以到对应厂商的误报提交页面上传你的可执行文件,审核通过后会从病毒库中移除相关特征,后续不会再被拦截。
内容的提问来源于stack exchange,提问作者max.syntax
相关产品推荐
相关产品推荐

