探索未知,记录点滴

使用Netflix-proxy搭建奈飞中转代理

Spread the love

19.5.22更新:恰逢anynode用car绝赞迁移机房,迁移开机之后发现代理存在异常,遂reinstall。不料Netflix-proxy作者在最新发行中挖了一个坑,新版build.sh体验极差。于是我找到了之前的版本并fork,在正文中分享给大家。

顺带介绍一个看到的新项目:传送门,非docker版,本人没有尝试过,但是原理和操作和以下类似。

 

一周之前我买了一台anynode的服务器,从此可以享受观看奈飞的快乐了。但是问题也随之出现了:晚高峰的时候anynode网速太慢,以至于不能流畅加载低清画质的奈飞视频。所以我想到能不能用我其他的服务器做一个中转,从而实现流畅观看奈飞。之前就听说github有一个著名的奈飞代理项目,用的是dns代理,现在可以去试一试了~

交流群:Newlearnerの水群

《使用Netflix-proxy搭建奈飞中转代理》

准备工作和注意点

该项目用到了DNS劫持 和 SNI代理。将Netflix的查询请求劫持到中转服务器的IP上,之后通过中转服务器监听443端口的 SNI代理 ,将你的观看请求通过中转服务器处理后发送给Netflix服务器。  中转服务器使用SNI代理 ,因此也不会被判断成使用Proxy。

首先我们需要一台能看奈飞的小鸡,否则此代理无效。假设能看奈飞的服务器是小鸡A,中转的服务器是小鸡B。我们需要在小鸡A上面搭建一个tcp反向代理,并能够劫持小鸡B的DNS解析到小鸡A上面。

所以我们需要的工具大概有:

How to prepare

  • 服务器两个,其中一个可以解锁Netflix
  • SNIProxy,HTTPS代理
  • Dnsmasq,搭建DNS server
  • Caddy,单纯搭建管理web用

说明了原理之后,需要注意的事情有:

  • 配置好小鸡A之后需要在小鸡B上面修改服务器DNS为小鸡A的ip,以便在小鸡A上解析DNS
  • 使用该代理观看Netflix的时候,小鸡A小鸡B同时消耗流量
  • 你要看奈飞->向b🐔发起请求->b🐔检测到你要请求奈飞->向a🐔请求->a🐔向奈飞请求数据并反代到b🐔->b🐔将数据回传->你看到奈飞

部署

开源地址:Netflix-proxy

该项目用dokcer打包好了我们需要的各组件,十分方便,免去了各种配置的苦恼。当然信不过的也可以参考其中的build.sh源码自行安装并配置。该项目也支持ipv6和ddns动态域名。

特别注意的是,该项目的配置只反代Netflix等流媒体视频网站,不会因为你使用小鸡B(中转服务器)查看其他网页而消耗小鸡A多余的流量。

  • 服务器A(可看奈飞)

新版(若安装失败请看fork的旧版)For Debian or Ubuntu:

旧版(本人fork)For Debian or Ubuntu:

⚠️新版主要是buil.sh中的一行命令:apt install python3.6,导致python环境部署失败,详情可见netflix-proxy.log。 实际上我是很想吐槽下的,但是该项目并没有开放issue,因此在这里和大家分享避免跳坑,也希望作者能够尽快意识到这一问题。

输入之后回车,等待docker的部署,部署完成之后出现下图所示文字:

《使用Netflix-proxy搭建奈飞中转代理》

可以看到生成了一个登陆网址用户名密码,用记事本保存。接着登录网页:

《使用Netflix-proxy搭建奈飞中转代理》

登陆之后点击「Add IP」,添加小鸡B的ip(ipv4/6均可),这样我们就完成了小鸡A的配置。

对于部署的docker容器的运行情况,我们可以使用docker ps -a来查看。

如果在安装Python过程中遇到了locale issues,输入以下命令:

  • 服务器B(中转)

修改/etc/resolv.conf文件,将nameserver改为小鸡A的ip。但是这个方法有弊端,用DHCP的服务器会不定期重置DNS,导致奈飞代理失效。下面给出几种解决的思路:

1、在服务器的其他地方保存resolv.conf文件的一个副本(假设放在/root),设置一个crontab定时命令cp /root/resolv.conf /etc/resolv.conf

2、添加写保护:chattr +i /etc/resolv.conf

3、修改生成resolv.conf的相关配置文件,具体可以谷歌。譬如centos7中需要修改/etc/NetworkManager/NetworkManager.conf

到此Netflix代理全部部署完毕,这时连接服务器B,享受高速的解锁奈飞体验。

局限性

1、受众局限性:在很多人看来做奈飞中转是脱裤子放屁,对该代理的作用认识不够。该代理实现的效果是:一台服务器能看奈飞,手里每台服务器都能看奈飞,即使能看奈飞的服务器到国内几乎没有网速。

2、部分用户使用路由器等搭建透明代理,且设置了DNS在本地解析,而不是远端(小鸡B)解析。这就导致DNS劫持失败,无法观看奈飞。

3、默认部署好该代理之后,debian9下面测试得出「其他代理均失效」的情况,表现为tcping+端口显示closed。原因我没有去深挖,毕竟只用来做一个代理服务器,用docker部署ss/v2即可完美解决该问题。需要用到80、443端口建站的朋友慎用。如果对docker熟悉的朋友有其他解决的办法,欢迎在下面留言。

 

参考文章:Netflix-proxy

  1. oylw说道:

    请问博主知道AWS怎么安装Netflix-proxy吗,现在anynode安装后也不能添加IP,基本废了,AWS美国节点都能解锁Netflix,但是安装不上,博主能出个教程吗?

    1. Newlearner365说道:

      anynode安装好之后为什么不能添加ip呢,有报错么?aws安装的话可能要注意内网问题,记得在防火墙添加映射。之前看到有人成功在gcp上安装了,我想问题应该不是很大。

      1. oylw说道:

        anynode输入网址:8080直接就提示502了,进不去,试了很多次都不行,AWS则是都没有安装进去,不知道博主那里看到GCP安装成功的,能提供下链接吗,想去借鉴借鉴,谢谢!!

        1. Newlearner365说道:

          如果报错502的话检查下docker的各个容器是否正常运行 docker ps -a,Netflix proxy的log文件在Netflix-proxy文件夹。gcp的安装并没有什么需要注意的地方,直接使用即可(来自安装成功的群友),实在不行也可以考虑iptables做端口转发。

  2. oylw说道:

    博主,经过两天折腾,anynode和AWS都安装上Netflix-proxy了,而且可以正常使用,解决方法是安装纯净系统,用的萌咖的,用自带的系统都安装不上,不知道是不是我的个例,也给其它区域解锁了Netflix,很感谢你的文章,解决了观看Netflix的问题,网上搜到的别的文章都没你的写得这么详细,太感谢了!!

  3. swing说道:

    没有必要把B的nameserver整个设置成A的ip,只需要根据netflix单独设置即可,在dnsmasq的配置include进去。

    1. Newlearner365说道:

      你说的这个方案和一楼是一样的,本文介绍的这个项目思路也是dns劫持+反代,不过实现方式有不同。这样的好处有一台机器能看奈飞,不用在其他机器上面单独配置dnsmasq,只需要修改nameserver即可,现在一些流媒体服务解锁网站也是用了相同的办法。

  4. bbii说道:

    博主这个有点厉害啊,我直接把windows的dns改成代理的地址,就直接可以看奈菲啦

  5. nero说道:

    [ ok ] authorising clientip=113.111.212.240 on iface=ens3...done.
    [ ok ] adding IPv4 iptables rules...done.
    [ ok ] adding IPv6 iptables rules...done.
    [ ok ] creating Docker and sniproxy configuration templates...done.
    [ ok ] disabling Docker iptables control...done.
    [ ok ] configuring sniproxy and Docker...done.
    [ ok ] installing iptables|netfilter-persistent service...done.
    [ ok ] saving iptables rules...done.
    [ ok ] creating dnsmasq.conf from template...done.
    [ ok ] updating dnsmasq.conf extip=161.117.184.115...done.
    [FAIL] installing Python3 and requirements...failed.
    [....] configuring admin backend.../usr/bin/env: ‘python’: No such file or directory
    /usr/bin/env: ‘python’: No such file or directory
    安装不上python3 提示错误~ 怎么破

    1. Newlearner365说道:

      文中提到需要安装旧版项目才可以运行,请仔细阅读下~

      1. nero说道:

        成功了~ 但是在服务器b的resolv。conf 添加 8.8.8.8 144.144.144.144 还是 服务器a的ip? 我看有人说是添加上者~~~

        1. Newlearner365说道:

          a机(搭建奈飞代理)的ip

      2. matt说道:

        installing python-pip and docker-compose... [fail]

      3. matt说道:

        installing python-pip and docker-compose... [fail]

        执行旧版的,出现上述报错,怎么破?

  6. 沙拉酱说道:

    你好,请问比如我A是港区的能看奈非,而B是日本的不能看,那搭建好这个代理后,B是不是也只能看港区的?

    1. Newlearner365说道:

      是这样的,你可以简单理解为中转

  7. dayong657说道:

    楼主,你好,第一段话有些不明白地方想请教。
    “该项目用到了DNS劫持 和 SNI代理。将Netflix的查询请求劫持到中转服务器的IP上,之后通过中转服务器监听443端口的 SNI代理 ,将你的观看请求通过中转服务器处理后发送给Netflix服务器。 中转服务器使用SNI代理 ,因此也不会被判断成使用Proxy。”

    1. 中转服务并未安装SNI代理,它的作用只是将Netflix请求转发到了A服务器上。而这段话的意思是在B上部署了SNI代理。
    2. A上部署了SNI和DNS解析服务后,其他服务器(B机)过来的Netflix请求都通过A发送给Netflix服务器,是因为Netflix服务器判断是A过来的,所以不会被判断成Proxy吧。如果是这样的话,在本地设置DNS地址为A服务器ip不可以吗?

    1. Newlearner365说道:

      所有的项目均部署在可以解锁奈飞的A机,sniproxy配合B机上面的DNS,当请求奈飞网址时,会自动反向代理奈飞。DNS可以设置在本地,楼上也有朋友反馈可以解锁,但是部分代理软件譬如clash并不会遵循本地dns而是规则写好的dns,而且国外dns作为本地dns会影响到解析网页的体验。

      1. dayong657说道:

        好的 谢谢

  8. 能猫说道:

    一直使用anynode+netflix_proxy解锁,安装好后80和8080端口都是可以管理的,但运行一段时间后80端口就挂掉了,不知道博主有这个情况吗?教程上也没写80端口也可以web管理,但实际是可以的。 :lol:

    1. Newlearner365说道:

      这个还真没注意到,anynode自从换路由之后我就没怎么用了

      1. 能猫说道:

        马老板的车库机房不行啊 :cry: ,现在搬到拉斯维加斯了就剩个ip香了 :lol: ,博主有啥能解锁的小鸡推荐吗?

        1. Newlearner365说道:

          我目前在用的是 moecloud LAX GIA 37月付和企鹅小屋香港 CMI 13月付,两款现在价格应该没有这么便宜了,感兴趣可以去看看

          1. 能猫说道:

            感谢推荐,不知道对南京联通和南京电信效果如何,有测试ip吗?

          2. Newlearner365说道:

            可以用谷歌找一些 affman 的评测看下~

  9. Linon说道:

    你好博主,我在运行成功之后没有出现admin和密码但是8080能访问,请问如何知道密码

    1. Newlearner365说道:

      auth文件夹里面的sqlite数据库文件里面应该有,你也可以运行auth文件夹下面的admin-reset.sh来重置密码。用户名不会变,都是admin

  10. Leeds说道:

    有什么办法能用nat机器解锁吗

    1. Newlearner365说道:

      理论上是可以的,不过这个 docker 项目指定了端口,用 nat 的话势必会受到影响,如果你能够提前 fork 修改的话我觉得可以试试

  11. zander说道:

    你好,楼主,我也是用这个脚本搭建得解锁服务器,A是ssr节点,B是解锁服务器,为A节点ssr服务器添加了DNS地址是B服务器;但是目前有个问题,我本地是koolshare lede上安装的ssxxxr,规则是大陆白名单,看Netflix还是提示我proxy,但是我用ssr客户端连接就没有这个问题,请问这个有解决方法嘛?还有就是神盾盒子,通过路由器也提示proxy。

    1. Newlearner365说道:

      因为 DNS 解锁需要传入域名建立 TCP 连接而不是传入 IP,否则无法实现劫持,这也就是为什么你在电脑客户端可以观看而在路由器不行。建议在路由器安装 KoolClash,或者避免使用 ChinaDNS ,DNS 模式选择 dns2socks 或 s*s-tunnel。总之需要从远端解析或者在本地解析后使用域名发出请求

      1. zander说道:

        我dns2sock 和 s*s-tunnel都试过了,都出现一样得问题,我目前使用得是ssr,不能用clash,有什么其它方法能解决这个问题吗?

        1. Newlearner365说道:

          实在不行的话就只能不考虑使用路由器代理观看了,你可以考虑投屏或者 nplayer 等软件挂载 GD 观看。如果有 macOS 的话也也可以考虑使用 Surge 的网关模式(gateway mode)给电视代理

  12. kaede说道:

    我搭建成功了,但是出现了奇怪问题。服务器B的DNS已经改为服务器A(能上网飞的,而且2台机器为不同区域),服务器Bping网飞域名时反馈的也是服务器A的IP,但是电脑连接服务器B搭建的SS时,上网飞还是服务器B的区域,而非服务器A,明显是没代理成功。又再试一下找一台能直连上网飞的机子dns改成服务器A的地址,显示是能上到服务器A的网飞区域的,也能正常观看。不知道遇到过这样的问题吗

  13. mcgill说道:

    博主你好,我使用路由器如何设置才能使用到vps的dns解析呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Recommended
19.9.9更新:搬…