什么是免流
“免流”通常是指在移动网络中使用特定的应用或服务而不消耗用户的数据流量,即上网不要钱。通常由移动运营商或特定的应用提供商推出,旨在吸引更多用户使用这些应用或服务。
免流的基本原理
上述的免流通常局限于某些应用,我们所聊的免流是不限于特定应用的免流,通过特定手段欺骗运营商的计费系统达到免费的目的。
首先我们要了解运营商的计费系统是如何工作的
访问正常网站:
访问正常网站
访问免流网站:
访问免流网站
免流的核心原理就是让计费系统以为用户在访问免流网站,但实际上却访问了正常网站
免流的核心原理
免流的几种方式
本地免流
本地免流是在用户手机上运行一个代理程序对所有数据包进行修改,从而欺骗计费系统
本地免流
请求头中有两个关键字段 Host 和 X-Online-Host。 假设计费系统是通过检测 http 数据包中的 Host 字段进行计费,代理服务器通过 http 数据包中的 X-Online-Host 进行实际数据访问,则可以通过修改 http headers 中的 Host 字段即可达到欺骗计费系统的目的。
运营商也不是傻子,对检测系统进行了更新,上述手段就失效了,后来各大网友开始了和运营商的斗志斗勇
- 有插入两个 Host 字段的双 h 模式,让计费系统查看第一个 Host 字段,让代理服务器查看第二个 Host 字段
- 也有插入两个 X-Online-Host 的双 x 模式
- 伪首模式
- 伪彩模式
- .....
本地免流优点是不需要额外的资源,在用户本地手机即可实现,主要利用的是运营商计费系统和代理服务器系统的实现差异;缺点是各地运营商的系统差异不一致,在上海能免的模式在广东并不一定通用,并且可利用修改的地方有限,所有模式被封禁后就无法使用了
本地免流最大的问题是因为当时运营商账单具有滞后性,当你之前使用的免流模式被修复后,流量已经开始正常计费,你却全然不知,第二天早上起来发现收到了 10086 的巨额账单
定向免流
2015 开始,国家要求三大运营商提速降费,漫游费逐渐被取消,流量都是全国通用,费用也越来越低,但流量费用还没低到可以任意挥霍的程度。
针对有些人喜欢看抖音,有些人喜欢看腾讯视频,三大运营商纷纷推出了定向流量卡,常见的有腾讯王卡,阿里宝卡等。 定向流量卡是针对某些互联网服务在通用流量之外给予大额的定向流量,比如腾讯王卡允许腾讯系应用免费使用最多 40G 流量。
针对有些人喜欢看抖音,有些人喜欢看腾讯视频,三大运营商纷纷推出了定向流量卡,常见的有腾讯王卡,阿里宝卡等。
定向流量卡是针对某些互联网服务在通用流量之外给予大额的定向流量,比如腾讯王卡允许腾讯系应用免费使用最多 40G 流量。
定向转换
云端免流(云免)
本地免流利用了计费系统和代理服务器之间的差异,后续差异被不断补全(感谢各大网友自费做 QA),甚至后来运营商取消了代理服务器,直接使用计费系统进行互联网访问,本地免流就此绝迹。 后面常用的一般都是云端免流,这是现在的主流免流方式。
云端免流的原理需要一点网络协议的基础知识,了解 tcp/ip 的工作原理
ip
现有互联网是基于 tcp/ip 为架构组成的,计算机之间的通信并不是基于域名而是基于 ip 协议。
ip 协议可以理解为是计算机中的电话号码,比如我们想要联系张三的时候,我们可以通过输入张三的电话号码 123456 拨打电话联系到他
dns
但目前我们访问网站的时候是通过输入域名,为什么计算机之间的通信却基于 ip 协议?他们之间是如何转换的?
这就是 dns 所做的事情。 因为 ip 地址不易于记忆以及输入,所以域名被发明出来简化输入,相当于是电话号码的联系人名称,比如我们通常在电话薄里面保存张三的电话号码为 123456,张三就相当于是域名,123456 是 ip,我们想要联系张三的时候只需要在电话薄里面搜索 ‘张三’,而不是输入 123456
dns 的作用就是查询电话薄,比如我想要访问 google.com 的时候,计算机并不知道应该如何访问到 google.com,所以它需要去向电话薄查询 (dns query) google.com 的电话 (ip)
dns
http
http 协议是普通人最常见的互联网协议,是互联网的基石,我们常见的所有应用几乎都是使用 http 协议进行通信。
http 协议请求结构如下
在本地免流中,我们采用的是修改 Host 字段绕过计费系统。 在云端免流中,采用的方式其实也类似,区别其实是在于绕过计费系统之后如何访问正确的目标网站?
思路其实很简单,既然本地免流由于运营商的代理服务器和计费系统合并而被彻底修复,那我们如果能够自己实现一个代理服务器不就和之前的方式类似了吗?
云免
云免原理
具体是将原始请求封装到 http body 中并发送给代理服务器,代理服务器解析 http body 之后还原原始请求并进行实际请求
云免原理
即
云免原理
直连免流
定向免流还有一种免流方式,不需要云端服务器。 有些定向卡是允许免去某个应用的所有流量而不是某个特定域名的流量,比如腾讯王卡可以免去 qq 浏览器的所有流量,原理是在该应用中内置一个代理服务器,代理服务器产生的流量被运营商计入定向流量。
直连免流就是通过抓包获取应用内置的代理服务器并将其用于所有应用访问。
不过因为现在代理服务器都增加了动态验证,基本都失效了。
停机免流
电信会在用户停机之后给用户开通一个花费充值的绿色通道,这样即使你停机之后仍然能够通过访问网络缴存话费。所以和定向免流类似,停机免流的实现原理也是通过将 Host 改为绿通的网址就能实现免流了。
对于停机用户来说,每个月只需要缴纳停机保号费用(通常5元)即可实现无限流量。不过电信随即采取了相应的策略,大部分地区对停机用户的上网速度施加了限制,毕竟你充个话费要那么快干嘛。
免流的局限性
因为运营商的计费系统如何工作其实是一个黑盒,外界很难得知什么时候工作机制就发生了变化,比如除了检查 host 字段,计费系统也可以检查端口。互联网的流量通常使用的都是 80/443,所以云端服务器的端口通常必须使用 80/443。
为了实现免流必须使用全局代理,也就是不管国内还是国外流量均需通过云端服务器进行代理