白酒清茶无别事
我在等风也等你

shadowsocks原理分析以及App定向免流量原理探讨

    最近这段时间没更新文章,主要时间都用于研究iOS端的Potatso源码了,原项目是用swift写的,本人以OC的语法重新写了一个App。最近难得抽出时间,故写文章记录下所遇到的问题,以及学到的知识。

我将以一个完整的请求方式,详述shadowsocks是如何工作的,具体源码的解析,以后整理再发。

—> 你手机上的网络请求
local–>小火箭,影梭
server–>国外ip的服务端
目标–>访问的地址,如谷歌,脸书

shadowsocks 原理

    shadowsocks分为客户端版和服务器版,通过两端的配合,达到加密通讯的效果,从而使互联网访问更安全,不用担心被第三方窃听。

我们以手机的一个请求示例来说:

  • 当一个App发出网络请求,先是被本地的shadowsocks拦截(影梭或者粉色SSR),通过代理规则判断,是否需要进行代理转发。
  • 如果满足代理转发条件,则将会对请求进行加密(这个加密方式必须提前和服务端商量好协调一致,否则服务器不能解密),然后发送给服务端(通常是国外的服务器),由服务端解密获取真实的目标地址,在进行请求。
  • 服务端在将返回的结果进行加密,传回给客户端(影梭或者粉色SSR)
  • 客户端再进行解密,获取真实的返回信息,给出请求的响应结果

    当然,在iOS系统上,大致逻辑是一样的,只是多了几个细节,后面将会单独写篇文章记录iOS开发的shadowsocks的流程。v2ray 原理其实差不多,只不过在加密方式上,v2ray可以自行开发自己的加密,GFW检测难度上肯定比shadowsocks强点。

各大运营商定向免App流原理探讨

    其实我也只是猜想,如果有不对的地方,欢迎大家指出。

    流量对于各大移动运营商来说,就像自来水一样。你作为一个个体户,少用一点或者多用一点免费流量,对他成本的影响可谓忽略不计。那关于你使用的到底是计费流量还是免费流量,就由移动运营商的那套计费系统说了算。那他到底是如何判断是免费流量还是计费流量呢?

  • 指定服务器免费:比如联通联通手机营业厅,只有真实访问到联通手机营业厅的服务器才可以免流,通过代理IP或者伪装HOST均不算免费流量。局限性太强,就那几台服务器。不能对接CDN。仅适用联通自己业务
  • 指定域名免费:这也就是联通推广各种互联网资费卡,各种App免流的方式。成本低廉,仅仅将合作App的主域名添加到免流量名单即可,开发人员也不需要做别的操作。缺点是容易被滥用,通过shadowsocks加密,伪装下HOST即可免流。
  •  带token验证:这种就是大王卡配合QQ浏览器或者鱼卡配合UC浏览器,当你的访问请求带这种时效性的token之后,所有的网络请求都核算为免费流量,这也是市面上通过QQ浏览器达到全免的原理。优点安全性高,不会被滥用,缺点是需要合作商的App开发者配合开发,另外也不免UDP
  • VPN代理免流:这种就是联通自己推出的流量宝,或者沃商店的免流业务,因为VPN是全局接管手机上的所有网络请求,因此可以达到全局免流的效果,不需要运营商做任何操作,仅需要自己开发完成,技术上来说比前几个方法都要安全,但成本相对高一点。

     shadowsocks不免udp的原因是,socks本身是不支持UDP转发的,如果想支持免UDP,不仅仅得支持UDP转发,还得支持UDP加密之后再转发,也需要伪装HOST才行。目前在iOS平台我还在研究,如果你有好的想法可以留言大家一起讨论。以上都是仅做学习知识记录,如果出错的地方也请大家指出来。不做政治商业讨论。

赞(8) 打赏
未经允许不得转载:十一同学 » shadowsocks原理分析以及App定向免流量原理探讨
分享到: 更多 (0)

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    看完了,的确写的也很通俗易懂。有几个疑问,1 手机上发出请求后被client拦截然后加密数据转发到server,server此时解密 得到原始目的地址再去请求 此时 第三方要窃听 不是仍然是明文的吗?假如是http的话,因为你server已经解密了去请求的 然后在返回给client 虽然client和server之间是加密的 但 这是ss之间的 ss server和目的服务器之间交互还是明文的 是这样吗?2 socks5是支持tcp udp 流量转发的,socks4只支持tcp 不支持udp 3.iOS上有一个软件shadowrocket 这个就是支持udp转发的 至于udp流量有没有加密到不清楚了。4 还有一个疑问就是 shadowsocks在手机上仍然只是一个socks代理工具 虽然是显示VPN这个图标 但是不是所有流量 所有流量 都是走代理出去的呢?反而我还是觉得用openvpn 这种ssl加密类VPN更注意安全一些。

    test3个月前 (04-21)回复
    • ssr主要为了伪装混淆流量标识,让别人区分不出来,openvpn虽然加密了,但流量特征明显,直接阻断你就连不上了

      十一1个月前 (06-05)回复
  2. #2

    大神好~最近也在学习Potatso源码,对于它的加密方式的支持这里,有点没太看明白,请问,如果我这边要做到CTR的加密方式的话,有什么好的办法吗~

    weqeo1个月前 (06-12)回复
    • 这个你需要移植原版SS里面的CTR加密方法到Potatso里面,或者自己更新Potatso里面的SS模块代码

      十一4周前 (06-19)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏