免流常见原理

1、修改HTTP连接header:
这里需要了解运营商如何分辨手机走的流量是否为免流流量,目前采用的多是检查HTTP header,查看是否是指定的Host、UA等,具体免流方法为将手机流量中,每一个HTTP请求中,均加入能够免流的Host、UA、或者其他一些免流参数即可.

2、指定端口免流:
这个是比较早期的免流方法,目前在大多数地区均不可用,原理为使用ss、***等工具,通过指定的端口,如137/138/139等端口,即可免流.

注:此方法中使用的免流代码已失效

实战

1、找到一款能够免流量费用的软件(直接使用即可免流量或者开通指定套餐免流量均可),或者网址.
我这里找到的是咪咕音乐
介绍中写了有免流量,实际测试发现确实是免流量的.

2、抓取数据包,打开咪咕音乐,播放音乐,使用wi.cap进行抓包,结果如图所示.

可以看到有Host、Accept、User-Agent、Connection、imei、imsi等header.

3、使用可以手工构造HTTP header的,类似于HTTP/HTTPS协议的***软件,如open***、***等,这里我使用的是***.
搭建***服务器,搭建时注意ss服务器端口和咪咕音乐服务器端口一致,这里是80端口,协议选择auth_sha1,混淆方式使用http_simple.
这里我使用了一段网上搭建***的脚本,可以直接wget http://***.ximcx.cn/×××/××× & bash ×××使用.
脚本内容为

#! /bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#=================================================================#
#   System Required:  CentOS 6,7, Debian, Ubuntu                   #
#   Description: One click Install ShadowsocksR Server              #
#   Author: 91yun                                                              #
#   Thanks: @breakwa11 <https://twitter.com/breakwa11>       #
#   Thanks: @Teddysun <i@teddysun.com>                            #
#   Intro:  https://shadowsocks.be/9.html                              #
#=================================================================#
rm -f ×××
clear
yum -y install git
echo -e "\033[34m================================================================\033[0m\033[31m                欢迎使用×××免流Or×××一键脚本                         \033[0m\033[31m         妖火网论坛:http://yaohuo.me,I'M 西门吹雪             \033[0m\033[31m           即将开始搭建...   非妖火论坛妖友使用死全家                  \033[0m
\033[34m================================================================\033[0m";
echoecho#Current folder
cur_dir=`pwd`
# Get public IP address
IP=$(ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^192\.168|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-2]\.|^10\.|^127\.|^255\.|^0\." | head -n 1)
if [[ "$IP" = "" ]]; thenIP=$(wget -qO- -t1 -T2 ipv4.icanhazip.com)
fi# Make sure only root can run our script
function rootness(){if [[ $EUID -ne 0 ]]; thenecho "Error:This script must be run as root!" 1>&2exit 1fi
}# Check OS
function checkos(){if [ -f /etc/redhat-release ];thenOS='CentOS'elif [ ! -z "`cat /etc/issue | grep bian`" ];thenOS='Debian'elif [ ! -z "`cat /etc/issue | grep Ubuntu`" ];thenOS='Ubuntu'elseecho "Not support OS, Please reinstall OS and retry!"exit 1fi
}# Get version
function getversion(){if [[ -s /etc/redhat-release ]];thengrep -oE  "[0-9.]+" /etc/redhat-releaseelse    grep -oE  "[0-9.]+" /etc/issuefi
}# CentOS version
function centosversion(){local code=$1local version="`getversion`"local main_ver=${version%%.*}if [ $main_ver == $code ];thenreturn 0elsereturn 1fi
}# Disable selinux
function disable_selinux(){
if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; thensed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configsetenforce 0
fi
}# Pre-installation settings
function pre_install(){# Not support CentOS 5if centosversion 5; thenecho "Not support CentOS 5, please change OS to CentOS 6+/Debian 7+/Ubuntu 12+ and retry."exit 1fi# Set ShadowsocksR config passwordecho "请输入×××连接密码:"read -p "(默认密码: yaohuo520):" shadowsockspwd[ -z "$shadowsockspwd" ] && shadowsockspwd="yaohuo520"echoecho "---------------------------"echo "password = $shadowsockspwd"echo "---------------------------"echo# Set ShadowsocksR config portwhile truedoecho -e "请输入×××连接端口,不设置将默认138端口:"read -p "(默认自动设置SS免流端口为138):" shadowsocksport[ -z "$shadowsocksport" ] && shadowsocksport="138"expr $shadowsocksport + 0 &>/dev/nullif [ $? -eq 0 ]; thenif [ $shadowsocksport -ge 1 ] && [ $shadowsocksport -le 65535 ]; thenechoecho "---------------------------"echo "port = $shadowsocksport"echo "---------------------------"echobreakelseecho "输入错误,请输入1-65535之间的数字!"fielseecho "输入错误,请输入1-65535之间的数字!"fidoneget_char(){SAVEDSTTY=`stty -g`stty -echostty cbreakdd if=/dev/tty bs=1 count=1 2> /dev/nullstty -rawstty echostty $SAVEDSTTY}echoecho "Press any key to start...or Press Ctrl+C to cancel"char=`get_char`# Install necessary dependenciesif [ "$OS" == 'CentOS' ]; thenyum install -y wget unzip openssl-devel gcc swig python python-devel python-setuptools autoconf libtool libevent git ntpdateyum install -y m2crypto automake make curl curl-devel zlib-devel perl perl-devel cpio expat-devel gettext-develelseapt-get -y updateapt-get -y install python python-dev python-pip python-m2crypto curl wget unzip gcc swig automake make perl cpio build-essential git ntpdateficd $cur_dir
}# Download files
function download_files(){# Download libsodium fileif ! wget --no-check-certificate -O libsodium-1.0.10.tar.gz https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz; thenecho "Failed to download libsodium file!"exit 1fi# Download ShadowsocksR file# if ! wget --no-check-certificate -O manyuser.zip https://github.com/breakwa11/shadowsocks/archive/manyuser.zip; then# echo "Failed to download ShadowsocksR file!"# exit 1# fi# Download ShadowsocksR chkconfig fileif [ "$OS" == 'CentOS' ]; thenif ! wget --no-check-certificate https://raw.githubusercontent.com/91yun/shadowsocks_install/master/shadowsocksR -O /etc/init.d/shadowsocks; thenecho "Failed to download ShadowsocksR chkconfig file!"exit 1fielseif ! wget --no-check-certificate https://raw.githubusercontent.com/91yun/shadowsocks_install/master/shadowsocksR-debian -O /etc/init.d/shadowsocks; thenecho "Failed to download ShadowsocksR chkconfig file!"exit 1fifi
}# firewall set
function firewall_set(){echo "firewall set start..."if centosversion 6; then/etc/init.d/iptables status > /dev/null 2>&1if [ $? -eq 0 ]; theniptables -L -n | grep '${shadowsocksport}' | grep 'ACCEPT' > /dev/null 2>&1if [ $? -ne 0 ]; theniptables -I INPUT -m state --state NEW -m tcp -p tcp --dport ${shadowsocksport} -j ACCEPTiptables -I INPUT -m state --state NEW -m udp -p udp --dport ${shadowsocksport} -j ACCEPT/etc/init.d/iptables save/etc/init.d/iptables restartelseecho "port ${shadowsocksport} has been set up."fielseecho "WARNING: iptables looks like shutdown or not installed, please manually set it if necessary."fielif centosversion 7; thensystemctl status firewalld > /dev/null 2>&1if [ $? -eq 0 ];thenfirewall-cmd --permanent --zone=public --add-port=${shadowsocksport}/tcpfirewall-cmd --permanent --zone=public --add-port=${shadowsocksport}/udpfirewall-cmd --reloadelseecho "Firewalld looks like not running, try to start..."systemctl start firewalldif [ $? -eq 0 ];thenfirewall-cmd --permanent --zone=public --add-port=${shadowsocksport}/tcpfirewall-cmd --permanent --zone=public --add-port=${shadowsocksport}/udpfirewall-cmd --reloadelseecho "WARNING: Try to start firewalld failed. please enable port ${shadowsocksport} manually if necessary."fififiecho "firewall set completed..."
}# Config ShadowsocksR
function config_shadowsocks(){cat > /etc/shadowsocks.json<<-EOF
{"server": "0.0.0.0","server_ipv6": "::","server_port": ${shadowsocksport},"local_address": "127.0.0.1","local_port": 1081,"password": "${shadowsockspwd}","timeout": 120,"udp_timeout": 60,"method": "chacha20","protocol": "auth_sha1_compatible","protocol_param": "","obfs": "http_simple_compatible","obfs_param": "","dns_ipv6": false,"connect_verbose_info": 0,"redirect": "","fast_open": false,"workers": 1}
EOF
}# Install ShadowsocksR
function install_ss(){# Install libsodiumtar zxf libsodium-1.0.10.tar.gzcd $cur_dir/libsodium-1.0.10./configure && make && make installecho "/usr/local/lib" > /etc/ld.so.conf.d/local.confldconfig# Install ShadowsocksRcd $cur_dir# unzip -q manyuser.zip# mv shadowsocks-manyuser/shadowsocks /usr/local/git clone -b manyuser https://github.com/breakwa11/shadowsocks.git /usr/local/shadowsocksif [ -f /usr/local/shadowsocks/server.py ]; thenchmod +x /etc/init.d/shadowsocks# Add run on system start upif [ "$OS" == 'CentOS' ]; thenchkconfig --add shadowsockschkconfig shadowsocks onelseupdate-rc.d -f shadowsocks defaultsfi# Run ShadowsocksR in the background/etc/init.d/shadowsocks startclearechoecho "恭喜你,shadowsocksr安装完成!"echo -e "服务器IP: \033[41;37m ${IP} \033[0m"echo -e "远程连接端口: \033[41;37m ${shadowsocksport} \033[0m"echo -e "远程连接密码: \033[41;37m ${shadowsockspwd} \033[0m"echo -e "本地监听IP: \033[41;37m 127.0.0.1 \033[0m"echo -e "本地监听端口: \033[41;37m 1080 \033[0m"echo -e "认证方式: \033[41;37m auth_sha1 \033[0m"echo -e "协议: \033[41;37m http_simple \033[0m"echo -e "加密方式: \033[41;37m chacha20 \033[0m"echoecho "欢迎来访妖火论坛:http://yaohuo.me Or https://yaohw.com"echo "如果你想改变认证方式和协议,请参考网址"echo "https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup"echoecho "安装完毕!去享受这种愉悦感把!I'm your old friend 西门吹雪"echoelseecho "Shadowsocks安装失败!"install_cleanupexit 1fi
}#改成北京时间
function check_datetime(){rm -rf /etc/localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtimentpdate 1.cn.pool.ntp.org
}# Install cleanup
function install_cleanup(){cd $cur_dirrm -f manyuser.ziprm -rf shadowsocks-manyuserrm -f libsodium-1.0.10.tar.gzrm -rf libsodium-1.0.10
}# Uninstall ShadowsocksR
function uninstall_shadowsocks(){printf "你确定卸载shadowsocksr? (y/n) "printf "\n"read -p "(Default: n):" answerif [ -z $answer ]; thenanswer="n"fiif [ "$answer" = "y" ]; then/etc/init.d/shadowsocks status > /dev/null 2>&1if [ $? -eq 0 ]; then/etc/init.d/shadowsocks stopficheckosif [ "$OS" == 'CentOS' ]; thenchkconfig --del shadowsockselseupdate-rc.d -f shadowsocks removefirm -f /etc/shadowsocks.jsonrm -f /etc/init.d/shadowsocksrm -rf /usr/local/shadowsocksecho "ShadowsocksR uninstall success!"elseecho "uninstall cancelled, Nothing to do"fi
}# Install ShadowsocksR
function install_shadowsocks(){checkosrootnessdisable_selinuxpre_installdownload_filesconfig_shadowsocksinstall_ssif [ "$OS" == 'CentOS' ]; thenfirewall_set > /dev/null 2>&1ficheck_datetimeinstall_cleanup}# Initialization step
action=$1
[ -z $1 ] && action=install
case "$action" in
install)install_shadowsocks;;
uninstall)uninstall_shadowsocks;;
*)echo "Arguments error! [${action} ]"echo "Usage: `basename $0` {install|uninstall}";;
esac

4、搭建好后在手机端进行设置.
如图:

使用的混淆代码如下

freetyst.mll.migu.cn\r\nAccept: */*\r\nUser-Agent: migumusic\r\nConnection: close\r\nimei: 000000000000000000\r\nimsi: 00000000000000000000

使用open***的话,免流代码如下

http-proxy-option EXT1 "GET http://migumovie.lovev.com"
http-proxy-option EXT1 "Host: freetyst.mll.migu.cn"
http-proxy-option EXT1 "Accept: */*"
http-proxy-option EXT1 "User-Agent: migumusic"
http-proxy-option EXT1 "Connection: close"
http-proxy 10.0.0.172 80

最后的10.0.0.172 80是移动的HTTP代理服务器,也可以自己搭建HTTP代理服务器,然后修改10.0.0.172为自己的代理服务器

5、手机上开启ss,抓包查看

总结

这里免流的核心其实就是找到一个移动运营商允许的可以免流量使用的软件
而手机流量通过移动运行商时,移动运行商会检查数据包中有没有不收取流量的数据包
检查方法基本是使用的HTTP header中的关键字
因此,只需要找到检测的关键字,把手机上发出的每一个数据包都带上这个关键字,就可以免流了
同理,如果需要手机开热点出来给电脑用,也是一样的,只要发出的数据包带有这个关键字,就能免流
以上方法为HTTP协议的免流,如果发现某个软件使用的tcp等协议,也可以分析包里的特征,实现免流
如果使用的免流服务器为国外的服务器,当流量太大时,可能会被gfw干掉,另外据说有人使用国外服务器免流,被运营商发现过,真伪未知

转载于:https://blog.51cto.com/wangzhiqiang/1872304

深入分析免流(非小白教程)相关推荐

  1. php抓包腾讯大王卡token,【搬砖教程】腾讯大王卡动态免流抓包教程 有链接

    另一个帖子有如何用tiny开热点哦! 帖子有不足之处,会不停改进,希望实时查看 教程有没有root都可以的 首先感谢流星,这些都是流星教的,现在传播回来,为流星做贡献.再者,希望看懂的都能够回复下,毕 ...

  2. 手机免流开热点教程(ROOT版)

    免流是永恒话题,很多人手机免流了不知道怎么给共享给其他设备使用,今天就给大家介绍ROOT版的共享方法,当然很多人都不知道如何免流,无为云免软件在这方面比较给力,有兴趣的搜一下 本教程仅适合已经ROOT ...

  3. 最近很火的斗鱼大王卡动态线路免流系统搭建教程联通电信必免

    介绍: 使用方法 搭建程序后进入-线路管理-线路配置-填入上方的接口,具体看教程 然后安装斗鱼线路链接就行了 程序搭建教程:https://www.lanzous.com/i6j4fsh 用的SaoM ...

  4. [原创]插卡路由器对接openwrt对接国内节点 手机免流通过USB口共享流量给路由器教程

    前言:hello 大家好 今天给大家带来一期无脑且没用的教程 本文主讲路由器如何刷机openwrt以及对接V2ray进行免流 1.准备工作 [我会详细解析什么路由器比较好且给出所需要的固件] 1.准备 ...

  5. 腾讯云免流搭建教程免流服务…

    原文地址:腾讯云免流搭建教程免流服务器搭建教程流控搭建自动安装作者:免流搭建-免流服务器搭建 看本教程前先确保你的服务器上已经用最新适配centos7.0的一键脚本搭建了云免服务器 推荐使用 阿里云或 ...

  6. 关于免流搭建教程免流服务内容

    原文地址:腾讯云免流搭建教程免流服务器搭建教程流控搭建自动安装 作者:免流搭建-免流服务器搭建 看本教程前先确保你的服务器上已经用最新适配centos7.0的一键脚本搭建了云免服务器 推荐使用 阿里云 ...

  7. autojs零基础入门视频教程,跟我学Auto.js Pro安卓免ROOT引流脚本开发教程,飞云脚本学院2019最新录制

    课程大纲(更新中-) 基础课程 [已完成]01安装Visual Studio Code(时长9分33秒)在线观看 [已完成]02安装Auto.js Pro(时长5分48秒)在线观看 [已完成]03解读 ...

  8. 苹果php免流量,曲线救国,不越狱iphone实现热点共享Mac电脑(win同理)上网免流教程。不收费,勿喷。...

    本帖最后由 治国 于 2016-10-27 02:55 编辑 我们知道路由器架设Openvirtual**后,可以实现手机免流,但是,如果你的手机未越狱,不通过插件的话,你把手机热点共享给电脑使用,那 ...

  9. java免流_java免流制作教程

    java免流制作教程 (2013-05-18 20:04:26) 分类: 手机 java免流制作教程[转帖]-阅(198) [时间]:2013-5-10 17:08:00 [版块]:免流技术 ---- ...

  10. 免流教程知识 联通不免终极方法

    在使用免流前,先打开联通app或电信apo,查询自己的通用流量和下面的免流流量分别是多少,然后开启免流软件使用一段时间的流量,再去联通app里查流量,如果自己的流量没有扣,且免流流量里的手厅直播的流量 ...

最新文章

  1. “时隔 10 年,重新开始写代码的我要崩溃了!”
  2. 【神奇的函数式编程语言的独特功能】Lisp 的运行期修改、编译代码,并替换当前运行版本的试验...
  3. 多客户端异步通讯框架
  4. 工业级PoE交换机的分类知识详解
  5. orCAD使用Orcad Capture CIS按Room摆放
  6. PhpStorm 配置debug断点调试
  7. android 中 DOM解析xml
  8. VB获得磁盘的文件系统
  9. mysql5.7 gtid问题_MySQL 5.7.5: 新语法WAIT_FOR_EXECUTED_GTID_SET 及存在的问题-阿里云开发者社区...
  10. 数据挖掘之apriori算法(python实现详细注释)
  11. 差分编码 matlab,差分编码FSK调制解调matlab源程序.doc
  12. JAVA开发常见单词(*)
  13. 计算机上怎么带源地址ping,如何带源地址ping
  14. html画圆中有个正方形,Adobe Illustrator CS6中绘画圆形及正方形的操作使用方法
  15. 本文为转载-------Web常使用的功能经验笔记第1季 -转载自刘岩
  16. 950个织梦网dede模板源码
  17. 【图文并茂】一文讲透Dubbo负载均衡之最小活跃数算法
  18. 云服务ftp服务器搭建_在阿里云服务器搭建FTP服务器,在本地电脑连接并操作
  19. iOS开发——App集成短信验证码
  20. Linux中的各种锁及其基本原理

热门文章

  1. 新手学java用什么电脑?需要安装什么软件
  2. IOS 微信端 视频自动播放问题解决方法
  3. 55400-73-2,Ms-PEG5-Ms含有两个甲磺酸基部分的PEG连接物
  4. ddl是什么意思网络语_跟随你大学的流行词语 DDL 你竟还不知道?
  5. 失眠的岁月,我们都交了哪些科技智商税?
  6. 香港中文大学计算机系直博面试经验
  7. 踩坑记32 vue3 拖拽边缘调整侧边栏宽度 拖拽条组件 宽度限制
  8. PS长投影文字制作教程
  9. Android使用自带的文件管理器选择文件并读取内容
  10. 计算机网络--哈工大网课--MOOC中国大学 慕课 答案