ClamAV 是一款开源的防病毒引擎,专为检测恶意软件、病毒、木马、蠕虫等威胁而设计,广泛应用于邮件网关、文件扫描和端点安全等领域。本文将详细介绍如何在 Windows 系统本地部署可视化 ClamAV 并结合路由侠实现外网访问本地部署的 ClamAV 。
第一步,本地部署安装 ClamAV
1,本教程操作环境为 Windows11 系统,访问 ClamAV 官网下载页: https://www.clamav.net/downloads ,选择最新版本的“ Windows ”,本教程选择“ clamav-1.4.2.win.x64.zip ”为例。


2,将压缩包解压到无空格路径,进入解压目录,复制 conf_examples 下的 clamd.conf.sample 和 freshclam.conf.sample 到主目录,分别重命名为 clamd.conf 和 freshclam.conf 。



3,首次运行前打开 freshclam.conf ,取消注释并修改以下行。
DatabaseMirror database.clamav.net UpdateLogFile C:\ClamAV\logs\freshclam.log LogFileMaxSize 2M LogRotate yes LogTime yes DatabaseDirectory C:\ClamAV\db Foreground yes Debug yes
打开 clamd.conf ,取消注释并修改以下行。
LogFile C:\ClamAV\logs\clamd.log LogFileMaxSize 2M LogTime yes LogRotate yes Debug yes LocalSocket C:\ClamAV\clamd.socket TCPSocket 3310 TCPAddr 0.0.0.0 StreamMaxLength 50M
4,以管理员身份打开命令提示符,输入以下命令创建必要目录:
mkdir C:\ClamAV\logs mkdir C:\ClamAV\db
输入以下命令导航到 ClamAV 目录:
cd C:\ClamAV
运行更新病毒数据库:
freshclam.exe
运行守护进程启动 ClamAV 服务:
clamd.exe
5,下载 Python 3.6 + ,点此下载,安装时勾选" Add Python to PATH "。

6,编辑 C:\ClamAV\clamav-rest\requirements.txt 文件,将内容改为:
flask>=3.1.0 pyclamd>=0.4.0
在 cmd 输入以下命令使用清华源安装。
pip install -r C:\ClamAV\clamav-rest\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
7,在 C:\ClamAV\clamav-rest 创建 templates\index.html ,在 script 中输入以下内容。
async function scan() {
const file = document.getElementById('fileInput').files[0];
const formData = new FormData();
formData.append('file', file);
const response = await fetch('/scan', {
method: 'POST',
body: formData
});
document.getElementById('result').textContent = await response.text();
}
同目录下创建 app.py 文件,输入以下内容。
from flask import Flask, request, jsonify,render_template, send_from_directory
import pyclamd
import socket
import os
app = Flask(__name__)
cd = pyclamd.ClamdNetworkSocket('localhost', 3310)
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@app.route('/')
def index():
return render_template('index.html')
def check_clamd():
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
result = sock.connect_ex(('localhost', 3310))
return result == 0
except:
return False
@app.route('/health')
def health():
return jsonify({
"flask_status": "running",
"clamd_connected": check_clamd()
})
@app.route('/scan',methods=['GET', 'POST'])
def scan():
if request.method == 'POST':
if 'file' not in request.files:
return jsonify({"error": "No file uploaded"}), 400
file = request.files['file']
if file.filename == '':
return jsonify({"error": "Empty filename"}), 400
filepath = os.path.join(UPLOAD_FOLDER, file.filename)
file.save(filepath)
return _perform_scan(filepath)
else:
filepath = request.args.get('filepath')
if not filepath:
return jsonify({"error": "Missing filepath parameter"}), 400
return _perform_scan(filepath)
def _perform_scan(filepath):
try:
result = cd.scan_file(filepath)
return jsonify({
"status": "infected" if result else "clean",
"path": filepath,
"result": result
})
except Exception as e:
return jsonify({"error": str(e)}), 500
import atexit
import shutil
def cleanup():
if os.path.exists(UPLOAD_FOLDER):
shutil.rmtree(UPLOAD_FOLDER)
atexit.register(cleanup)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
输入以下命令运行 ClamAV REST API 服务:
python app.py
8,打开浏览器输入地址 http://localhost:5000 即可访问 ClamAV 进行扫描。

第二步,外网访问本地 ClamAV
在内网的电脑上安装路由侠,点此下载
1,下载安装完成后,打开路由侠界面,点击【内网映射】。

2,点击【添加映射】。

3,选择【原生端口】。

4,在内网端口填写 ClamAV 端口 5000 后点击【创建】按钮,如下图。

5,创建好后,就可以看到一条映射的公网地址,鼠标右键点击【复制地址】。

6,在外网电脑上,打开浏览器,在地址栏输入从路由侠生成的外网地址,就可以看到内网部署的 ClamAV 扫描界面了。

以上就是 Windows 系统在本地部署可视化 ClamAV 服务以及利用路由侠的内网穿透平台实现外网访问本地部署的 ClamAV 的全部教程了,如果想要对路由侠有更多的了解,可以进官网详细了解,路由侠官网地址:www.luyouxia.com