[Drcai's Noob Guide] 第一期-变废为宝篇:SNIPROXY 做到单节点解锁 NetFlix 等一切 OTT 服务(全文转载)

全文转自 91云BBS

背景

  • 好久没有发骚操作指南了 - -!!
    原因 : 太骚的操作自己也驾驭不了 , 比较骚的操作新手驾驭不了 …
    那么这次肯定是非常简单的操作咯 , 不要有压力 , 先来了解一下这个教程的目的 .

  • 很多萌豚为了躺在沙发上看4K版 NETFLIX 选择了 小米盒子S国际版 …FIRETV …等一系列 认证盒子…
    入坑仿佛开启了新的世界 , 发掘不仅有 Netflix 还要看 FOX …HBO …HULU…ABEMA …BBC …ITV …SLINGTV …DIRECTV…HAMI VIDEO …LITV …

  • 这些OTT 服务平台来自不同的国家 , 只用单个服务器IP 似乎无法一次性全部解锁 .每次换应用的时候都得去切一下服务器节点…
    能不能一次性看爆 ???

解决方案

方案有2个 :

传统方案:路由器上装DNSMASQ , 把不同平台的域名发配到不同的SNIPROXY 上

  • 缺点:
1 HTTPS协议 443端口 容易被证书阻断 Connection Reset Happened - -!!!
2 每个OTT平台都需要配一条"优质高速"线路 Wallet Expooooosion Happened - -!!!
3 你要自定义非常多的DNSMASQ规则 , 大多数ATV认证盒子连激活和界面都得反代 .....
4 很快IP就会被墙的 - - 总觉得你的荷包又要爆炸一次 - -!!!

改良方案

Step1:用一台线路好的VPS做SS/SSR服务端 . 一台可以解锁 OTT平台的渣VPS 做SNIPROXY. 
Step2:修改代码, 利用 SS/SSR服务端 读取SNIPROXY的数据. 
Step3:直接在ATV盒子上安装SSR客户端安卓版/使用ss-redir脚本制作透明代理网关.
  • 简单易懂的原理介绍
    在第一步,我们安装了 SNIPROXY (反代) 和 DNSMASQ (相当于Windows的修改Host) 一体化环境 .
    那么在SS/SSR服务端 我们利用这个分流脚本 ,把不同的域名 分配到 不同的自建DNSMASQ服务上 .
    那台VPS的DNSMASQ会把OTT平台的域名使用本机的SNIPROXY进行反代…
    最后,相当于你的 SS/SSR 服务端在把你的SNIPROXY当作一个网站在访问 - - 这样应该能理解 ??

  • 缺点:

1 流量开支 x2 , 所以请发挥想象力合理分配你的VPS - -!
  • 优点:
1 速度快不断流 , 所有的OTT流量转发都交给了你接入用的VPS...
2 OTT平台解锁可以用被墙 VPS ....到国内网络绕地球的超级廉价货 ...
3 IP 还是有机会被墙 , 但是每次只墙一个 - -! 这个真的算优点么 - -??

=================分割线====================

改良方案教程

  • 既然改良还是有那么多优点…那就果断进入实施阶段 :

1st - 你需要建一坨可以看OTT平台的 SNIPROXY

  • 渣渣新说到: 求推荐VPS !
    本菜鸡的建议 : 垃圾ONEVPS , 垃圾AWS LIGHTSAIL 新加坡 , 这种IP秒墙线路又渣,流量便宜,但自身素质(国际线路速度 , 硬件稳定性)良好的KVM VPS即可…
  • 准备好后看这里 : https://github.com/ab77/netflix-proxy
    根据说明一键安装 . 这是一个 SNIPROXY + DNS 服务器一体的脚本

注意:
1 这个脚本会自动设置IPTABLES ,请保持 SSH 端口为 22 .完成后人工调整 …
2 ~/netflix-proxy/auth 目录下运行 ./admin-reset.sh 重设WEB界面管理密码
3 访问 http://ip:8080 使用admin账号登陆 , 把SSR 服务端所在VPS 的 IP 加入白名单 !!

  • 添加更加多的转发域名(已自带 netflix 和 bbc 等等 😞
    来到 ~/netflix-proxy/ 目录 编辑 dnsmasq.conf

  • 以Sling TV的域名为例增加:

address=/sling.com/公网IP
address=/movetv.com/公网IP
  • 记得不但要增加网站的根域名,CDN视频服务器的域名别忘记加进去, 大部分的CDN服务器都会封IP 不用侥幸…
    修改完成后 docker restart dnsmasq 生效.

####2nd - 在你的"优质"VPS上配好 SS/SSR服务端

(以下最简单易懂的 Pyhton 版服务端为例 , SS和SSR服务端在这一步操作上没有任何区别 .)

  • 接下来我们要稍微修改一下代码, 利用SSR服务端自带的 DNS 分流功能 .

---- 不要害怕,我PYTHON ,PHP 都没学过…没有让你原创, 修改代码凭感觉来就可以了 !!

  • 打开服务端根目录 , 编辑 /shadowsocks/asyncdns.py 440行左右的代码 ,
    先找到 def _send_req(self, hostname, qtype):,接下来我示范修改一段代码供参考.
def _send_req(self, hostname, qtype):
        req = build_request(hostname, qtype)
        for server in self._servers:
            logging.debug('resolving %s with type %d using server %s',
                          hostname, qtype, server)
            if "netflix" in hostname or "nflx" in hostname:
                self._sock.sendto(req, ('解锁NF用的SNIPROXY IP', 53))
            elif "sling" in hostname or "movetv" in hostname:
                self._sock.sendto(req, ('解锁SLING用的SNIPROXY IP', 53))
            else :
                self._sock.sendto(req, server)
  • 还要找到 def handle_event(self, sock, fd, event): 整段修改
def handle_event(self, sock, fd, event):
        if sock != self._sock:
            return
        if event & eventloop.POLL_ERR:
            logging.error('dns socket err')
            self._loop.remove(self._sock)
            self._sock.close()
            # TODO when dns server is IPv6
            self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM,
                                       socket.SOL_UDP)
            self._sock.setblocking(False)
            self._loop.add(self._sock, eventloop.POLL_IN, self)
        else:
            data, addr = sock.recvfrom(1024)
            self._handle_data(data)

以上代码来自 : https://github.com/iv8/ssr-mu/blob/master/shadowsocks/asyncdns.py

  • 新手语法注意:

1 SS/SSR服务端的域名转发比DNSMASQ更简单 . 以 netflix.com 为例 - -你只用写 if "netflix" in hostname ,那么包含 netflix 字符的域名都会适配这条规则 , 不用写成 “netflix.com” .
2 同一条规则适配多个域名 当中用 or 来间隔 …
3 适配另外一个网站比如示范中的 sling tv , 另起一行用 elif 来表达 …之后你比如想再来个bbc 继续是用 elif … 千万别一路上全部是 if , 最后剩下来的规则 用 else - -!!

3rd - 利用一键脚本建立基于 SS/SSR的透明网关 或 直接运行安卓版SSR客户端

  • 你需要一台 X64 或者性能强劲ARM 实体机…当然开一台HYPER-V虚拟机之类的也没问题 …
  • 然后看这里 https://github.com/zfl9/ss-tproxy
  • 新手指南在这里 https://www.zfl9.com/ss-redir.html
  • 你所需要的模式为 : chnroute . 也就是一切海外流量走代理 .
  • 最后把你的电视盒子设置为静态 IP , 网关 和 DNS 全部填写成那台透明网关的 …

说到这里 有睿智的人要跳出来了 : 我直接在电视盒子上装一个 安卓版的 SSR客户端不就好了 ?
一般电视盒的CPU性能运行 SSR安卓版后 1080P 能流畅的看 , 4K 要流畅的看恐怕要加钱 …
NVIDIA SHIELD TV 的性能可以做到 …
有的人只追求1080P … 所以, 这一步想偷懒的人请直接在盒子内安装SSR 安卓版即可 …

完成 , 开始享受人生 ~

PS:
1 请发挥你的创造能力 , 此教程不光适用于TV盒子 , 可以套用在任何需要 单IP接入 自动分配到其它IP的应用环境上 , 比如各种手机应用 , 凡是不方便切换代理节点的都可以参考这套方案.
2 Netflix 认证电视盒子推荐: 入门级 - FireTV stick(1080p)/FireTV stick 4K , 中档 - 小米盒子 S 国际版 , 高级 - Nvidia Sheild TV .千万不要买 ROKU ,那是工业垃圾 !!! 千万不要手贱去ROOT ,这样 google DRM L1认证就掉到 L3了 …Netflix 盒子版无法运行 只能重新刷机拯救了 …
3 以上教程中本人自己采用的三合一解锁方案 : 接入用VPS采用香港Softlayer (自带 HBO 和 FOX+ 解锁属性) , 新加坡 AWS Lightsail 作为 Sniproxy 解锁 Netflix , 美国旧金山 Digital Ocean 作为Sniproxy 解锁 Sling TV .

工具人

前排学习一下

走技术线了

前段时间拿临时邮箱注册的奇点云居然可以看网飞 还是很舒服的 不过网站好像跑路了 小鸡还活着~ 当然饭桶晚上还是炸的跟shit一样…

@me 这家好像听过一次,最开始是哪儿发的?

工具人

跨国家很卡,建议同地区做这个

@Leonn https://t.me/liyuans/24922 你发过的2333333 反正免费 又拿的临时邮箱注册的 啥也不怕~