├── README.md ├── SplitterOmega-1.0.7.zip ├── images ├── AImage_0000.png ├── AImage_0001.png ├── AImage_0002.png ├── AImage_0003.png ├── AImage_F001.png ├── AImage_F002.png └── dns-splitter-v1.png └── wiki └── Privacy.md /README.md: -------------------------------------------------------------------------------- 1 | # DNS-Splitter 2 | ## HTTP代理模式下的DNS分流器 3 | > 当前项目仅提供使用说明与版本下载地址 4 | 5 | 什么是dns-splitter: dns-splitter是一个代理工具,对请求代理实现分流上网功能. 6 | 关键词: 7 | 1. DNS分流 8 | 2. DNS分流器 9 | 3. DNS分流上网 10 | 4. 基于DNS的分流方案 11 | 5. 解决switchhosts分流场景 12 | 6. 自定义DNS分流规则 13 | 14 | * 流程图 15 | > 分流所实现的功能 16 | ![alt text](https://github.com/mycoco/DNS-Splitter/blob/main/images/AImage_F001.png) 17 | 18 | 19 | > 浏览器插件将流量转发到 DNS-Splitter 20 | ![alt text](https://github.com/mycoco/DNS-Splitter/blob/main/images/AImage_F002.png) 21 | 22 | 23 | 24 | 1. 启动 DNS-Splitter / DNS分流器 25 | > 分流列表 26 | 27 | ![alt text](https://github.com/mycoco/DNS-Splitter/blob/main/images/AImage_0002.png) 28 | 29 | 2. 修改或新增DNS分流配置 30 | > 设置【监听端口】 31 | 32 | ![alt text](https://github.com/mycoco/DNS-Splitter/blob/main/images/AImage_0003.png) 33 | 34 | 3. 修改或新增分流规则 35 | > 多个匹配规则,使用分号;或,分隔(英文符号;,) 36 | 37 | ![alt text](https://github.com/mycoco/DNS-Splitter/blob/main/images/dns-splitter-v1.png) 38 | 39 | 4. 浏览器安装 SplitterOmega 代理插件 40 | * 提供3种安装方式 41 | 42 | > a) 谷歌插件应用市场下载 43 | ``` 44 | https://chromewebstore.google.com/detail/splitteromega/ploedkalbbpgnejmmdoejdhjapflbhkd 45 | ``` 46 | 47 | > b) 在设置中,为浏览器初始化代理插件 48 | 49 | ![alt text](https://github.com/mycoco/DNS-Splitter/blob/main/images/AImage_0000.png) 50 | 51 | > c) 手动为浏览器安装压缩包里的crx插件 52 | 53 | 5. 配置【SplitterOmega代理插件】情景模式 54 | > 点击【DNS分流器设置】下的【同步方案】,自动将DNS-Splitter中设置的代理方案同步到浏览器插件.(避免用户关注端口) 55 | 56 | ![alt text](https://github.com/mycoco/DNS-Splitter/blob/main/images/AImage_0001.png) 57 | 58 | 6. 解析域名的规则由 【DNS-Splitter / DNS分流器】接管 59 | > 应用程序可以配置多个分流配置,结合【SplitterOmega代理插件】多个情景模式. 60 | 61 | #### 更新日志 62 | - 1.2.0.4 63 | 1. 修复在方案里面启用禁用规则不生效. 64 | 65 | 66 | - 1.2.0.3 67 | 1. 修复保存配置文件可能不生效. 68 | 2. 设置路由规则,支持dnsmasq-china-list清单(比如非清单内的域名则直接屏蔽). 69 | 3. 浏览器插件升级到1.0.7版本. 70 | 71 | 72 | - 1.2.0.2 73 | 1. 增加https代理的支持. 74 | 2. 增加浏览器启动自动获取dns-splitter的分流方案 75 | 3. 修复splitterOmega插件升级导致分流方案丢失. 76 | 4. 优化分流配置里面的规则按优先级排序. 77 | 78 | 79 | - 1.2.0.1 80 | 1. 支持用户自定义规则列表 81 | 2. 支持用户设置规则的优先级 82 | 3. 支持设置走系统dns 83 | 4. 支持设置是否为黑名单,匹配后则丢弃请求 84 | 5. 区分chrome与edge的crx 85 | 6. 兼容1.0版本的配置文件 86 | 87 | 88 | - 1.0.2.3 89 | 1. 增加[复制方案]功能 90 | 2. 优化为浏览器初始化SplitterOmega插件. 91 | 3. 升级浏览器插件,移除默认proxy代理方案. 92 | 93 | - 1.0.2.2 94 | 1. 增加浏览器插件:SplitterOmega. 95 | 2. 程序为chrome与edge安装浏览器插件. 96 | 3. 方便通过浏览器插件获取DNS分流方案. 97 | 98 | - 1.0.2.1 99 | 1. 增加SplitterHosts用于与浏览器通讯使用 100 | 101 | 102 | - 1.0.2.0 103 | 1. 编辑[方案]后,勾选[启用]后,则需要开启监听模式. 104 | 2. 设置中新增[内存优化]选项,用于优化进程内存耗用. 105 | 106 | 107 | - 1.0.1.9 108 | 1. 修复大文件传输中断问题. 109 | 2. 启用状态的方案,在删除的时候强制停止. 110 | 3. 界面显示当前连接数. 111 | 4. 右键菜单增加[停止所有] 112 | 5. 调整[连接列表]显示内容. 113 | 114 | 115 | - 1.0.1.8 116 | 1. 将dll组件打包到exe内部. 117 | 2. [粘贴方案]之后,如果规则为[启用]状态,且端口未占用,则启动监听. 118 | 119 | - 1.0.1.7 120 | 1. 修复内存泄露. 121 | 2. 增加显示连接列表,展示当前建立的连接信息. 122 | 123 | - 1.0.1.6 124 | 1. 方案列表,右键菜单增加[复制方案列表][粘贴方案列表]功能,方便将选中的方案一次性复制出来,应用到其他主机。 125 | 126 | - 1.0.1.5 127 | 1. 屏蔽F1快捷键,可能系统F1是截图功能. 128 | 129 | - 1.0.1.4 130 | 1. 增加设置[允许保存日志],将请求日志写入本地磁盘文件,取消需要重启应用程序. 131 | 2. 增加设置[启用调试模式],将记录更多日志. 132 | 133 | - 1.0.1.3 134 | 1. 优化任务栏右下角,鼠标[右键]弹出后失去焦点自动关闭菜单. 135 | 136 | - 1.0.1.2 137 | 1. 增加默认公网dns. 138 | 2. 优化界面突出模式: [DNS分流]与[TCP转发]. 139 | 140 | - 1.0.1.1 141 | 1. 支持TCP端口转发. 142 | 143 | - 1.0.1.0 144 | 1. 支持多语言切换 (简体中文/英文). 145 | 146 | - 1.0.0.9 147 | 1. 修复线程与内存泄露. 148 | 149 | - 1.0.0.8 150 | 1. 优化系统explorer进程崩溃的情况,状态栏右下角图标丢失. 151 | 152 | - 1.0.0.7 153 | 1. 优化编译组件dll的参数,提升性能. 154 | 155 | - 1.0.0.6 156 | 1. 增加参数设置 [规则未匹配,则使用操作系统的DNS解析], 未勾选的情况下如果未匹配规则,则直接终止解析与请求. 157 | 158 | - 1.0.0.5 159 | 1. 支持按规则指定dns解析域名. 160 | 2. 支持按规则指定DoH解析域名. 161 | 3. 支持按规则使用HTTP代理. 162 | 4. 支持设置开机启动. 163 | 5. 支持为浏览器初始化 ZeroOmega 扩展插件. 164 | 165 | - 1.0.0.2 166 | 1. 修复ip映射关系解析规则. 167 | 168 | - 1.0.0.1 169 | 1. 初始化版本. 170 | 171 | 172 | #### 解析规则 173 | 1. 首先,查询域名与ip映射关系 174 | - 1.查找 单个域名与ip的匹配 175 | - 2.根据 模糊匹配进行查找 176 | 2. 其次,根据匹配条件,使用指定DNS进行解析 177 | 3. 最后,使用操作系统的DNS进行解析 178 | 179 | 180 | #### 分流列表 181 | > 可以配置多条解析规则,使用不同的【监听端口】来隔离 182 | 183 | #### 分流配置 184 | 1. 方案名称, 用于区分规则名称 185 | 2. 监听端口, 用于隔离浏览接管 186 | 3. 域名IP映射关系, 可以实现ip与域名直接映射 187 | > 类似修改操作系统的 hosts 文件 188 | 4. 指定DNS解析 189 | > 在[域名与IP映射关系]中未找到域名对应的IP后则使用指定DNS来解析 190 | * 匹配条件, * 所匹配的域名将使用 [指定DNS] 进行解析, 191 | - 匹配条件[*],代表所有域名 192 | - 匹配条件[*abc001.com],代表所有abc001.com域名 193 | - 匹配条件[*abc001.com;*abc002.com],代表所有abc001.com以及abc002.com域名 194 | 如果不满足匹配条件的,则使用操作系统的默认DNS进行解析 195 | 196 | 197 | #### 域名IP映射关系 规则说明 198 | 199 | 1. 注释行 200 | ``` 201 | #这是注释 202 | 192.168.100.51 www.abc001.com #行内尾部写注释 203 | ``` 204 | 205 | 2. 单个域名与ip匹配 206 | > 解析 www.abc111.com 的 ip 为 192.168.100.51 207 | ``` 208 | 192.168.100.51 www.abc111.com 209 | ``` 210 | 211 | 3. 多个域名与ip匹配, 多个域名之间使用分号或逗号分隔 212 | > 解析 www.abc111.com 和 www.abc112.com 的 ip 为 192.168.100.51 213 | ``` 214 | 192.168.100.51 www.abc111.com;www.abc112.com 215 | ``` 216 | 217 | 3. 单个模糊匹配 218 | > 所有 abc112.com 后缀域名的 ip 为 192.168.100.52 219 | ``` 220 | 192.168.100.52 *abc112.com 221 | ``` 222 | 223 | 4. 多个模糊匹配, 多个匹配规则使用分号或逗号分隔 224 | > 所有 abc112.com 和 abc113.com 后缀域名的 ip 为 192.168.100.52 225 | ``` 226 | 192.168.100.52 *abc112.com;*abc113.com 227 | ``` 228 | 229 | #### DNS列表 230 | > 可以预设多条DNS服务器地址 231 | 232 | #### 关于 233 | 234 | 235 | 236 | -------------------------------------------------------------------------------- /SplitterOmega-1.0.7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/SplitterOmega-1.0.7.zip -------------------------------------------------------------------------------- /images/AImage_0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/images/AImage_0000.png -------------------------------------------------------------------------------- /images/AImage_0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/images/AImage_0001.png -------------------------------------------------------------------------------- /images/AImage_0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/images/AImage_0002.png -------------------------------------------------------------------------------- /images/AImage_0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/images/AImage_0003.png -------------------------------------------------------------------------------- /images/AImage_F001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/images/AImage_F001.png -------------------------------------------------------------------------------- /images/AImage_F002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/images/AImage_F002.png -------------------------------------------------------------------------------- /images/dns-splitter-v1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mycoco/DNS-Splitter/5ec7690faf9d82620f31276c116423fe3d84f8f0/images/dns-splitter-v1.png -------------------------------------------------------------------------------- /wiki/Privacy.md: -------------------------------------------------------------------------------- 1 | English 2 | ------- 3 | 4 | SwitchyOmega is free software. We care about your privacy as much as you do. We don't share your data with anyone except for options syncing purposes. All user data usages are listed below. 5 | 6 | You don't have to trust me for this. Feel free to [read the source code](https://github.com/FelisCatus/SwitchyOmega) to see what exactly SwitchyOmega does, or consult an expert on this. 7 | 8 | ### Proxy 9 | 10 | SwitchyOmega does not implement any proxy protocol. Instead, SwitchyOmega tells the browser about the proxy to use for each request and let the browser do its job. We don't modify any web request or response in any way. We don't insert ads or other scripts into pages. We promise that we won't send your request to any other server. 11 | 12 | SwitchyOmega does not provide proxy servers. We have no control over proxy servers you configure. It is your sole responsibility to ensure that those proxies are reliable. SwitchyOmega cannot prevent proxy servers from tracking you, inserting ads into web pages or doing other harm to you. Please contact your network operator or proxy server operator and check their privacy policy for proxy usage. 13 | 14 | ### Syncing 15 | 16 | SwitchyOmega allows you to synchronize options across devices. Syncing is optional and can be disabled at any time at `Options > Import/Export > Syncing`. 17 | 18 | Syncing service is provided by [Chrome Sync](https://support.google.com/chrome/answer/165139?hl=en) which uploads data to Google. Chrome Sync also requires you to [sign in to Chrome](https://www.google.com/chrome/browser/signin.html), but SwitchyOmega does not have access to your account information during the process. Please check [Google Privacy Policy](https://www.google.com/policies/privacy/) on this. 19 | 20 | ### Web Request Monitoring 21 | 22 | SwitchyOmega optionally allows you to show failed resources for each tab. If enabled in `Options > General > Network Requests`, SwitchyOmega will track web requests that fail to load and summarize them by tab and then domain and display them on extension badge and popup menu. The information is only processed shortly in memory for the sole purpose of this feature. We do not store web browsing activity locally or upload them to a remote server. 23 | 24 | 中文 25 | ---- 26 | 27 | SwitchyOmega 是自由软件。我们尊重您的隐私权。除了选项同步功能以外,我们不会将您的数据提供给任何人。以下列出了所有 SwitchyOmega 使用数据的方式。 28 | 29 | 当然,您不必听信我们的一家之言。您可以通过[阅读源代码](https://github.com/FelisCatus/SwitchyOmega)来了解 SwitchyOmega 的具体行为,或者咨询该方面的专业人士。 30 | 31 | ### 代理服务器 32 | 33 | SwitchyOmega 不实现任何代理协议。 SwitchyOmega 只告知浏览器对于每个请求应该使用什么代理,然后让浏览器自行完成工作。我们不以任何形式修改网络请求和响应,也不会将请求发往您未设置的服务器。我们不在网页中插入任何广告或其他脚本。 34 | 35 | SwitchyOmega 不提供任何代理服务器,也无法控制您设置的任何代理服务器。保证远程代理的可靠和安全是您自身的责任。 SwitchyOmega 无法阻止代理服务器跟踪您、在您的页面插入广告或者进行其他对您有害的行为。关于代理服务器本身的隐私政策,请咨询您的网络管理员或者代理服务器管理员。 36 | 37 | ### 同步 38 | 39 | SwitchyOmega 允许您在不同设备之间同步选项。同步是可选功能,且随时可以在`选项 > 导入/导出 > 同步`中关闭。 40 | 41 | 同步服务由 [Chrome Sync](https://support.google.com/chrome/answer/165139?hl=zh-Hans) 提供,而此服务会上传数据到谷歌。 Chrome Sync 需要您[登录 Chrome](https://support.google.com/chrome/answer/185277?hl=zh-Hans),但此过程中 SwitchyOmega 无法获取您的账户信息。关于数据同步服务,请查看[谷歌隐私政策](https://www.google.com/intl/zh-CN/policies/privacy/)。 42 | 43 | ### 网络请求检测 44 | 45 | SwitchyOmega 允许您启用显示每个标签页未加载资源的功能。如果在`选项 > 通用 > 网络请求`中启用了此功能, SwitchyOmega 会统计加载失败的网络请求,并按照标签页和域名总计后,显示在图标数字角标和弹出菜单中供您查看。请求信息只在内存中进行短暂的处理,且只用于此功能的正常使用。我们不会将网络浏览行为信息储存在本地或上传至服务器。 --------------------------------------------------------------------------------