{"id":51864557,"url":"https://github.com/tekintian/adbyby-open","last_synced_at":"2026-07-24T14:01:34.445Z","repository":{"id":327982543,"uuid":"1112860085","full_name":"tekintian/adbyby-open","owner":"tekintian","description":"AdByBy-Open是一个专为嵌入式路由器设计的开源广告过滤代理程序，完全兼容原版AdByBy的所有功能接口。采用C语言精心打造，内存占用极小，运行效率极高，是Padavan、OpenWrt等路由器固件的理想广告拦截插件。","archived":false,"fork":false,"pushed_at":"2025-12-10T14:41:42.000Z","size":218,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-10T23:24:14.298Z","etag":null,"topics":["adbyby","ads","filter","openwrt","padavan","router"],"latest_commit_sha":null,"homepage":"https://dev.tekin.cn","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tekintian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-09T07:42:05.000Z","updated_at":"2025-12-10T14:41:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tekintian/adbyby-open","commit_stats":null,"previous_names":["tekintian/adbyby-open"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tekintian/adbyby-open","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tekintian%2Fadbyby-open","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tekintian%2Fadbyby-open/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tekintian%2Fadbyby-open/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tekintian%2Fadbyby-open/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tekintian","download_url":"https://codeload.github.com/tekintian/adbyby-open/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tekintian%2Fadbyby-open/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35844578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-24T02:00:07.870Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adbyby","ads","filter","openwrt","padavan","router"],"created_at":"2026-07-24T14:01:33.733Z","updated_at":"2026-07-24T14:01:34.435Z","avatar_url":"https://github.com/tekintian.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚫 AdByBy-Open\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub release](https://img.shields.io/github/release/tekintian/adbyby-open.svg)](https://github.com/tekintian/adbyby-open/releases)\n[![GitHub Actions](https://img.shields.io/github/actions/workflow/status/tekintian/adbyby-open/build.yml)](https://github.com/tekintian/adbyby-open/actions)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Platform](https://img.shields.io/badge/Platform-MIPS32-green.svg)](https://github.com/tekintian/padavan)\n[![Size](https://img.shields.io/badge/Size-32KB-brightgreen.svg)]()\n\n**🚀 轻量级开源广告过滤器 - 为路由器而生的智能广告拦截解决方案**\n\n[快速开始](#快速开始) • [安装指南](#安装方法) • [使用文档](#使用方法) • [贡献指南](#开发和贡献)\n\n\u003c/div\u003e\n\n---\n\n## 🎯 项目简介\n\nAdByBy-Open是一个专为嵌入式路由器设计的开源广告过滤代理程序，完全兼容原版AdByBy的所有功能接口。采用C语言精心打造，内存占用极小，运行效率极高，是Padavan、OpenWrt等路由器固件的理想广告拦截插件。\n\n### ✨ 核心特性\n- 🎯 **精准拦截**: 智能识别并过滤网页广告、弹窗、视频广告\n- ⚡ **极速响应**: 代理模式运行，几乎零延迟，不影响上网体验  \n- 💾 **超轻量级**: 仅为32KB的可执行文件，内存占用\u003c1MB\n- 🔧 **即插即用**: 一键安装，自动配置，无需复杂设置\n- 📦 **自动构建**: GitHub Actions自动编译，提供预编译二进制文件\n- 🔄 **持续更新**: 规则库自动更新，应对最新广告形式\n- 🛡️ **隐私保护**: 除广告外不拦截任何正常内容，保护用户隐私\n\n### 🏷️ 关键词\n`广告过滤` `路由器` `Padavan` `开源` `轻量级` `代理` `MIPS` `广告拦截` `网络代理` `嵌入式`\n\n### 🔗 相关项目\n- **K2P路由固件**: https://github.com/tekintian/padavan\n- **工具链**: https://github.com/tekintian/padavan/releases\n\n## 功能特性\n\n- **HTTP代理服务**: 监听8118端口，提供HTTP代理功能\n- **广告过滤**: 基于规则库过滤广告请求\n- **规则管理**: 支持多种类型的过滤规则（简单匹配、域名匹配、通配符等）\n- **实时统计**: 记录过滤统计信息\n- **可配置性**: 支持命令行参数配置\n- **轻量级**: C语言实现，内存占用小\n\n## 编译安装\n\n### 自动编译（推荐）\n\n项目已配置GitHub Actions自动编译，会自动下载交叉编译工具链并构建MIPS版本的可执行文件。\n\n**自动触发条件：**\n- 推送到 `main` 或 `master` 分支\n- 创建 Release\n- 手动触发 Workflow\n\n**获取编译版本：**\n1. 访问项目的 [Actions 页面](https://github.com/用户名/adbyby-open/actions)\n2. 下载最新构建的 `adbyby-open-*.tar.gz` 文件\n3. 解压后直接使用编译好的 `adbyby` 可执行文件\n\n### 本地开发编译（用于测试）\n```bash\ncd src\nmake clean \u0026\u0026 make\n```\n\n### 路由器交叉编译（生产环境）\n\n**重要：** 为了在MIPS架构的路由器上运行，必须使用项目提供的交叉编译工具链进行编译。\n工具链下载地址 https://github.com/tekintian/padavan/releases/download/toolchain/mipsel-linux-musl.tar.xz\n\n```bash\ncd trunk/user/adbyby/src\n\n# 清理之前的编译文件\nmake clean\n\n# 使用路由器工具链编译\nCROSS_COMPILE=/Volumes/csdisk/padavan/toolchain/toolchain-mipsel-darwin_v4.4.x/bin/mipsel-linux-musl- make\n\n# 验证编译结果\nfile adbyby\n# 应该显示：ELF 32-bit LSB executable MIPS MIPS32 rel2 version 1\n```\n\n### 编译工具链说明\n\n- **工具链路径**: `toolchain/toolchain-mipsel-darwin_v4.4.x/`\n- **编译器版本**: GCC 13.2.0\n- **目标架构**: MIPS32 (little-endian)\n- **C库**: musl\n- **交叉编译器**: `mipsel-linux-musl-gcc`\n\n### 编译结果对比\n\n| 特性 | 本地编译 | 交叉编译 |\n|------|----------|----------|\n| **架构** | x86_64 (Darwin) | MIPS32 (路由器) |\n| **兼容性** | 仅开发测试 | 路由器运行 |\n| **文件大小** | ~71KB | ~24KB |\n| **链接库** | libSystem.B.dylib | ld-musl-mipsel.so.1 |\n\n编译完成后会生成`adbyby`可执行文件，可以替换原有的`share/adbyby`文件用于路由器固件。\n\n## 使用方法\n\n### 基本使用\n```bash\n# 默认配置启动（监听8118端口）\n./adbyby\n\n# 指定端口\n./adbyby -p 8118\n\n# 调试模式\n./adbyby -d\n\n# 指定规则文件\n./adbyby -r /path/to/rules.txt\n\n# 前台运行（非守护进程）\n./adbyby --no-daemon\n\n# 显示统计信息\n./adbyby -s\n\n# 显示帮助\n./adbyby -h\n```\n\n### 命令行参数\n- `-p PORT`: 指定监听端口（默认8118）\n- `-d`: 启用调试模式\n- `-r FILE`: 指定规则文件路径\n- `-s`: 显示统计信息并退出\n- `-h`: 显示帮助信息\n- `--no-daemon`: 在前台运行\n\n## 规则格式\n\n规则文件格式：`pattern|type|description`\n\n### 规则类型\n- `0`: 简单字符串匹配\n- `1`: 正则表达式匹配\n- `2`: 域名匹配\n- `3`: URL匹配\n- `4`: 通配符匹配\n\n### 示例规则\n```\n# 简单字符串匹配\ndoubleclick|0|Google DoubleClick广告\nadvertisement|0|通用广告关键词\n\n# 域名匹配\ndoubleclick.net|2|广告域名\ngoogleadservices.com|2|Google广告服务\n\n# 通配符匹配\n*/ad/*|4|广告路径\n*.doubleclick.*|4|DoubleClick通配符\n\n# 带描述的规则\ngoogle-analytics.com|2|Google分析跟踪\nfacebook.com/tr|0|Facebook跟踪像素\n```\n\n## 内置规则\n\n程序内置了常见的广告域名和URL模式：\n- 主要广告服务提供商域名（Google、Facebook、Amazon等）\n- 常见广告路径模式\n- 跟踪和分析服务域名\n\n## 配置文件位置\n\n- 规则文件: `/usr/share/adbyby/data/rules.txt`\n- PID文件: `/var/run/adbyby.pid`\n- 日志输出: 标准输出/系统日志\n\n## 与原版兼容性\n\n本实现与原版adbyby的主要兼容性：\n\n1. **端口兼容**: 默认监听8118端口\n2. **配置兼容**: 读取相同的配置文件路径\n3. **功能兼容**: 提供相同的广告过滤功能\n4. **接口兼容**: 支持相同的启动参数\n\n## 架构说明\n\n```\nadbyby.c          - 主程序入口\nproxy.c/h         - HTTP代理处理\nrules.c/h         - 规则管理引擎\nutils.c/h         - 工具函数\n```\n\n### 主要模块\n\n1. **主程序** (`adbyby.c`): 程序入口、命令行解析、主循环\n2. **代理模块** (`proxy.c`): HTTP请求解析、响应生成\n3. **规则模块** (`rules.c`): 规则加载、匹配、统计\n4. **工具模块** (`utils.c`): 日志、URL解析、字符串处理\n\n## 调试和监控\n\n### 调试模式\n```bash\n./adbyby -d --no-daemon\n```\n\n调试模式会输出详细的请求和匹配信息。\n\n### 统计信息\n```bash\n./adbyby -s\n```\n\n显示规则统计、命中次数等信息。\n\n## 性能优化\n\n- 使用内存池减少内存分配\n- 优化的字符串匹配算法\n- 异步I/O处理（可扩展）\n- 规则缓存机制\n\n## 扩展功能\n\n本版本预留了扩展接口，可以轻松添加：\n- HTTPS代理支持\n- 更复杂的规则引擎\n- Web管理界面\n- 规则自动更新\n- 统计数据持久化\n\n## 注意事项\n\n### 通用注意事项\n1. 需要root权限运行（绑定端口\u003c1024时）\n2. 确保有足够的系统资源\n3. 定期更新规则库以保持过滤效果\n4. 在生产环境建议使用守护进程模式\n\n### 路由器部署注意事项\n1. **架构兼容性**: 必须使用MIPS交叉编译工具链编译\n2. **编译环境**: 使用项目提供的`toolchain-mipsel-darwin_v4.4.x`工具链\n3. **文件路径**: 确保可执行文件放置在`/usr/share/adbyby/`目录\n4. **权限设置**: 确保adbyby文件具有执行权限（chmod +x）\n5. **内存限制**: 路由器内存有限，注意监控内存使用情况\n6. **固件集成**: 编译后需要正确打包到固件镜像中\n\n## 故障排除\n\n### 常见问题\n\n1. **端口被占用**\n   - 检查是否有其他程序占用8118端口\n   - 使用`-p`参数指定其他端口\n\n2. **规则文件不存在**\n   - 程序会自动创建基本规则\n   - 可以手动创建规则文件\n\n3. **权限问题**\n   - 确保有权限读取配置文件\n   - 确保有权限创建PID文件\n\n### 路由器环境问题\n\n4. **架构不兼容**\n   - 现象：程序无法启动，提示\"Exec format error\"\n   - 解决：使用MIPS交叉编译工具链重新编译\n   - 检查：使用`file adbyby`验证是否为ELF 32-bit LSB executable MIPS\n\n5. **链接库缺失**\n   - 现象：程序启动时报错找不到动态链接库\n   - 解决：确保使用musl编译工具链\n   - 检查：链接库应为`/lib/ld-musl-mipsel.so.1`\n\n6. **内存不足**\n   - 现象：程序运行时经常崩溃或被系统杀死\n   - 解决：调整编译优化参数，减少内存使用\n   - 检查：监控路由器内存使用情况\n\n### 日志分析\n\n调试模式下的日志格式：\n```\n[2024-01-10 15:30:45] INFO: Proxy server started on port 8118\n[2024-01-10 15:30:46] DEBUG: Connection from 192.168.1.100:54321\n[2024-01-10 15:30:46] DEBUG: Blocked by rule: doubleclick.net (hits: 1)\n```\n\n## 开发和贡献\n\n欢迎提交Issue和Pull Request来改进这个项目。\n\n### 编译要求\n\n#### 本地开发编译\n- GCC编译器\n- 标准 POSIX 环境\n- Make工具\n\n#### 路由器交叉编译\n- MIPS交叉编译工具链（项目提供）\n- Make工具\n- 兼容的构建环境\n\n**推荐使用项目的交叉编译工具链：**\n```bash\ntoolchain/toolchain-mipsel-darwin_v4.4.x/bin/mipsel-linux-musl-gcc\n```\n\n### 测试\n```bash\nmake debug\n./adbyby -d --no-daemon -p 8888\n```\n\n然后在浏览器中设置代理为`127.0.0.1:8888`进行测试。\n\n\n## GitHub CI/CD\n\n### 工作流程\n\n项目配置了两个主要的GitHub Actions工作流程：\n\n#### 1. 自动构建工作流 (`build.yml`)\n- **触发条件**: 推送到主分支、PR、发布、手动触发\n- **功能**: \n  - 自动下载MIPS交叉编译工具链\n  - 编译生成MIPS架构的adbyby可执行文件\n  - 打包为完整的发布包（包含配置、脚本、文档等）\n  - 创建GitHub Release并上传构建产物\n\n#### 2. 发布工作流 (`release.yml`)\n- **触发条件**: 推送版本标签 (如 `v1.0.0`)\n- **功能**:\n  - 专门用于版本发布\n  - 包含安装脚本和校验和\n  - 生成完整的发布说明\n\n### 使用方法\n\n#### 方法一：下载预编译版本\n```bash\n# 下载最新构建\nwget https://github.com/tekintian/adbyby-open/releases/latest/download/adbyby-open-*.tar.gz\n\n# 或从Actions页面下载\n# https://github.com/tekintian/adbyby-open/actions\n\n# 解压\ntar -xzf adbyby-open-*.tar.gz\ncd adbyby-open/\n\n# 使用自动安装脚本\n./install_adbyby.sh\n```\n\n#### 方法二：手动构建\n```bash\n# 克隆项目\ngit clone https://github.com/tekintian/adbyby-open.git\ncd adbyby-open\n\n# 本地交叉编译\nwget https://github.com/tekintian/padavan/releases/download/toolchain/mipsel-linux-musl.tar.xz\ntar -xf mipsel-linux-musl.tar.xz\nexport CROSS_COMPILE=$PWD/toolchain/bin/mipsel-linux-musl-\nmake clean \u0026\u0026 make compile\n```\n\n### 构建产物\n\n每次构建会生成以下文件：\n- `adbyby-open-mipsel-数字.tar.gz` - 完整的发布包\n  - `bin/adbyby` - 主程序（MIPS架构）\n  - `scripts/` - 安装和配置脚本\n  - `config/` - 配置文件\n  - `share/` - 规则文件和数据\n  - `install_adbyby.sh` - 自动安装脚本\n  - `build_info.txt` - 构建信息\n\n### 版本管理\n\n- **自动版本**: 每次推送到主分支会自动创建版本 `v{构建编号}`\n- **标签版本**: 推送标签如 `v1.0.0` 会创建正式发布版本\n- **校验和**: 每个版本都包含SHA256校验和文件\n\n### 构建环境\n\n- **运行环境**: Ubuntu latest\n- **工具链**: mipsel-linux-musl (自动下载)\n- **编译器**: mipsel-linux-musl-gcc\n- **目标架构**: MIPS32 (little-endian)\n\n## 与我联系\ntekintian@gmail.com\nQQ:932256355","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftekintian%2Fadbyby-open","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftekintian%2Fadbyby-open","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftekintian%2Fadbyby-open/lists"}