基于Privoxy的广告过滤软件的设计与实现
中文摘要 | 第4-5页 |
ABSTRACT | 第5-6页 |
第一章 绪论 | 第11-20页 |
1.1 课题背景 | 第11-18页 |
1.2 课题任务 | 第18页 |
1.2.1 课题内容 | 第18页 |
1.2.2 本人承担任务 | 第18页 |
1.3 论文结构 | 第18-20页 |
第二章 相关技术 | 第20-27页 |
2.1 Privoxy | 第20-23页 |
2.1.1 全局内容过滤 | 第20页 |
2.1.2 兼容性 | 第20页 |
2.1.3 功能列表 | 第20-21页 |
2.1.4 过滤规则 | 第21-22页 |
2.1.5 工作流程 | 第22-23页 |
2.2 DLL注入 | 第23-26页 |
2.2.1 修改注册表注入DLL | 第23-24页 |
2.2.2 创建远程线程注入DLL | 第24-25页 |
2.2.3 利用消息钩子注入DLL | 第25-26页 |
2.3 MinHook API钩子库 | 第26-27页 |
第三章 需求分析 | 第27-38页 |
3.1 同类软件功能分析 | 第27-30页 |
3.1.1 Adblock Plus功能分析 | 第27-29页 |
3.1.2 ADSafe净网大师功能分析 | 第29-30页 |
3.1.3 ADM阿呆喵功能分析 | 第30页 |
3.2 总体需求 | 第30-31页 |
3.3 拦截网页广告 | 第31-33页 |
3.3.1 拦截广告内容请求 | 第32页 |
3.3.2 隐藏广告元素 | 第32页 |
3.3.3 占位符 | 第32-33页 |
3.3.4 自定义拦截元素 | 第33页 |
3.3.5 自定义浏览器列表 | 第33页 |
3.4 拦截客户端弹窗广告 | 第33-35页 |
3.4.1 关闭客户端弹窗 | 第34页 |
3.4.2 隐藏客户端弹窗 | 第34页 |
3.4.3 自定义弹窗规则 | 第34-35页 |
3.4.4 拦截提示 | 第35页 |
3.5 禁止跟踪 | 第35页 |
3.6 禁止恶意网址 | 第35页 |
3.7 黑名单 | 第35页 |
3.8 白名单 | 第35-36页 |
3.9 规则分类订阅 | 第36页 |
3.10 拦截计数 | 第36页 |
3.11 性能需求 | 第36-37页 |
3.12 支持代理 | 第37页 |
3.13 自动更新 | 第37页 |
3.14 安全性需求 | 第37页 |
3.15 界面需求 | 第37-38页 |
3.15.1 网页右键菜单添加过滤规则 | 第37页 |
3.15.2 托盘图标 | 第37-38页 |
第四章 概要设计 | 第38-47页 |
4.1 系统整体结构 | 第38-42页 |
4.1.1 安装卸载模块 | 第38-39页 |
4.1.2 升级模块 | 第39-40页 |
4.1.3 托盘模块 | 第40页 |
4.1.4 拦截模块 | 第40页 |
4.1.5 规则解析模块 | 第40-41页 |
4.1.6 内容过滤模块 | 第41页 |
4.1.7 界面皮肤模块 | 第41页 |
4.1.8 设置模块 | 第41-42页 |
4.1.9 规则订阅模块 | 第42页 |
4.2 广告过滤逻辑结构 | 第42-44页 |
4.2.1 Socket通讯流程 | 第42-43页 |
4.2.2 连接重定向 | 第43-44页 |
4.2.3 DLL注入 | 第44页 |
4.3 数据结构 | 第44-47页 |
4.3.1 配置文件 | 第45页 |
4.3.2 Filter规则文件 | 第45页 |
4.3.3 Action规则文件 | 第45-47页 |
第五章 详细设计 | 第47-54页 |
5.1 安装模块设计 | 第47页 |
5.2 卸载模块设计 | 第47-48页 |
5.3 升级模块设计 | 第48-49页 |
5.4 托盘模块设计 | 第49-50页 |
5.5 拦截模块设计 | 第50页 |
5.6 规则解析模块设计 | 第50-51页 |
5.6.1 配置解析 | 第51页 |
5.6.2 filter规则解析 | 第51页 |
5.6.3 action规则解析 | 第51页 |
5.7 内容过滤模块设计 | 第51-53页 |
5.7.1 绑定IP和监听端口 | 第52页 |
5.7.2 接受连接请求 | 第52页 |
5.7.3 接收客户端请求数据 | 第52页 |
5.7.4 解析过滤客户端请求数据 | 第52页 |
5.7.5 转发数据 | 第52-53页 |
5.7.6 接收过滤服务器端返回数据 | 第53页 |
5.7.7 内容过滤 | 第53页 |
5.8 设置模块设计 | 第53-54页 |
第六章 编码及测试 | 第54-70页 |
6.1 关键代码实现 | 第54-56页 |
6.1.1 拦截模块实现 | 第54-56页 |
6.1.2 DLL注入代码实现 | 第56页 |
6.2 测试环境 | 第56-58页 |
6.2.1 操作系统 | 第57页 |
6.2.2 浏览器 | 第57页 |
6.2.3 网络环境 | 第57页 |
6.2.4 测试网站样本 | 第57-58页 |
6.2.5 测试软件样本 | 第58页 |
6.3 测试方法 | 第58-59页 |
6.4 测试用例 | 第59-68页 |
6.4.1 拦截网页广告测试用例 | 第59页 |
6.4.2 拦截视频广告测试用例 | 第59-60页 |
6.4.3 拦截弹窗广告测试用例 | 第60页 |
6.4.4 占位符测试用例 | 第60-61页 |
6.4.5 自定义拦截元素测试用例 | 第61页 |
6.4.6 自定义浏览器列表测试用例 | 第61-62页 |
6.4.7 自定义弹窗规则测试用例 | 第62页 |
6.4.8 网页广告拦截提示测试用例 | 第62-63页 |
6.4.9 弹窗广告拦截提示测试用例 | 第63页 |
6.4.10 禁止跟踪测试用例 | 第63-64页 |
6.4.11 禁止恶意网址测试用例 | 第64页 |
6.4.12 白名单测试用例 | 第64-65页 |
6.4.13 规则订阅测试用例 | 第65页 |
6.4.14 拦截计数测试用例 | 第65-66页 |
6.4.15 代理服务器测试用例 | 第66页 |
6.4.16 自动更新测试用例 | 第66-67页 |
6.4.17 性能测试用例 | 第67页 |
6.4.18 其他协议测试用例 | 第67页 |
6.4.19 64位测试用例 | 第67-68页 |
6.5 测试结果及分析 | 第68-70页 |
第七章 结语 | 第70-71页 |
参考文献 | 第71-75页 |
发表论文和参加科研情况说明 | 第75-76页 |
致谢 | 第76页 |