Unblock-Us Auto-Update Skript

Ich bin seit ca. einem Jahr absoluter Fan von Netflix. Leider gibt es in Deutschland noch immer keine vernünftige Möglichkeit, ein Abo abzuschließen und Netflix ohne Umwege zu empfangen. Man benötigt nach wie vor einen VPN- oder DNS-Anbieter der Netflix vorgaukelt, man befinde sich in den USA oder Kanada.
Es gibt sicherlich viele dieser Dienste, allerdings habe ich mich ziemlich schnell für Unblock-Us entschieden. Der Dienst stellt alternative DNS-Server ein, die man in seinem Gerät (in meinem Fall Apple TV) einstellt und somit sofort die entsprechenden Angebote von Netflix nutzen kann. Das Ganze hat gegenüber den meisten VPN-Providern den Vorteil, dass man mit nahezu voller Geschwindigkeit auf die Inhalte zugreifen kann.

Einen Nachteil hat das Ganze jedoch: Unblock-Us nutzt zur Authentifizierung die eigene IP-Adresse. Sprich: Ändert sich die IP-Adresse des eigenen Internetanschluss, so muss man diese im Unblock-Us Webinterface erst seinem Account zuteilen. Da mir das allerdings zu stressig war, habe ich mich hin gesetzt und ein kurze Shell-Skript geschrieben. Das Skript läuft nun per Cronjob auf meiner Synology DS212j NAS um 03:00 Uhr morgens und schickt meine aktuelle IP-Adresse an Unblock-Us. Somit brauche ich mich um die Aktualisierungen der Adresse nicht mehr zu kümmern.

Das hat doch was, oder? Wer Interesse an dem Skript hat, kann sich gerne bedienen. Zu ändern sind lediglich die Variablen „userlogin“ und „userpassword“. Dort gehören eure Unblock-Us Zugangsdaten rein.

Viel Spaß.

Unblock-Us Auto-Update Skript auf GitHub

#!/bin/sh                                                                                                                                                                                                   
#                                                                                                                                                                                                           
# Unblock-Us Update-Script  
#                                                                                                                                                                                
# This script automatically sends your current IP address to the Unblock-Us api.                                                                                                                             
# It can be used to update your IP adress via cron.                                                                                                                                                         
#                                                                                                                                                                                                           
# Author:       Timo Schlueter                                                                                                                                                                              
# Mail:         me@timo.in   
# Web:          www.timo.in                                                                                                                                                                                 
# Twitter:      twitter.com/tmuuh                                                                                                                                                                           
#                                                                                                                                                                                                           
# Version:      0.2                                                                                                                                                                                         
# Date:         20-12-2013                                                                                                                                                                                  
#                                                                                                                                                                                                           
# Notes:        I am not affiliated directly or indirectly with Unblock-Us                                                                                                                                  
#                                                                                                                                                                                                           
 
# Variables (user specific)                                                                                                                                                                                 
userlogin="email@example.com"                                                                                                                                                                                   
userpassword="password"                                                                                                                                                                                    
 
# Environment                                                                                                                                                                                              
apiurl="https://api.unblock-us.com/login?$userlogin:$userpassword"                                                                                                                                          
wgetcmd=$(which wget)                                                                                                                                                                                       
 
# Check if username and password are set.                                                                                                                                                                   
if [ -z $userlogin ]                                                                                                                                                                                        
        then                                                                                                                                                                                                
                echo "No password set."                                                                                                                                                                     
                exit 1                                                                                                                                                                                      
elif [ -z $userpassword ]                                                                                                                                                                                   
        then                                                                                                                                                                                                
                echo "No password set."                                                                                                                                                                     
                exit 1                                                                                                                                                                                      
else                                                                                                                                                                                                        
        # Call the api                                                                                                                                                                                      
        response=$($wgetcmd --no-check-certificate -qO- $apiurl)                                                                                                                                            
 
        # Check response from api                                                                                                                                                                           
        if [ $response == "active" ]                                                                                                                                                                        
                then                                                                                                                                                                                        
                        echo "IP address is active. You are good to go!"                                                                                                                                     
                        exit 0                                                                                                                                                                              
        elif [ $response == "bad_password" ]                                                                                                                                                                
                then                                                                                                                                                                                        
                        echo "Wrong username or password."                                                                                                                                                  
                        exit 1                                                                                                                                                                              
        elif [ $response == "not_found" ]                                                                                                                                                                   
                then                                                                                                                                                                                        
                        echo "Username not found."                                                                                                                                                          
                        exit 1                                                                                                                                                                              
        else                                                                                                                                                                                                
                echo "Unknown error. Check api url or documentantion."                                                                                                                                      
                exit 1                                                                                                                                                                                      
        fi                                                                                                                                                                                                  
fi

18 Gedanken zu “Unblock-Us Auto-Update Skript

  1. Hi,
    ich wollte nur ein kurzes Danke hinterlassen. Das Skript funktioniert in Freenas absolut fantastisch. Einmal Cron-Job eingerichtet und problemlos Netflix schauen. Was will man mehr.
    Viele Grüße,

    Chris

  2. Thank you for this script! I have successfully set it up to run every day at 5PM and believe it is working 100%.

    For others wanting to do this, this is how I did it on my Raspberry Pi:

    Save unblockus_autoupdate.sh under /home/pi/unblock-us/

    # Set the shell script to run automatically as required, open:
    crontab -e

    # Add the following to the bottom of the file to run it every day at 5:00PM:
    # Unblock-Us Update script – Activate current IP everyday at 5PM
    * 17 * * * bash /home/pi/unblock-us/unblockus_autoupdate.sh

    Now Exit and Save! Done!

  3. Wunderbar, vielen Dank dafür! Läuft nun auf meiner Fritzbox zusammen mit dnsmasq, das so konfiguriert ist, dass für Anfragen an Netflix der Unblock-Us-DNS-Server genutzt wird. Jetzt sollte der Netflix-Nutzung von allen Geräten im Heimnetz ohne nerviges Aktualisieren von IP-Adresse oder Installation irgendwelcher Zusatzsoftware nichts mehr entgegen stehen.

    Viele Grüße,
    Mario

    • Deine Lösung mit dnsmasq ist natürlich die absolute Premium-Variante. Sehr gute Idee, vielleicht sollte ich das auch mal bei mir ein bauen. Im Moment habe ich in meinem Apple TV die Unblock-US DNS-Server fest eingestellt.

      Wie sieht deine dnsmasq-Konfiguration aus?

      • Das hatte ich bislang auch. Da ich aber häufig auf meinem Desktop-PC oder auf meinem Laptop schaue, wollte ich eine

        Nutze Freetz auf meiner Fritzbox. Dafür gibt es ein dnsmasq-Paket, das per WebIf konfigurierbar ist. Dort habe ich die Server folgendermaßen konfiguriert:

        /netflix.com/208.122.23.22 /netflix.net/208.122.23.22 /nflximg.com/208.122.23.22 /nflxext.com/208.122.23.22

        Dein Update-Script wird außerdem automatisch immer dann ausgeführt, wenn sich der Onlinestatus der Fritzbox ändert (auf „online“, z.B. bei Zwangstrennung), also nicht per Cronjob, was natürlich noch etwas optimaler ist. Bin so sehr zufrieden (wenn es denn auch weiterhin so gut funktioniert, läuft so erst seit heute Morgen).

        • Huch, da ist ein Teil meiner Antwort irgendwie verschütt gegangen. Auf jeden Fall wollte ich mir die extra Software bzw. DNS-Konfiguration auf den PCs ersparen, daher wollte ich eine Lösung für alle Geräte.

        • Die Lösung ist wirklich genial.
          Ich werde mir dnsmasq mal auf meiner NAS installieren und deine Konfiguration übernehmen. Das ist wirklich die bessere Lösung, als in den Geräten den festen DNS-Server einzustellen.

          Danke für den Tipp!

        • Danke Mario, genauso habe ich meine 7390 jetzt aufgesetzt, und der Zugriff auf Netflix funktioniert einwandfrei (zumindest nachdem ich unblock-us.com selbst noch hinzugefügt habe).
          Wie kriegst du es allerdings hin, dass beim Ändern des Online-Status das Script von Timo ausgeführt wird?

          Gruß Sebastian

        • Hallo Mario. Kannst du hier erklären, wie das Script aufgerufen wird, wenn die Fritzbox mit freetz online geht? Das wäre Oberklasse. Viele Grüße Micha

  4. Danke für das Script. Hatte schon länger überlegt, so etwas zu machen. Habe Dein Script als Grundlage genommen und für Mac OS X angepasst. Läuft nun auf meinem Mac Mini Server und schreibt zusätzlich noch ins Syslog…

    Nice work,
    RO55

    P.S.: Trotzdem komisch, dass Unblock-Us keine Update-Tools anbietet…

    • Ja, das ist wirklich komisch. Die Infos, die ich für das Skript brauchte, habe ich auch nur durch Zufall in einem Thread im Unblock-Us Support-Forum gefunden. Dort hat ein Support-Mitarbeiter die Update-URL gepostet. Ansonsten findet man bei denen echt wenig zu dem Thema.

      Sehr gut, dass das Skript auch unter OS X läuft. Auf meinem MacBook Air hatte ich es gar nicht getestet.

      • Eigentlich musste ich nur wget durch curl ersetzen und die Parameter entsprechend anpassen, dann lief es. Habe dann allerdings noch ein wenig gebastelt und bekomme nun Einträge ins Syslog, damit ich ab und zu mal nachschauen kann ob auch alles läuft.

        Und da ich eh gerade dabei war habe ich mir auch gleich ein Script zum Updaten meines no-ip.org Hostnames daraus gebaut. Deren Update Clients sind auch ziemlich unzuverlässig – zumindest, wenn man sie als Dienst laufen lässt.

        • Hört sich toll an was du da gemacht hast. Wärst du bereit dein Script mit curl hier zu teilen? Dann hätten Leute wie ich, die nicht so viele Ahnung vom scripten haben, auch eine Möglichkeit es zu nutzen.

          Würde mich sehr freuen

          Lenny

  5. Hi Timo,

    thank you for your efforts and this great skript. This way I don’t have to write it by myself!

    Just one small thing: the errormessage for the missing username says, that the password is missing. Probably a copy paste error or something.

    Christoph

Kommentare sind geschlossen.