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,包括機器人、駭客、垃圾郵件發送者等。
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。
+----------+ +-----------+ +-----------------+
| | | | | |
| 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