Wenn du Skripte von einem Server ausführen möchtest und dabei sicherstellen willst, dass diese Anfragen nicht sofort als automatisiert erkannt werden, bietet die Verwendung eines Proxies eine ideale Lösung. In dieser Anleitung zeigen wir dir, wie du auf deinem Raspberry Pi einen Squid-Proxy einrichtest, der über NordVPN läuft. Zusätzlich stellen wir sicher, dass dein lokaler Zugriff auf den Raspberry Pi via SSH stets möglich bleibt, auch wenn NordVPN aktiv ist. Da der Raspberry Pi wahrscheinlich keine grafische Benutzeroberfläche (GUI) hat, nutzen wir für das NordVPN-Login einen Token-basierten Ansatz.
Schritt 1: Installiere NordVPN auf dem Raspberry Pi
- Installiere NordVPN mit einem einfachen Befehl: Der folgende Befehl stammt von der offiziellen Einrichtungsseite von NordVPN. Öffne ein Terminal auf deinem Raspberry Pi und führe diesen Befehl aus, um NordVPN zu installieren:
sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)
- Starte den Raspberry Pi neu: Einige Änderungen aus der Installation von NordVPN werden erst beim nächsten Reboot umgesetzt, darum muss der Raspberry Pi neu gestartet werden:
sudo reboot now
- Erzeuge einen Anmeldetoken für NordVPN: Da der Raspberry Pi wahrscheinlich keine GUI hat, verwenden wir ein Token für den ersten Login. Besuche dazu diese Seite in deinem Browser auf einem anderen Gerät, melde dich in deinem NordVPN-Konto an und erstelle einen Anmeldetoken.
- Melde dich bei NordVPN mit dem Token an: Führe den folgenden Befehl auf deinem Raspberry Pi aus, um dich mit dem Token anzumelden:
nordvpn login --token <dein_token>
Ersetze <dein_token>
durch den Token, den du aus deinem NordVPN-Konto generiert hast.
Wenn alles richtig gelaufen ist, solltest Du jetzt „Welcome to NordVPN! You can now connect to VPN by using ’nordvpn connect‘.“ in der Console lesen können.
Schritt 2: Konfiguriere NordVPN, um lokalen SSH-Zugriff zu ermöglichen
Damit der lokale SSH-Zugriff weiterhin möglich bleibt, auch wenn die NordVPN-Verbindung aktiv ist, müssen wir NordVPN so konfigurieren, dass der lokale Netzwerkverkehr (z.B. der SSH-Zugriff) das VPN umgeht.
- Erlaube den lokalen Netzwerkverkehr, das VPN zu umgehen: Führe den folgenden Befehl aus, um den lokalen Netzwerkverkehr vom VPN auszuschließen:
nordvpn whitelist add subnet 192.168.2.0/24 # Standard-Subnetz für FRITZ!Box-Netzwerke
Hinweis: Wenn du einen anderen IP-Adressraum in deinem Heimnetzwerk verwendest, z.B. 192.168.1.0/24
oder eine komplett andere Einstellung, musst du den Befehl entsprechend anpassen. Prüfe, welchen IP-Adressraum dein Router verwendet, und ersetze 192.168.2.0/24
durch das korrekte Subnetz.
- Überprüfe die Whitelist-Einträge: Du kannst überprüfen, ob der lokale Netzwerkverkehr korrekt ausgeschlossen ist, indem du den folgenden Befehl ausführst:
nordvpn settings
Hier solltest du sehen, dass das von dir angegebene Subnetz auf der Whitelist unter „Allowlisted subnets“ steht.
Schritt 3: Teste die NordVPN-Verbindung und den SSH-Zugriff
Bevor du mit der weiteren Einrichtung fortfährst, solltest du testen, ob NordVPN ordnungsgemäß funktioniert und der SSH-Zugriff bestehen bleibt.
- Verbinde dich testweise mit einem NordVPN-Server:
nordvpn connect United_States
- Überprüfe, ob der SSH-Zugriff weiterhin funktioniert:
- Bleibe in deiner SSH-Sitzung und führe ein paar einfache Befehle aus (z.B.
ls
,pwd
), um sicherzustellen, dass die Verbindung stabil bleibt. - Prüfe die aktuelle IP-Adresse deines Raspberry Pi mit dem Befehl:
curl ifconfig.me
Dies sollte die VPN-IP-Adresse anzeigen. - Mache Dich mit weiteren Settings von nordvpn vertraut mit
nordvpn help
- Trenne die VPN-Verbindung:
nordvpn disconnect
Stelle sicher, dass der Raspberry Pi wieder seine reguläre IP-Adresse verwendet und der SSH-Zugriff weiterhin funktioniert.
Schritt 4: Installiere und konfiguriere Squid für NordVPN
- Installiere Squid:
sudo apt-get update sudo apt-get install squid
- Erstelle die Squid-Konfigurationsdatei:
sudo nano /etc/squid/squid-nordvpn.conf
- Füge die folgende Konfiguration ein, um Squid von mehreren IP-Adressen (z.B. DigitalOcean-Servern) sowie Zugriffe aus dem LAN zuzulassen:
# squid-nordvpn.conf # Access Control Lists (ACLs) acl allowed_ip src <DigitalOcean Server IP 1> <DigitalOcean Server IP 2> <DigitalOcean Server IP 3> 192.168.2.0/24 http_access allow allowed_ip http_access deny all # Logging access_log /var/log/squid/nordvpn_access.log # Standard logging format logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %>h %Sh/%<a %mt # Squid cache cache_mem 64 MB maximum_object_size_in_memory 512 KB cache_dir ufs /var/spool/squid 100 16 256 cache_log /var/log/squid/cache.log cache_store_log none
Ersetze <DigitalOcean Server IP 1>
, <DigitalOcean Server IP 2>
, und <DigitalOcean Server IP 3>
durch die tatsächlichen IP-Adressen deiner DigitalOcean-Droplets und passe den Netzwerkbereich 192.168.2.0/24
entsprechend deinem Heimnetzwerk an, falls erforderlich.
- Speichere die Datei und schließe den Editor.
Schritt 5: Automatisches Starten des Proxies nach einem Neustart sicherstellen
Damit der Squid-Proxy nach einem Neustart des Raspberry Pi automatisch startet:
- Erstelle eine Systemd-Servicedatei:
sudo nano /etc/systemd/system/squid-nordvpn.service
- Füge die folgende Konfiguration ein:
[Unit] Description=Squid Proxy Server (NordVPN) After=network.target [Service] ExecStartPre=/usr/bin/nordvpn connect United_States # Beliebigen NordVPN-Server in den USA auswählen ExecStart=/usr/sbin/squid -f /etc/squid/squid-nordvpn.conf ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target
Alternative für einen festen Server:
Wenn du einen spezifischen Server verwenden möchtest, kannst du den Befehl wie folgt anpassen:
ExecStartPre=/usr/bin/nordvpn connect --server us1234 # Ersetze 'us1234' durch den gewünschten festen Server
- Aktiviere den Dienst, damit er beim Booten startet:
sudo systemctl enable squid-nordvpn.service
- Starte den Raspberry Pi neu: Die Änderungen aus der Einrichten werden nun beim nächsten Reboot umgesetzt:
sudo reboot now
- Überprüfe den Status von Squid : Squid sollte nach dem Reboot den Status „active“ melden:
sudo systemctl status squid
Schritt 6: Öffnen der Ports in der Firewall auf der FRITZ!Box
Damit der Proxy von außen erreichbar ist, musst du den entsprechenden Port auf deiner FRITZ!Box öffnen:
- Melde dich bei der FRITZ!Box an:
- Gehe zu
http://fritz.box
und melde dich mit deinem Passwort an.
- Öffne die Portfreigabe:
- Gehe zu
Internet > Freigaben > Portfreigaben
. - Klicke auf „Neue Portfreigabe“.
- Erstelle eine Portfreigabe für den NordVPN Proxy:
- Wähle das Gerät (deinen Raspberry Pi) aus.
- Trage als Port 3128 ein und leite auf 3128 intern
- Wähle TCP als Protokoll.
- Klicke auf „OK“, um die Freigabe zu erstellen.
Schritt 7: Dynamische DNS (DynDNS) einrichten
Wenn sich deine Residential IP ändert, müssen die Skripte auf deinem DigitalOcean-Droplet automatisch die neue IP-Adresse deines Raspberry Pi finden. Dazu richtest du einen dynamischen DNS-Dienst ein.
- Wähle einen DynDNS-Dienst:
- Du kannst Dienste wie No-IP oder Dynu verwenden. Registriere dich für einen kostenlosen Account.
- Richte DynDNS auf der FRITZ!Box ein:
- Gehe zu
Internet > MyFRITZ! Konto > Dynamischer DNS
. - Wähle „Anbieter“ aus und gib die Zugangsdaten deines DynDNS-Dienstes ein.
- Speichere die Einstellungen.
- Nutze den DynDNS-Namen in deinen Skripten:
- Ersetze
<Raspberry Pi IP>
in deinen Skripten durch deinen DynDNS-Namen, z.B.myhome.dyndns.org:3128
.
Schritt 8: Richte Playwright auf dem DigitalOcean Droplet ein
- Installiere Playwright auf dem Droplet:
pip install playwright python -m playwright install
- Erstelle ein Skript, das den NordVPN Proxy verwendet:
from playwright.sync_api import sync_playwright def run_nordvpn(playwright): browser = playwright.chromium.launch(proxy={"server": "http://myhome.dyndns.org:9091"}, headless=True) context = browser.new_context() page = context.new_page() page.goto("https://www.wsj.com") # Beispielseite: Wall Street Journal page.screenshot(path="playwright_example_url.png") browser.close() with sync_playwright() as playwright: run_nordvpn(playwright)
Schritt 9: Finaler Test
Führe das Playwright-Skript auf deinem DigitalOcean-Droplet aus und überprüfe die resultierenden Screenshots. Das Skript sollte die VPN-IP-Adresse aus Nordamerika verwenden und ein Screenshot der Wall Street Journal-Website (wsj.com
) erstellen.
Mit dieser Anleitung hast du nun die Möglichkeit, einen Squid-Proxy auf deinem Raspberry Pi zu betreiben, der über NordVPN läuft, während du weiterhin über SSH auf deinen Raspberry Pi zugreifen kannst. Dies hilft dir, deine Skripte so zu maskieren, dass sie wie legitime Benutzeranfragen aussehen und deine echte IP-Adresse geschützt bleibt.
Schritt 10: Weitere Überlegungen und Hinweise
Bei der Einrichtung eines solchen Proxy-Setups gibt es einige wichtige rechtliche und technische Aspekte, die du unbedingt beachten solltest.
Besonders beim Scraping von Webseiten ist Vorsicht geboten. Viele Webseiten haben in ihren Nutzungsbedingungen festgelegt, dass automatisiertes Scraping verboten ist. Verstöße gegen diese Bedingungen können rechtliche Konsequenzen nach sich ziehen. Informiere dich daher gründlich über die jeweiligen Nutzungsbedingungen und stelle sicher, dass dein Vorgehen mit den geltenden Gesetzen und Vorschriften übereinstimmt.
Es ist wichtig zu wissen, dass die IP-Adressen von NordVPN (Affiliate Link) bei vielen Firewalls und Webdiensten bekannt sind. Diese IP-Adressen könnten auf Blacklists stehen, was dazu führt, dass deine Anfragen blockiert oder als verdächtig markiert werden. Dies kann insbesondere dann problematisch sein, wenn du in großem Umfang scrapen möchtest. Daher ist es ratsam, vorab zu testen, ob die gewünschten Webseiten mit NordVPN überhaupt zugänglich sind.
Um dein Scraping weniger auffällig zu gestalten, solltest du dich näher mit Playwright beschäftigen. Playwright bietet Funktionen, mit denen du ein natürlicheres Nutzerverhalten simulieren kannst, wie z.B. zufällige Mausbewegungen, Tastatureingaben und realistische Pausen zwischen Aktionen. Diese Maßnahmen können dazu beitragen, dass deine Anfragen weniger wahrscheinlich als automatisiert erkannt werden.
Die Sicherheit deines Setups sollte höchste Priorität haben. Es ist essentiell, den Zugriff auf deine Proxies nur auf die IP-Adressen der Server zu beschränken, die tatsächlich berechtigt sind. Alle anderen Verbindungen sollten von deinem Proxy-Server direkt abgewiesen werden. Dies minimiert das Risiko, dass unbefugte Dritte Zugriff auf deinen Proxy erhalten.
Um sicherzustellen, dass deine Proxies jederzeit verfügbar und funktionsfähig sind, kannst du ein einfaches Monitoring einrichten. Ein Tool wie Home Assistant kann dir helfen, den Status der beiden Proxies – Residential und NordVPN – in Echtzeit zu überwachen. Durch eine einfache Anzeige mit grünen oder roten Lampen kannst du schnell erkennen, ob einer der Proxies ausgefallen ist und rechtzeitig Maßnahmen ergreifen.
Indem du diese zusätzlichen Überlegungen in dein Setup einbeziehst, stellst du sicher, dass dein Proxy-Server nicht nur effektiv, sondern auch sicher und rechtskonform betrieben wird.