TL;DR
找到一个(最近的)n19 Debian 或 Ubuntu 机器,在干净的公共 IP 上具有 root 权限并运行:
apt-get update
&& apt-get -y install vim dnsutils curl sudo
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
&& mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
&& ./build.sh
请参阅Wiki页面,了解一些常见的故障排除思路。
...或订阅 Unzoner VPN 服务来解锁:
netflix-proxy
是一个智能 DNS 代理,用于在区域外播放Netflix
、 Hulu
[n2]、 HBO Now
和其他内容。它使用 Docker 容器进行部署,并使用dnsmasq
[n18] 和sniproxy
[n1] 提供 SmartDNS 服务。它适用于一些被阻止的网站,例如 PornHub 和 YouTube。订阅邮件列表并获得有关新功能、更新等的通知。
以下是开箱即用的支持,但是添加附加服务很简单,可以通过更新dnsmasq.conf
文件并运行docker restart dnsmasq
来完成:
该项目是免费的,受 MIT 许可证保护。它不提供任何保证,可用于任何目的,包括私人和商业目的。但是,如果您打算将其用于商业目的(即从中赚钱),请不要期望免费支持,因为这是不公平的。如果需要,可以随时协商商业支持模式。如果您对此感兴趣,请与我联系。
以下段落展示了如何启动此解决方案并与我迄今为止尝试过的几个不同的云提供商一起运行。如果您更喜欢视频教程,这里是一位用户准备的视频教程。请注意,OpenVZ无法工作[n15],请确保使用 KVM 或 Xen 获得合适的虚拟机。
(Netflix 被屏蔽[n16])以下内容基于DigitalOcean
提供的标准 Ubuntu Docker 映像,但理论上应该适用于任何预装 Docker的Linux 发行版。
One-click Apps
选项卡下找到)在感兴趣的地理位置创建 Droplet。 mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
&& ./build.sh
netflix-proxy
管理站点的URL 和凭据。Netflix
和其他地区外的内容。#netflix-proxy
以获得帮助。如果您想与朋友和家人共享您的系统,您可以使用netflix-proxy
管理站点(位于http://<ipaddr>:8080/
)授权他们的家庭 IP 地址,其中ipaddr
是公共 IP 地址您的 VPS。使用admin
帐户和您在构建期间记录的密码登录。如果您忘记了管理员凭据,请重置。
admin
帐户不限制IP的输入或删除。如果您想使用自动填充的下拉列表将 IP 条目限制为当前客户端 IP,请使用位于auth
目录中的account-creator.sh
脚本创建一个标准用户帐户,该脚本将提示您输入并创建用户帐户。
如果您的 ISP 为您分配了一个新的 IP 地址(例如通过 DHCP),您还可以使用netflix-proxy
管理站点来更新您的 IP 地址。如果您的 IP 地址发生变化,所有 HTTP/HTTPS 请求将自动重定向到端口8080
上的管理站点。所有 DNS 请求将被重定向到在端口5353
上运行的dnsmasq
实例。此后您很可能需要清除浏览器和系统 DNS 缓存。在 Windows 上,运行ipconfig /flushdns
。在 OS X 上,运行:
sudo killall -HUP mDNSResponder
&& sudo dscacheutil -flushcache`
然后重新启动浏览器(例如chrome://restart
)和/或重新启动相关设备。此机制应该适用于浏览器,但很可能会在其他设备(例如 Apple TV 和智能电视)上导致错误。如果您的互联网突然停止工作,请尝试加载浏览器并访问netflix.com
。
ipaddr
是 VPS 的公共 IP 地址),请替换管理员凭据并运行: curl -L http://<ipaddr>:8080/autoadd?username=<admin-username>&password=<admin-password>
curl -L http://<ipaddr>:8080/autoadd?ip=<your-public-ipaddr>&username=<admin-username>&password=<admin-password>
警告:除非您知道自己在做什么,否则请勿启用此功能。
要启用对访问代理的每个 IP 的自动授权,请在auth/settings.py
中设置AUTO_AUTH = True
并运行service netflix-proxy-admin restart
。此设置将有效授权任何第一次使用网络浏览器访问您的代理 IP 的 IP,包括机器人、黑客、垃圾邮件发送者等。授权成功后,浏览器将重定向到 Google。
DNS 服务默认开启递归,因此授权成功后,任何人都可以使用您的 VPS 进行 DNS 放大攻击,这可能会导致您违反与 VPS 提供商的合同。已警告您。
构建脚本会自动配置系统并启用 DNS 递归。这具有安全隐患,因为它可能会使您的 DNS 服务器遭受 DNS 放大攻击(一种 DDoS 攻击)。不过,只要构建脚本自动配置的iptables
防火墙规则保持不变,这就不应该是一个问题。但是,如果您决定关闭防火墙,请注意这一点。
可以选择将以下命令行选项传递给build.sh
以进行额外控制:
Usage: ./build.sh [-b 0|1] [-c <ip>]
-b grab docker images from repository (0) or build locally (1) (default: 0)
-c specify client-ip instead of being taken from ssh_connection
为了更新现有的数据库架构,请运行提供的update.sh
脚本。或者,您可以手动运行架构更新(例如,如果您跳过了某个版本)。
构建脚本被设计为在 Ubuntu 和 Debian 上运行。它很可能在所有其他发行版上失败。某些先决条件要求正确设置区域设置,某些提供商操作系统映像需要额外帮助。如果您在构建过程中遇到Python
和/或pip
报告的locale
问题,请首先尝试运行以下命令:
export LANGUAGE=en_US.UTF-8
&& export LANG=en_US.UTF-8
&& export LC_ALL=en_US.UTF-8
&& export LC_CTYPE="en_US.UTF-8"
&& locale-gen en_US.UTF-8
&& sudo apt-get -y install language-pack-en-base
&& sudo dpkg-reconfigure locales
(Netflix 被阻止[n16])以下内容基于Vultr
提供的 Debian 映像,但理论上应该适用于任何 Debian 发行版。
apt-get update
&& apt-get -y install vim dnsutils curl sudo
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
&& mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
&& ./build.sh
netflix-proxy
管理站点的凭据。Netflix
和其他地区外的内容。#netflix-proxy
以获得帮助。 (Netflix 被屏蔽[n16])以下内容基于Kamatera
提供的标准 Ubuntu 映像。
apt-get update
&& apt-get -y install vim dnsutils curl sudo
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
&& mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
| tar x --strip-components=1
&& ./build.sh
netflix-proxy
管理站点的URL 和凭据。Netflix
和其他地区外的内容。#netflix-proxy
以获得帮助。 (Netflix 被屏蔽[n16])以下内容基于RamNode
提供的 Debian 或 Ubuntu 镜像。
VPS Control Panel
并使用 Ubuntu 或 Debian 映像(重新)安装操作系统。 apt-get update
&& apt-get -y install vim dnsutils curl sudo
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
&& mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
&& ./build.sh
netflix-proxy
管理站点的凭据。Netflix
和其他地区外的内容。#netflix-proxy
以获得帮助。 (Netflix 被阻止[n16])以下内容基于Linode
提供的标准 Ubuntu 映像,但应该适用于任何未安装 Docker 的 Linux 发行版。
Linode
并将 Ubuntu 映像部署到其中。 apt-get update
&& apt-get -y install vim dnsutils curl sudo
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
&& mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
&& ./build.sh
netflix-proxy
管理站点的凭据。Netflix
和其他地区外的内容。#netflix-proxy
以获得帮助。 (未经测试)以下内容基于DreamHost
提供的标准 Ubuntu 映像,但应该适用于任何未安装 Docker 并在非 root用户下运行的 Linux 发行版(例如Amazon Web Services
[n13])。
DreamCompute
或Public Cloud Computing
部分并在感兴趣的地理位置启动 Ubuntu 实例。Ingress - IPv4 - UDP - 53 - 0.0.0.0/0 (CIDR)
Floating IP
。 sudo apt-get update
&& sudo apt-get -y install vim dnsutils curl
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
&& sudo usermod -aG docker $(whoami | awk '{print $1}')
&& mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
&& ./build.sh
netflix-proxy
管理站点的凭据。Netflix
和其他地区外的内容。#netflix-proxy
以获得帮助。以下是基于Gandi
提供的 Ubuntu 映像,仅使用 SSH 密钥(无密码)使用root
登录。对于默认的非 root admin
登录,请调整步骤 6 以在必要时使用sudo
。
apt-get update
&& apt-get -y install vim dnsutils curl sudo
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
&& mkdir -p ~/netflix-proxy
&& cd ~/netflix-proxy
&& curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
&& ./build.sh
netflix-proxy
管理站点的凭据。Netflix
和其他地区外的内容。#netflix-proxy
以获得帮助。以下内容未经测试,基于Microsoft Azure
使用我不久前编写的cloud-harness
自动化工具提供的标准 Ubuntu 映像,并假设Microsoft Azure
订阅为空。此外,由于 Azure 会通过负载均衡器阻止 ICMP,并且不提供本机 IPv6 支持,因此 IPv6 无法正常工作。
git clone https://github.com/ab77/cloud-harness.git ~/cloud-harness
。cloud-harness
安装和配置部分进行设置。 ./cloud-harness.py azure --action create_virtual_machine_deployment
--service <your hosted service name>
--deployment <your hosted service name>
--name <your virtual machine name>
--label 'Netflix proxy'
--account <your storage account name>
--blob b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04-LTS-amd64-server-20140414-en-us-30GB
--os Linux
--network VNet1
--subnet Subnet-1
--ipaddr <your reserved ipaddr name>
--size Medium
--ssh_auth
--disable_pwd_auth
--verbose
DNS (UDP)
、 HTTP (TCP)
和HTTPS (TCP)
端点,并使用 Azure ACL
功能将它们保护到您的家庭/工作/任何 IP。22
)以azureuser
身份通过 SSH 连接到虚拟机,并使用任何非 root 用户 Ubuntu 说明来构建/安装netflix-proxy
。该项目与Travis CI
链接以自动部署和测试项目。 Python 脚本testbuild.py
用于部署和测试netflix-proxy
。该脚本部署一个测试Droplet
,然后运行一系列测试来验证 (a) 所有Docker
容器是否启动; (b) built.sh
脚本最后输出正确的消息; (c) 所有相关服务在重新启动后仍然有效; (d) 代理能够通过 SSL 与 Netflix 进行通信。
testbuild.py
脚本还可以用于从命令行以编程方式部署Droplets
:
usage: testbuild.py digitalocean [-h] --api_token API_TOKEN
[--client_ip CLIENT_IP]
[--fingerprint FINGERPRINT [FINGERPRINT ...]]
[--region REGION] [--branch BRANCH]
[--create] [--destroy] [--list_regions]
[--name NAME]
optional arguments:
-h, --help show this help message and exit
--api_token API_TOKEN
DigitalOcean API v2 secret token
--client_ip CLIENT_IP
client IP to secure Droplet
--fingerprint FINGERPRINT [FINGERPRINT ...]
SSH key fingerprint
--region REGION region to deploy into; use --list_regions for a list
--branch BRANCH netflix-proxy branch to deploy (default: master)
--create Create droplet
--destroy Destroy droplet
--list_regions list all available regions
--name NAME Droplet name
请注意,您将需要一个有效的Python 2.7
环境以及tests/requirements.txt
中列出的模块(运行pip install -r tests/requirements.txt
)。
由于提供商阻止,视频播放测试当前已被禁用。
成功构建部署后,将执行testvideo.py
来测试 Netflix 视频播放。这是通过播放已知仅在美国地区可用的标题(例如 1,000 Times Good Night)的 60 秒来完成的。
usage: testvideo.py netflix [-h] --email EMAIL --password PASSWORD
[--seconds SECONDS] [--titleid TITLEID]
[--tries TRIES]
optional arguments:
-h, --help show this help message and exit
--email EMAIL Netflix username
--password PASSWORD Netflix password
--seconds SECONDS playback time per title in seconds (default: 60)
--titleid TITLEID Netflix title_id to play (default: 80001898)
--tries TRIES Playback restart attempts (default: 4)
测试结束时保存屏幕截图并上传到gh-pages
分支。
类似地,执行testvideo.py
来测试使用免费标题之一的 Hulu 视频播放(例如 South Park S01E01:Cartman Gets an Anal Probe)。构建配置为在 Hulu 测试失败时不会失败。这是因为 Hulu 几乎肯定被 Digital Ocean 屏蔽了。
该解决方案使用来自代理的 IPv6 下游来解锁支持 IPv6 的提供商,例如 Netflix。此功能无需客户端支持 IPv6,只需 VPS 必须具有公共 IPv6 连接。您可能还需要关闭本地网络(和/或相关设备)上的 IPv6。[n6]
+----------+ +-----------+ +-----------------+
| | | | | |
| client | +--------------> | proxy | +-------------> | Netflix, etc. |
| | (ipv4) | | (ipv6) | |
+----------+ +-----------+ +-----------------+
如果您有任何想法,请随时分叉并将您的更改提交给我。
如果您觉得这有用,请随时通过 PayPal 或比特币捐款。
贝宝 | 比特币 |
---|---|
1GURKgkaCkdsrCzb4pq3bJwkmjTVv9X7eG |
[email protected]
;此解决方案仅适用于支持服务器名称指示 (SNI)[n7] 的设备,并且仅当它们使用 DNS 来解析名称时。Hulu
受到大多数非住宅 IP 范围的严格地理限制,并且不支持 IPv6。build.sh
的-c <ip>
选项手动获取 IP。black.box
unzoner。black.box
unzoner。[email protected]
提供。© 2016-2019 ab1