TL;DR
recherchez une boîte Debian ou Ubuntu (récente) n19 avec root sur une adresse IP publique propre et exécutez :
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
Consultez la ou les pages Wiki pour quelques idées de dépannage courantes.
... ou abonnez-vous au service VPN Unzoner pour débloquer :
netflix-proxy
est un proxy DNS intelligent pour diffuser Netflix
, Hulu
[n2], HBO Now
et d'autres hors région. Il est déployé à l'aide de conteneurs Docker et utilise dnsmasq
[n18] et sniproxy
[n1] pour fournir des services SmartDNS. Cela fonctionne pour certains sites bloqués, tels que PornHub et YouTube. Abonnez-vous à la liste de diffusion et soyez informé des nouvelles fonctionnalités, mises à jour, etc.
Les éléments suivants sont pris en charge dès le départ, mais l'ajout de services supplémentaires est trivial et se fait en mettant à jour le fichier dnsmasq.conf
et en exécutant docker restart dnsmasq
:
Ce projet est gratuit , couvert par la licence MIT. Il est fourni sans aucune garantie et peut être utilisé à toutes fins, y compris privées et commerciales. Cependant, si vous envisagez de l'utiliser à des fins commerciales (c'est-à-dire pour gagner de l'argent), ne vous attendez pas à une assistance gratuite, car cela serait injuste. Un modèle de support commercial peut toujours être négocié, si nécessaire. S'il vous plaît contactez-moi si cela vous intéresse.
Les paragraphes suivants montrent comment rendre cette solution opérationnelle avec quelques fournisseurs de cloud différents que j'ai essayés jusqu'à présent. Si vous préférez un tutoriel vidéo, en voici un préparé par l'un des utilisateurs. Notez qu'OpenVZ ne fonctionnera pas [n15], assurez-vous d'avoir une machine virtuelle appropriée utilisant KVM ou Xen.
(Netflix est bloqué [n16]) Ce qui suit est basé sur une image Ubuntu Docker standard fournie par DigitalOcean
, mais devrait en théorie fonctionner sur n'importe quelle distribution Linux avec Docker préinstallé.
One-click Apps
). 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
et autres hors région.#netflix-proxy
sur freenode pour obtenir de l'aide. Si vous souhaitez partager votre système avec vos amis et votre famille, vous pouvez autoriser leur(s) adresse(s) IP personnelle(s) à l'aide du site d'administration netflix-proxy
, situé à http://<ipaddr>:8080/
, où ipaddr
est l'adresse IP publique. de votre VPS. Connectez-vous en utilisant le compte admin
avec le mot de passe que vous avez enregistré lors de la construction. Si vous avez oublié vos informations d'identification d'administrateur, réinitialisez-les.
Le compte admin
ne restreint pas la saisie ou la suppression des adresses IP. Si vous souhaitez restreindre la saisie des adresses IP à l'adresse IP du client actuel à l'aide d'une liste déroulante automatiquement remplie, créez un compte utilisateur standard à l'aide du script account-creator.sh
situé dans le répertoire auth
, qui vous demandera la saisie et créera le compte utilisateur.
Vous pouvez également utiliser le site d'administration netflix-proxy
pour mettre à jour votre adresse IP, si votre FAI vous en attribue une nouvelle (par exemple via DHCP). Si votre adresse IP change, toutes les requêtes HTTP/HTTPS seront automatiquement redirigées vers le site d'administration sur le port 8080
. Toutes les requêtes DNS seront redirigées vers l'instance dnsmasq
exécutée sur le port 5353
. Vous devrez probablement ensuite purger les caches DNS de votre navigateur et de votre système. Sous Windows, exécutez ipconfig /flushdns
. Sous OS X, exécutez :
sudo killall -HUP mDNSResponder
&& sudo dscacheutil -flushcache`
Redémarrez ensuite le navigateur (par exemple chrome://restart
) et/ou redémarrez les appareils concernés. Ce mécanisme devrait fonctionner sur les navigateurs, mais provoquera très probablement des erreurs sur d'autres appareils, tels que les Apple TV et les téléviseurs intelligents. Si votre Internet cesse de fonctionner tout d'un coup, essayez de charger un navigateur et d'accéder à netflix.com
.
ipaddr
est l'adresse IP publique de votre VPS), remplacez les informations d'identification de l'administrateur et exécutez : 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>
ATTENTION : ne l'activez pas à moins de savoir ce que vous faites.
Pour activer l'autorisation automatique de chaque adresse IP qui atteint votre proxy, définissez AUTO_AUTH = True
dans auth/settings.py
et exécutez service netflix-proxy-admin restart
. Ce paramètre autorisera effectivement toute adresse IP frappant votre IP proxy avec un navigateur Web pour la première fois, y compris les robots, les pirates, les spammeurs, etc. Une fois l'autorisation réussie, le navigateur sera redirigé vers Google.
Le service DNS est configuré avec la récursion activée par défaut, donc après une autorisation réussie, n'importe qui peut utiliser votre VPS dans des attaques par amplification DNS, ce qui vous mettra probablement en rupture de contrat avec le fournisseur VPS. Vous avez été AVERTI .
Le script de construction configure automatiquement le système avec la récursion DNS activée . Cela a des implications en matière de sécurité, car cela expose potentiellement votre serveur DNS à une attaque par amplification DNS, une sorte d'attaque DDoS. Cela ne devrait cependant pas être un problème, tant que les règles de pare-feu iptables
configurées automatiquement par le script de build pour vous restent en place. Cependant, si jamais vous décidez de désactiver le pare-feu, soyez-en conscient.
Les options de ligne de commande suivantes peuvent éventuellement être transmises à build.sh
pour un contrôle supplémentaire :
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
Afin de mettre à jour votre schéma de base de données existant, veuillez exécuter le script update.sh
fourni. Vous pouvez également exécuter les mises à jour du schéma manuellement (par exemple si vous avez ignoré une version).
Le script de build a été conçu pour fonctionner sur Ubuntu et Debian. Il échouera très probablement sur toutes les autres distributions. Certaines conditions préalables nécessitent que les paramètres régionaux soient définis correctement et certaines images du système d'exploitation du fournisseur nécessitent une aide supplémentaire. Si vous rencontrez des problèmes de paramètres locale
signalés par Python
et/ou pip
pendant la construction, essayez d'abord d'exécuter ce qui suit :
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 est bloqué [n16]) Ce qui suit est basé sur une image Debian fournie par Vultr
, mais devrait en théorie fonctionner sur n'importe quelle distribution 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
et autres hors région.#netflix-proxy
sur freenode pour obtenir de l'aide. (Netflix est bloqué [n16]) Ce qui suit est basé sur une image Ubuntu standard fournie par Kamatera
.
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
.Netflix
et autres hors région.#netflix-proxy
sur freenode pour obtenir de l'aide. (Netflix est bloqué[n16]) Ce qui suit est basé sur des images Debian ou Ubuntu fournies par RamNode
.
VPS Control Panel
et (ré)installez le système d'exploitation à l'aide de l'image Ubuntu ou 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
et autres hors région.#netflix-proxy
sur freenode pour obtenir de l'aide. (Netflix est bloqué [n16]) Ce qui suit est basé sur une image Ubuntu standard fournie par Linode
, mais devrait fonctionner sur n'importe quelle distribution Linux sans Docker installé.
Linode
dans un emplacement géographique d'intérêt et déployez-y une image 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
et autres hors région.#netflix-proxy
sur freenode pour obtenir de l'aide. (non testé) Ce qui suit est basé sur une image Ubuntu standard fournie par DreamHost
, mais devrait fonctionner sur n'importe quelle distribution Linux sans Docker installé et exécuté sous un utilisateur non root (par exemple Amazon Web Services
[n13]).
DreamCompute
ou Public Cloud Computing
et lancez une instance Ubuntu dans un emplacement géographique qui vous intéresse.Ingress - IPv4 - UDP - 53 - 0.0.0.0/0 (CIDR)
Floating IP
à votre instance. 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
et autres hors région.#netflix-proxy
sur freenode pour obtenir de l'aide. Ce qui suit est basé sur l'image Ubuntu fournie par Gandi
en utilisant la connexion root
avec clé SSH uniquement (pas de mot de passe). Pour la connexion admin
non root par défaut, ajustez l'étape 6 pour utiliser sudo
si nécessaire.
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
et autres hors région.#netflix-proxy
sur freenode pour obtenir de l'aide. Ce qui suit n'a pas été testé et est basé sur une image Ubuntu standard fournie par Microsoft Azure
à l'aide de l'outil d'automatisation cloud-harness
que j'ai écrit il y a quelque temps et suppose un abonnement Microsoft Azure
vide. De plus, étant donné qu'Azure bloque ICMP via l'équilibreur de charge et n'offre pas de prise en charge native d'IPv6, IPv6 ne fonctionnera pas.
git clone https://github.com/ab77/cloud-harness.git ~/cloud-harness
.cloud-harness
pour le configurer. ./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)
et HTTPS (TCP)
et sécurisez-les sur votre domicile/travail/quelle que soit votre adresse IP à l'aide de la fonctionnalité Azure ACL
.azureuser
à l'aide d'un port TCP public personnalisé (et non 22
) et utilisez les instructions Ubuntu d'un utilisateur non root pour créer/installer netflix-proxy
. Ce projet est lié à Travis CI
pour déployer et tester le projet automatiquement. Le script Python testbuild.py
est utilisé pour déployer et tester netflix-proxy
. Ce script déploie un Droplet
de test, puis exécute de nombreux tests pour vérifier (a) que tous les conteneurs Docker
démarrent ; (b) le script built.sh
génère le message correct à la fin ; (c) tous les services concernés survivent à un redémarrage ; et (d) le proxy est capable de communiquer avec Netflix via SSL.
Le script testbuild.py
peut également être utilisé pour déployer par programmation Droplets
à partir de la ligne de commande :
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
Notez que vous aurez besoin d'un environnement Python 2.7
fonctionnel et des modules répertoriés dans tests/requirements.txt
(exécutez pip install -r tests/requirements.txt
).
Les tests de lecture vidéo sont actuellement désactivés en raison du blocage du fournisseur.
Après un déploiement de build réussi, testvideo.py
est exécuté pour tester la lecture vidéo Netflix. Cela se fait en lisant 60 secondes d'un titre connu pour être disponible uniquement dans la région des États-Unis (par exemple 1 000 Times Good Night).
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)
Une capture d'écran est enregistrée à la fin du test et téléchargée sur la branche gh-pages
.
De même, testvideo.py
est exécuté pour tester la lecture vidéo Hulu en utilisant l'un des titres gratuits (par exemple South Park S01E01 : Cartman Gets an Anal Probe). La build est configurée pour ne pas échouer en cas d’échec du test Hulu. En effet, Hulu est presque certainement bloqué sur Digital Ocean.
Cette solution utilise IPv6 en aval du proxy pour débloquer les fournisseurs compatibles IPv6, tels que Netflix. Aucune prise en charge IPv6 sur le client n'est requise pour que cela fonctionne, seul le VPS doit disposer d'une connectivité IPv6 publique. Vous devrez peut-être également désactiver IPv6 sur votre réseau local (et/ou les appareils concernés).[n6]
+----------+ +-----------+ +-----------------+
| | | | | |
| client | +--------------> | proxy | +-------------> | Netflix, etc. |
| | (ipv4) | | (ipv6) | |
+----------+ +-----------+ +-----------------+
Si vous avez une idée, n'hésitez pas à la partager et à me soumettre vos modifications.
Si vous trouvez cela utile, n'hésitez pas à faire un petit don avec PayPal ou Bitcoin.
Paypal | Bitcoin |
---|---|
1GUrKgkaCkdsrCzb4pq3bJwkmjTVv9X7eG |
[email protected]
; cette solution ne fonctionnera que sur les appareils prenant en charge l'indication de nom de serveur (SNI) [n7] et uniquement s'ils utilisent DNS pour résoudre les noms.Hulu
est fortement géo-restreint pour la plupart des plages IP non résidentielles et ne prend pas en charge IPv6.-c <ip>
pour build.sh
.black.box
unzoner.black.box
unzoner.[email protected]
.© 2016-2019 ab1