[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 .

  • MJJ 萌新

    支持一下(


  • 前排学习一下

  • 萌新 Banned

    走技术线了

  • 萌新

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

  • 萌新

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

  • 萌新

    跨国家很[censored],建议同地区做这个

  • 萌新

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

广告


赞助商广告

分类

75
Online

5.0k
Users

17.9k
Topics

56.8k
Posts