Was gibt es Neues
Ein einziger fehlender Buchstabe reicht völlig aus. Wenn du -contry-de in einen Proxy-Benutzernamen tippst, fällt der Tippfehler kaum auf und sieht genau wie eine gültige Option aus.
Der FourA-Proxy-Port beantwortet das mit einem 400-Fehler, der alle bekannten Schlüssel auflistet. Das ist ein kleines Detail eines Produkts, das am 15. September die Beta verlassen hat: eine Proxy-URL an unseren Exits für jeden Client, der Proxys unterstützt (ein Browser, ein Download-Tool oder der Scraper, den du bereits betreibst), ganz ohne API-Aufrufe. Du erstellst einen Proxy-Benutzer im Dashboard, fügst den String ein, und Tunnel sowie Traffic werden genauso auf deinen Plan angerechnet wie API-Requests.
Hier ist die gesamte Grammatik und der Grund für jede einzelne Regel.
So funktioniert es
Der Port läuft auf proxy.foura.ai:34004 und nutzt HTTP CONNECT mit Basic Authentication für Ziele auf den Ports 443 und 80. Credentials sind Proxy-Benutzer, bewusst getrennt von deinem API-Key: Ein Proxy-Handshake wird unverschlüsselt übertragen, und ein Proxy-Benutzer kann ein neues Passwort erhalten, ohne dass jemand deine API-Integration anpassen muss.
Alles nach den Credentials ist eine Liste von -key-value-Paaren in beliebiger Reihenfolge:
# Shared network, a German address, one sticky session for this job
curl -x "http://USERNAME-country-de-session-job42:PASSWORD@proxy.foura.ai:34004" \
https://example.com
# Premium network, an Android address in Germany, held 30 minutes
curl -x "http://USERNAME-network-premium-country-de-os-android-session-s1-lifetime-30:PASSWORD@proxy.foura.ai:34004" \
https://example.com
Shared sind FourAs eigene Exits: der Standard und in deinem Plan enthalten. Premium sind Privatadressen, bezogen aus dem Premium-Traffic deines Plans plus etwaigen Zukäufen. Im Shared-Netzwerk erlaubt -fallback-premium einer Verbindung, auf einen Premium-Exit zu wechseln, wenn der Shared-Exit sie nicht bedienen kann. Das ist standardmäßig deaktiviert und greift nur, solange Premium-Guthaben vorhanden ist. Eine standardmäßige Aktivierung würde bedeuten, ungefragt dein Guthaben zu verbrauchen.
Country ist wiederholbar, -country-de-country-fr ist also ein Scope über zwei Länder. Region, Stadt, Netzwerk nach AS-Nummer, Gerät (windows, android, ios, mac) und lifetime (3 bis 1440 Minuten) sind Premium vorbehalten. Fragst du im Shared-Netzwerk nach einer Stadt, erhältst du einen 400 statt Best-Effort. Shared wird nach Land und nicht genauer ausgewählt, da ein meist nicht einhaltbarer Stadt-Filter schlechter ist als gar kein Filter.
-session-<name> (1 bis 32 Buchstaben, Ziffern oder Unterstriche) macht Verbindungen sticky: Jede Verbindung mit diesem Namen teilt sich eine Adresse. Bei Shared bleibt die Adresse in einem rollierenden Zehn-Minuten-Fenster aktiv, solange du sie nutzt. Bei Premium bleibt sie für die von dir festgelegte lifetime oder den Netzwerkstandard aktiv. Lässt du die Session weg, nutzt jede Verbindung eine neue Adresse.
Dazu kommen gespeicherte Standards. Ein im Dashboard für einen Proxy-Benutzer gespeichertes Targeting gilt für jede Verbindung dieses Benutzers, sodass der Verbindungsstring auf die reinen Zugangsdaten schrumpfen kann. Der Benutzername hat für seine eigene Verbindung weiterhin Vorrang, und any setzt einen gespeicherten Wert zurück: -city-any fragt für einen Schlüssel mit hinterlegtem München ganz Deutschland ab. Clients, die Header an einen CONNECT übergeben können (curl unterstützt dies mit --proxy-header), können dieselben Optionen wie X-Foura-Country, X-Foura-Session und den Rest senden. Ein Header überschreibt dabei den Benutzernamen.
Impact
Das meiste davon sorgt dafür, dass sich bestimmte Fragen erübrigen.
Warum wurde ich abgewiesen? Jede Ablehnung nach Prüfung der Zugangsdaten enthält einen X-Foura-Error-Header mit einer einzeiligen Begründung. Ein 400 nennt die Option und die akzeptierten Werte. Ein 429 gibt an, welches Limit deines Plans erreicht wurde: gleichzeitig offene Tunnel, Tunnelöffnungen pro Minute oder Standard-Traffic für den Abrechnungszeitraum.
Wessen Kontingent ist es? Das des Accounts. Tunnel und Öffnungen werden pro Account gezählt, nicht pro Proxy-Benutzer. Ein zweiter Satz Zugangsdaten verdoppelt also kein Kontingent. Bytes zählen zum Bandbreitenvolumen deines Plans, Premium-Bytes zu deinem Premium-Kontingent innerhalb dieses Gesamtvolumens, niemals zusätzlich. Bei Plänen auf Guthabenbasis enthält der Port eigene Inklusiv-Gigabyte, die über die Billing-Seite aufgeladen werden. Scheitert der Tunnelaufbau, wird nichts gezählt.
Wem gehören die Zugangsdaten? Sie können einer Organisation gehören, damit der Downloader eines Unternehmens nicht stoppt, sobald eine Person das Team verlässt. Mitglieder nutzen sie und lesen ihr Passwort aus; Admins und Owner rotieren, deaktivieren oder rekonfigurieren sie; nur der Owner kann sie entfernen.
Was hat das gebracht? Schalte den Produkt-Schalter auf Overview, Metrics oder Activity auf Proxy um: Tunnel in denselben Outcome-Klassen wie deine API-Requests, wie viele gerade offen sind, Setup-Zeit und Traffic, aufgeschlüsselt nach Proxy-Benutzer, Ziel, Exit-Land oder Client-IP. Eine Session, die ihre Adresse bereits hat, verbindet sich meist in deutlich unter einer Sekunde.
Aber der Port ist eine Pipe, und das ist der Trade-off. Dein Client kommuniziert über den Tunnel mit der Website, daher liegen der Unblocker, deine validate-Regeln und browserbasiertes Challenge-Solving nicht in diesem Pfad. Es werden auch Bytes erfasst: Eine Fehlerseite, die über einen offenen Tunnel übertragen wird, zählt als Bytes wie jede andere, während bei der API ein nicht erfolgreicher Request nicht abgerechnet wird. Leite Bytes über den Port; sende Seiten, die blockieren, an die API.
Für Power-User
Sobald das Premium-Kontingent aufgebraucht ist, erhalten die drei Routen in dieses Netzwerk bewusst drei unterschiedliche Antworten. Eine Verbindung, die -network-premium explizit nennt, wird mit einem entsprechenden 403 abgelehnt. Denn ein Caller, der stillschweigend von woanders bedient wird, würde weiter anfragen und später auf der Rechnung nach einer Premium-Position suchen, die dort nie auftaucht. Der Fallback wird schlicht nicht genutzt, und ein auf dem Proxy-Benutzer hinterlegter Premium-Default fällt auf das Shared Network zurück, sodass sich der Tunnel dennoch öffnet. Keiner von beiden hat sich dafür entschieden, für diese Verbindung extra zu zahlen.
Drei Kombinationen werden direkt abgelehnt, statt sie nur teilweise zu verarbeiten: feineres Targeting im Shared Network, -fallback-premium zusammen mit -network-premium, und feineres Targeting bei aktivem Fallback. Der Port akzeptiert ausschließlich CONNECT. Ein Client, der einen einfachen http://-Request weiterleitet, anstatt ihn zu tunneln, erhält einen 405 (curl tunnelt ihn mit --proxytunnel). Und ein Browser, der über den Port gesteuert wird, sollte immer einen Session-Namen tragen, da ein einzelner Seitenaufruf Dutzende von Verbindungen öffnet.
Mehrere Worker, jeweils mit eigener Adresse? Gib jedem einen eigenen Session-Namen:
import requests
TEMPLATE = "http://USERNAME-country-de-session-{name}:PASSWORD@proxy.foura.ai:34004"
def worker_session(name):
proxy = TEMPLATE.format(name=name)
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
return s
workers = [worker_session(f"w{i}") for i in range(4)]
print(workers[0].get("https://example.com").status_code)
Das Dashboard macht dasselbe im großen Stil: Wähle Sticky, lege die Anzahl fest, und der Tab Connection string listet eine Zeile pro Adresse auf, als URL oder als host:port:user:pass für Proxy Manager. Du wunderst dich über eine Ablehnung? Füge -sv zum cURL-Aufruf hinzu und leite 2>&1 | grep -i x-foura-error weiter. Alle Optionen findest du in der proxy port reference und den Dashboard-Teil unter Proxy Users.
Was kommt als Nächstes
Der erste Client, den wir auf Proxy Users aufgebaut haben, ist unser eigener. Die FourA Chrome extension leitet deinen Browser durch einen davon: Wähle Netzwerk und Land, aktiviere den Schalter, und eine Statuszeile zeigt die Adresse, die Websites sehen. Es ist eine Beta, nicht im Chrome Web Store, die du über Tools im Dashboard im Entwicklermodus installierst. Mit Blick auf die Zukunft steht organization billing auf der öffentlichen Roadmap. Das ist hier relevant, weil der Proxy User einer Organisation aktuell über den jeweiligen Eigentümer dieser Organisation abgerechnet wird.
Eine Proxy-URL ist der älteste Integrationsvertrag überhaupt, und jedes deiner Tools beherrscht ihn bereits. Der entscheidende Teil war nie der Tunnel. Es ist das, was der String davor bedeuten darf, und was passiert, wenn du ihn falsch konfigurierst.