Leo-Lionni / socks5_route

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

socks5_route

此程序可以通过先进的算法为已有socks5代理, 做智能路由(智能分流), 从而可以避免手动配置pac代理清单做静态分流, 静态清单的弊端就是部分网址不在清单中, 无法访问等!

工作原理

有两种模式,动态模式和静态模式,默认使用静态模式,经过测试可能效果更好,至于使用哪一种模式可以修改配置文件的 static_mode,为true时为静态模式

静态模式

1.需要监听一个本地socks5端口, 然后需要在您的系统中配置该代理

2.出口需要指定一个已有的socks5代理, 如v2ray等!

3.一条数据发送到程序坚挺的socks5代理后,进行数据解析

4.通过配置文件给定的dns解析访问的域名,得到的ip如果是大陆ip,则直连,反之代理

5.大陆ip列表每次启动时,从网络更新,如果失败使用本地列表

6.此过程失败使用动态模式建立链接

动态模式

  1. 需要监听一个本地socks5端口, 然后需要在您的系统中配置该代理
  2. 出口需要指定一个已有的socks5代理, 如v2ray等!
  3. 一条数据发送到程序坚挺的socks5代理后,进行数据解析
  4. 尝试先直连目标服务器,如在若干秒内(可配置,默认300ms)有数据返回,则认为可直连,不走代理
  5. 如果在若干秒内(可配置,默认300ms)无数据返回,则创建子线程用于通过代理连接目标服务器
  6. 此时有两条链路同时访问目标服务器,若谁能先返回首帧数据(第一个512kb bytes),便会使另一条链路close (此机制可以在充分利用直连链路的前提下, 测试那条链路速度快,尽可能使用最快的链路)
  7. 当此请求确认链路后,会被记入临时路由表, 针对每个域名连续做两次上面的测试操作, 只有两次结果均为“代理”时,持久化到路由表为“代理” 否则持久化为“直连”到路由表, 值得注意的是域名并非全域名,比如两次请求地址分别是 www.baidu.com, tieba.cn.baidu.com, 只视作一条baidu.com
  8. 持久化到路由表的路由条目并非持久不更新,而是默认30分钟后过期,重新测试

使用方法

修改配置文件后启动

./socks5_route

About


Languages

Language:Python 100.0%