AdByBy-Open是一个专为嵌入式路由器设计的开源广告过滤代理程序,完全兼容原版AdByBy的所有功能接口。采用C语言精心打造,内存占用极小,运行效率极高,是Padavan、OpenWrt等路由器固件的理想广告拦截插件。
- 🎯 精准拦截: 智能识别并过滤网页广告、弹窗、视频广告
- ⚡ 极速响应: 代理模式运行,几乎零延迟,不影响上网体验
- 💾 超轻量级: 仅为32KB的可执行文件,内存占用<1MB
- 🔧 即插即用: 一键安装,自动配置,无需复杂设置
- 📦 自动构建: GitHub Actions自动编译,提供预编译二进制文件
- 🔄 持续更新: 规则库自动更新,应对最新广告形式
- 🛡️ 隐私保护: 除广告外不拦截任何正常内容,保护用户隐私
广告过滤 路由器 Padavan 开源 轻量级 代理 MIPS 广告拦截 网络代理 嵌入式
- HTTP代理服务: 监听8118端口,提供HTTP代理功能
- 广告过滤: 基于规则库过滤广告请求
- 规则管理: 支持多种类型的过滤规则(简单匹配、域名匹配、通配符等)
- 实时统计: 记录过滤统计信息
- 可配置性: 支持命令行参数配置
- 轻量级: C语言实现,内存占用小
项目已配置GitHub Actions自动编译,会自动下载交叉编译工具链并构建MIPS版本的可执行文件。
自动触发条件:
- 推送到
main或master分支 - 创建 Release
- 手动触发 Workflow
获取编译版本:
- 访问项目的 Actions 页面
- 下载最新构建的
adbyby-open-*.tar.gz文件 - 解压后直接使用编译好的
adbyby可执行文件
cd src
make clean && make重要: 为了在MIPS架构的路由器上运行,必须使用项目提供的交叉编译工具链进行编译。 工具链下载地址 https://github.com/tekintian/padavan/releases/download/toolchain/mipsel-linux-musl.tar.xz
cd trunk/user/adbyby/src
# 清理之前的编译文件
make clean
# 使用路由器工具链编译
CROSS_COMPILE=/Volumes/csdisk/padavan/toolchain/toolchain-mipsel-darwin_v4.4.x/bin/mipsel-linux-musl- make
# 验证编译结果
file adbyby
# 应该显示:ELF 32-bit LSB executable MIPS MIPS32 rel2 version 1- 工具链路径:
toolchain/toolchain-mipsel-darwin_v4.4.x/ - 编译器版本: GCC 13.2.0
- 目标架构: MIPS32 (little-endian)
- C库: musl
- 交叉编译器:
mipsel-linux-musl-gcc
| 特性 | 本地编译 | 交叉编译 |
|---|---|---|
| 架构 | x86_64 (Darwin) | MIPS32 (路由器) |
| 兼容性 | 仅开发测试 | 路由器运行 |
| 文件大小 | ~71KB | ~24KB |
| 链接库 | libSystem.B.dylib | ld-musl-mipsel.so.1 |
编译完成后会生成adbyby可执行文件,可以替换原有的share/adbyby文件用于路由器固件。
# 默认配置启动(监听8118端口)
./adbyby
# 指定端口
./adbyby -p 8118
# 调试模式
./adbyby -d
# 指定规则文件
./adbyby -r /path/to/rules.txt
# 前台运行(非守护进程)
./adbyby --no-daemon
# 显示统计信息
./adbyby -s
# 显示帮助
./adbyby -h-p PORT: 指定监听端口(默认8118)-d: 启用调试模式-r FILE: 指定规则文件路径-s: 显示统计信息并退出-h: 显示帮助信息--no-daemon: 在前台运行
规则文件格式:pattern|type|description
0: 简单字符串匹配1: 正则表达式匹配2: 域名匹配3: URL匹配4: 通配符匹配
# 简单字符串匹配
doubleclick|0|Google DoubleClick广告
advertisement|0|通用广告关键词
# 域名匹配
doubleclick.net|2|广告域名
googleadservices.com|2|Google广告服务
# 通配符匹配
*/ad/*|4|广告路径
*.doubleclick.*|4|DoubleClick通配符
# 带描述的规则
google-analytics.com|2|Google分析跟踪
facebook.com/tr|0|Facebook跟踪像素
程序内置了常见的广告域名和URL模式:
- 主要广告服务提供商域名(Google、Facebook、Amazon等)
- 常见广告路径模式
- 跟踪和分析服务域名
- 规则文件:
/usr/share/adbyby/data/rules.txt - PID文件:
/var/run/adbyby.pid - 日志输出: 标准输出/系统日志
本实现与原版adbyby的主要兼容性:
- 端口兼容: 默认监听8118端口
- 配置兼容: 读取相同的配置文件路径
- 功能兼容: 提供相同的广告过滤功能
- 接口兼容: 支持相同的启动参数
adbyby.c - 主程序入口
proxy.c/h - HTTP代理处理
rules.c/h - 规则管理引擎
utils.c/h - 工具函数
- 主程序 (
adbyby.c): 程序入口、命令行解析、主循环 - 代理模块 (
proxy.c): HTTP请求解析、响应生成 - 规则模块 (
rules.c): 规则加载、匹配、统计 - 工具模块 (
utils.c): 日志、URL解析、字符串处理
./adbyby -d --no-daemon调试模式会输出详细的请求和匹配信息。
./adbyby -s显示规则统计、命中次数等信息。
- 使用内存池减少内存分配
- 优化的字符串匹配算法
- 异步I/O处理(可扩展)
- 规则缓存机制
本版本预留了扩展接口,可以轻松添加:
- HTTPS代理支持
- 更复杂的规则引擎
- Web管理界面
- 规则自动更新
- 统计数据持久化
- 需要root权限运行(绑定端口<1024时)
- 确保有足够的系统资源
- 定期更新规则库以保持过滤效果
- 在生产环境建议使用守护进程模式
- 架构兼容性: 必须使用MIPS交叉编译工具链编译
- 编译环境: 使用项目提供的
toolchain-mipsel-darwin_v4.4.x工具链 - 文件路径: 确保可执行文件放置在
/usr/share/adbyby/目录 - 权限设置: 确保adbyby文件具有执行权限(chmod +x)
- 内存限制: 路由器内存有限,注意监控内存使用情况
- 固件集成: 编译后需要正确打包到固件镜像中
-
端口被占用
- 检查是否有其他程序占用8118端口
- 使用
-p参数指定其他端口
-
规则文件不存在
- 程序会自动创建基本规则
- 可以手动创建规则文件
-
权限问题
- 确保有权限读取配置文件
- 确保有权限创建PID文件
-
架构不兼容
- 现象:程序无法启动,提示"Exec format error"
- 解决:使用MIPS交叉编译工具链重新编译
- 检查:使用
file adbyby验证是否为ELF 32-bit LSB executable MIPS
-
链接库缺失
- 现象:程序启动时报错找不到动态链接库
- 解决:确保使用musl编译工具链
- 检查:链接库应为
/lib/ld-musl-mipsel.so.1
-
内存不足
- 现象:程序运行时经常崩溃或被系统杀死
- 解决:调整编译优化参数,减少内存使用
- 检查:监控路由器内存使用情况
调试模式下的日志格式:
[2024-01-10 15:30:45] INFO: Proxy server started on port 8118
[2024-01-10 15:30:46] DEBUG: Connection from 192.168.1.100:54321
[2024-01-10 15:30:46] DEBUG: Blocked by rule: doubleclick.net (hits: 1)
欢迎提交Issue和Pull Request来改进这个项目。
- GCC编译器
- 标准 POSIX 环境
- Make工具
- MIPS交叉编译工具链(项目提供)
- Make工具
- 兼容的构建环境
推荐使用项目的交叉编译工具链:
toolchain/toolchain-mipsel-darwin_v4.4.x/bin/mipsel-linux-musl-gccmake debug
./adbyby -d --no-daemon -p 8888然后在浏览器中设置代理为127.0.0.1:8888进行测试。
项目配置了两个主要的GitHub Actions工作流程:
- 触发条件: 推送到主分支、PR、发布、手动触发
- 功能:
- 自动下载MIPS交叉编译工具链
- 编译生成MIPS架构的adbyby可执行文件
- 打包为完整的发布包(包含配置、脚本、文档等)
- 创建GitHub Release并上传构建产物
- 触发条件: 推送版本标签 (如
v1.0.0) - 功能:
- 专门用于版本发布
- 包含安装脚本和校验和
- 生成完整的发布说明
# 下载最新构建
wget https://github.com/tekintian/adbyby-open/releases/latest/download/adbyby-open-*.tar.gz
# 或从Actions页面下载
# https://github.com/tekintian/adbyby-open/actions
# 解压
tar -xzf adbyby-open-*.tar.gz
cd adbyby-open/
# 使用自动安装脚本
./install_adbyby.sh# 克隆项目
git clone https://github.com/tekintian/adbyby-open.git
cd adbyby-open
# 本地交叉编译
wget https://github.com/tekintian/padavan/releases/download/toolchain/mipsel-linux-musl.tar.xz
tar -xf mipsel-linux-musl.tar.xz
export CROSS_COMPILE=$PWD/toolchain/bin/mipsel-linux-musl-
make clean && make compile每次构建会生成以下文件:
adbyby-open-mipsel-数字.tar.gz- 完整的发布包bin/adbyby- 主程序(MIPS架构)scripts/- 安装和配置脚本config/- 配置文件share/- 规则文件和数据install_adbyby.sh- 自动安装脚本build_info.txt- 构建信息
- 自动版本: 每次推送到主分支会自动创建版本
v{构建编号} - 标签版本: 推送标签如
v1.0.0会创建正式发布版本 - 校验和: 每个版本都包含SHA256校验和文件
- 运行环境: Ubuntu latest
- 工具链: mipsel-linux-musl (自动下载)
- 编译器: mipsel-linux-musl-gcc
- 目标架构: MIPS32 (little-endian)
tekintian@gmail.com QQ:932256355