Highlights
Früher war eine Organisation nur eine Zeile, die immer nur eine Person enthalten konnte. Jetzt ist sie eine Seite, die du verwaltest: Lade Kollegen ein, weise ihnen Rollen zu und lass sie Keys erstellen, die das Unternehmen bezahlt. Proxy Finder antwortet auch nicht mehr mit "out of tries", sondern benennt das konkrete Hindernis. Browser hat die Woche damit verbracht sicherzustellen, dass er einer Seite zweimal dieselbe Geschichte erzählt.
What's New
Organisationen, die du wirklich verwalten kannst
Um einen Kollegen hinzuzufügen, musste man uns früher eine E-Mail schreiben. Teams kauften deshalb zwei getrennte Abonnements.
Deine Organisation hat jetzt eine eigene Seite im Dashboard mit drei Rollen dahinter. Der Owner trägt das Abonnement, über das seine Keys abgerechnet werden. Es gibt genau einen Owner und der Besitz wechselt per Transfer. Admins verwalten Nutzung, Abrechnung und Mitglieder. Members nutzen das Produkt. Einladungen erfolgen per E-Mail-Adresse und funktionieren auch für Personen, die noch nie registriert waren.
Jeder in einer Organisation kann Keys erstellen, die ihr gehören, und einen persönlichen Key dorthin verschieben. Entwickler brauchen also keinen persönlichen Key mehr, der ihnen Firmenarbeit in Rechnung stellt. Die Nutzung eines Org-Keys wird über den Plan des Owners abgerechnet und jede Bestätigung zeigt, wessen Plan zahlt. Jedes Mitglied kann einen Key umbenennen. Das Neugenerieren, Deaktivieren und Löschen bleibt Owners und Admins vorbehalten, da dies sofort alle Kollegen blockiert, die ihn nutzen.
Ein Owner-Filter gilt für Overview, Detailed Metrics, Recent Activity und deine Key-Liste. Usage & Limits sowie Billing bleiben persönlich, da Mitglieder das Kontingent des Owners nichts angeht.
Proxy Finder rät nicht mehr
"Download maxTry limit reached" sah gleich aus, egal ob jeder Exit blockiert war, jeder Exit tot war oder wir die echte Seite geladen haben und deine eigene Regel sie verworfen hat. Diese drei Fälle erfordern völlig unterschiedliche Lösungen.
Ein fehlgeschlagener Task enthält jetzt attemptReport: wie viele Exits nie geantwortet haben, wie viele von einer erkannten Defense blockiert wurden und von welchen Anbietern, wie viele deine validate.status abgewiesen hat und wie viele HTTP 200 ohne erkennbare Defense geliefert haben und nur an deiner validate.data gescheitert sind. Ein klarer Zusammenfassungssatz wird mitgeliefert.
Aber dieser letzte Zähler ist der entscheidende. Eine Inhaltsregel, die nicht matchen kann, sieht aus jeder früher gemessenen Perspektive wie eine Blockierung aus, und kein Retry wird das jemals beheben. (Mehr dazu, wie validate-Regeln über den Erfolg entscheiden.)
Die andere Hälfte ist also das Profil. Proxy Finder hat Exits rotiert, aber nie die Client-Signatur. Eine Website, die ein Browser-Profil ablehnte, lehnte es an jedem Exit im Pool ab. Eine Ablehnung wechselt jetzt das Profil bei einem ohnehin geplanten Retry, sodass Requests und Credits pro Task gleich bleiben. Pinnst du profile selbst, ändert sich nichts. Bei den schwierigsten Zielen zählt der Exit, auf dem du landest, allerdings immer noch mehr als das Profil, das du sendest.
Browser widerspricht sich nicht mehr
Den Browser nach einem User-Agent zu fragen, war früher schlimmer, als gar nicht zu fragen. Drei Layer hatten jeweils ihre eigene Vorstellung davon, wer der Request war. So konnte ein einzelner Request gleichzeitig Windows, einen Mac und eine Version vorgeben, die die Flotte gar nicht nutzte. Jetzt gibt es einen einzigen Wert, einmal festgelegt und überall übernommen: beim Start, auf der Seite und in den Workern, die die Seite startet.
Client Hints werden aus diesem String abgeleitet, sodass sec-ch-ua, die Plattform und navigator.platform damit übereinstimmen. Die Response meldet den tatsächlich gesendeten String zurück. Das ist wichtig, da Clearance-Cookies an den Exit und den User-Agent gemeinsam gebunden sind. Auch die Renderer-Abfrage liefert im Dokument und im Worker nun dieselbe Antwort, ein weiteres der schwachen Signale, die sich summieren.
Drei weitere Änderungen kamen damit:
- Die Uhrzeit folgt dem Exit. Browser läuft in der Zeitzone des Landes, in dem dein Exit liegt. Wenn eine Seite lokale Zeiten rendert, sieht sie genau das, was ein Besucher von dort sehen würde. Ist das Land nicht bekannt, bleibt die Uhrzeit unverändert.
- WebRTC bleibt auf demselben Pfad wie alles andere. Eine Proxy-Einstellung deckt ab, was ein Browser über TCP sendet. WebRTC liegt nicht auf diesem Pfad, daher erhält eine Seite, die ICE-Kandidaten abfragt, eine separate Antwort. Browser schaltet das ab, sobald ein Request einen Exit nutzt.
- Geankerte URLs kosten nur das, was sie sollten. Eine URL, die auf
#reviewsendete, lief früher jedes Mal ins Timeout. Sie läuft wieder mit normaler Geschwindigkeit.
Günstigere Routen und ein Dashboard, das präzise zählt
Imperva schleust sein Skript in funktionierende Seiten ein, nicht nur in Block-Seiten. Auto konnte beides nicht unterscheiden, weshalb funktionierende Seiten grundlos an einen Browser eskaliert wurden. Auf einer Mietwagen-Website waren das 75 Credits und 27,5 Sekunden über sechs Versuche. Jetzt ist es ein Versuch, 10 Credits, etwa sechseinhalb Sekunden. Einige Websites übergeben eine Session innerhalb der Ablehnung, mit der sie auf einen Request ohne Session antworten. Alle vier Engines senden diese nun direkt zurück, bevor sie eskalieren.
Die Übersichtskarte für Credits zeigte alle verbrauchten Credits an und deklarierte sie als abgerechnet. Bei Pay-for-Success unterscheiden sich diese Werte, und die Differenz bedeutet echtes Geld. Daher stehen jetzt beide auf der Karte: abgerechnet als Hauptzahl, verbraucht darunter, pro Produkt und insgesamt. Die Requests-Karte ist genauso aufgeteilt. Zeitraum und Detaillierungsgrad sind nun ebenfalls separate Bedienelemente, von 30 Minuten bis zu einem Jahr plus benutzerdefiniertem Bereich. Die Schaltfläche mit der Aufschrift "1D", die dreißig Tage öffnete, ist damit Geschichte.
Im Playground bietet der Übernehmen-Button nun das Profil aus der letzten Response an. Ein Request, der mit einem nicht manuell eingegebenen Profil gesendet wurde, wiederholt so genau die funktionierende Version. Jeder Parameter ist in der API-Referenz zu finden.
Unter der Haube
Proxy Finder behält mehr Verlauf pro Host: 32 Exits statt einem Dutzend. In einem Live-A/B-Test war die Leistung bei einfachen Zielen gleichauf und bei schwierigen Zielen besser, wo die mediane Zeit bis zur Seite von 5,5 s auf 3,8 s sank, während die flottenweite Latenz unverändert blieb. Ein Ziel entwickelte sich gegenteilig und wir wissen noch nicht warum, weshalb es eine eigene Messung erhält.
Ein Task, der fehlschlägt, schlägt so oder so fehl. Der Unterschied ist, ob du das Ticket in einer Minute schließt oder den Nachmittag damit verbringst, das Falsche zu messen.