You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Sophos Intelix与Squid代理集成实现URL分类校验及本地缓存

Squid 集成 Sophos Intelix 实现URL分类过滤配置方案

核心实现逻辑

Squid 本身不直接支持调用第三方URL分类接口,需要通过外部辅助脚本(Helper) 配合 Squid 的 external_acl_type 配置项实现,校验结果的缓存逻辑直接在辅助脚本侧实现即可,不需要依赖 Squid 原生缓存机制。

具体配置步骤

1. 开发 Sophos Intelix 校验辅助脚本

你可以用自己熟悉的语言(Python/Go等)开发常驻脚本,核心逻辑如下:

  • 按 Squid Helper 协议标准,接收 Squid 传入的待校验URL、请求ID等参数
  • 先查询本地缓存(可选内存字典、SQLite、Redis等存储,按需选择),如果存在未过期的校验结果,直接返回 Squid 对应动作(允许/拒绝)
  • 缓存不存在或已过期时,调用你已在使用的 Sophos Intelix 接口获取分类结果,写入缓存并设置过期时长后,再返回对应动作给 Squid
    以下是Python实现的核心参考代码:
import sys
import redis
import requests
# 初始化缓存,示例用Redis存储,过期时长设为86400秒(1天)可自行调整
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
CACHE_EXPIRE = 86400
# 替换为你自己的Sophos Intelix认证信息
CLIENT_ID = "你的Client ID"
CLIENT_SECRET = "你的Client Secret"

def get_sophos_category(url):
    # 直接复用你原有自定义应用中的Sophos Intelix调用逻辑即可
    auth = (CLIENT_ID, CLIENT_SECRET)
    resp = requests.post("你的Sophos Intelix接口地址", auth=auth, json={"url": url})
    if resp.ok:
        return resp.json().get("category", "unknown")
    return "unknown"

if __name__ == "__main__":
    while True:
        # 读取Squid传入的请求
        line = sys.stdin.readline().strip()
        if not line:
            break
        parts = line.split()
        request_id = parts[0]
        url = parts[1]
        # 查询缓存
        cache_key = f"sophos_cat:{url}"
        cached_cat = r.get(cache_key)
        if cached_cat:
            category = cached_cat.decode()
        else:
            category = get_sophos_category(url)
            r.setex(cache_key, CACHE_EXPIRE, category)
        # 自定义过滤规则,示例拦截恶意软件、钓鱼类URL,可按需调整分类列表
        if category in ["Malware", "Phishing"]:
            sys.stdout.write(f"{request_id} ERR\n")
        else:
            sys.stdout.write(f"{request_id} OK\n")
        sys.stdout.flush()

2. Squid 侧配置修改

编辑 Squid 主配置文件(默认路径为 /etc/squid/squid.conf),添加如下配置:

# 定义外部ACL类型,指定辅助脚本路径、并发进程数可根据实际业务量调整
external_acl_type sophos_url_check children-max=10 children-start=2 %DATA %URI /usr/local/bin/sophos_intelix_helper.py
# 绑定ACL规则
acl sophos_allow external sophos_url_check
# 配置访问控制,仅放行校验通过的请求
http_access allow sophos_allow
http_access deny all

3. 生效验证

  • 给辅助脚本添加可执行权限:chmod +x /usr/local/bin/sophos_intelix_helper.py
  • 检查配置语法是否正确:squid -k parse
  • 重载 Squid 配置生效:squid -k reconfigure

优化注意事项

  • 若不需要精确到完整URL校验,可调整缓存维度为域名,减少重复请求量
  • 建议添加错误降级逻辑,Sophos Intelix 接口不可用时直接放行或走默认策略,避免影响代理可用性
  • 高并发场景推荐用Go开发辅助脚本,性能优于Python实现

内容的提问来源于stack exchange,提问作者Chuck Star

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:54:06