Wie zähme ich Charles Proxy?

Hallo! Viele von denen, die zu Interviews für eine Testerposition zu uns kommen, versichern stolz, dass sie Charles Proxy verwenden können. Wenn Sie jedoch in den technischen Teil eintauchen, wird deutlich, dass der Kandidat nur von diesem Tool gehört hat. Lassen Sie uns diese Vase endlich zähmen!







Wikipedia sagt uns, dass:



Charles ist eine plattformübergreifende HTTP-Debugging-Proxy-Anwendung, die in Java geschrieben wurde. Der Benutzer kann HTTP, HTTPS und aktivierten TCP-Portverkehr anzeigen, auf den vom, zum oder über den lokalen Computer zugegriffen wird. Dies umfasst Anforderungen und Antworten, einschließlich HTTP-Header und Metadaten (z. B. Cookies, Caching und Codierungsinformationen), mit Funktionen, mit denen Entwickler und Tester Verbindungen analysieren und Nachrichten austauschen können.


Eine kleine Erklärung Beim



Sniffing werden alle Pakete, die über das Netzwerk übertragen werden, mithilfe von Sniffing-Tools (Charles Proxy) überwacht und abgefangen.



Die ersten Schritte



1. Installation und Start



Zuerst müssen Sie die Anwendung herunterladen und installieren.



Wenn Sie keine Lizenz erworben haben, ist eine 30-Tage-Testversion mit Einschränkungen verfügbar (die Funktionalität ist nicht blockiert, aber Fenster werden mit einer Zeitüberschreitung von 5 bis 10 Sekunden angezeigt, bevor die Verwendung wieder aufgenommen wird, und die Anwendung wird nach 30 Minuten beendet).



2. Wir beginnen mit dem Abhören des Datenverkehrs.



Starten Sie Charles Proxy und gehen Sie zum Menü HilfeSSL-ProxyCharles Root-Zertifikat installieren (siehe 1) → Zertifikat installierenZertifikat importieren .







Jetzt sehen Sie Anforderungen, diese sind jedoch verschlüsselt, und außer den Hieroglyphen ist nichts sichtbar. Um die Anforderung / Antwort in ihrer normalen Form anzuzeigen, müssen Sie SSL-Proxy aktivieren und die Domänen konfigurieren, deren Pakete abgefangen werden sollen. Und wir möchten Anfragen von allen Standorten erhalten. Gehen Sie dazu zu ProxySSL-Proxy-Einstellungen . Aktivieren Sie im folgenden







Dialogfeld das Kontrollkästchen SSL-Proxy aktivieren , wählen Sie den Abschnitt Einschließen aus und klicken Sie auf Hinzufügen .







Füllen Sie anschließend das Feld Host mit * aus (siehe Abbildung) und klicken Sie auf OK .







Klicken Sie im Dialogfeld SSL-Proxy-Einstellungen auf OK .







Jetzt können Sie an den Server gesendete Anforderungen und Serverantworten überwachen.



3. Proxying Webbrowser-Verkehr



Wenn Sie Charles neu starten, müssen Sie nur Windows Proxy (wenn Sie Windows haben) oder Mac Proxy aktivieren.







4. Konfigurieren eines Proxys unter Android



Um Android-Anwendungsanforderungen anzuzeigen, benötigen Sie eine entsprechende Android-Anwendungsassembly mit der im Manifest festgelegten Berechtigung. Stellen wir uns vor, wir hätten eine solche Anwendung und möchten damit Datenverkehr abrufen.



Dazu ermitteln wir die IP-Adresse des PCs: Gehen Sie in Charles Proxy zu HilfeLokale IP-Adresse . Wir sehen, dass Sie die IP : 192.168.1.50.







Nehmen Sie als nächstes den Hörer ab und öffnen Sie ihnNetzwerkeigenschaften → WLAN-Netzwerkname → Proxyserver → Handbuch → Hostname: * Ihre IP * / Port: * 8888 * → Speichern Sie die geänderten Netzwerkeigenschaften.



Jetzt müssen Sie dem Link chls.pro/ssl oder charlesproxy.com/getssl folgen , und dann wird der automatische Download des Zertifikats gestartet. Öffnen Sie es, legen Sie einen Namen für das Zertifikat fest und Sie haben jetzt Zugriff auf den Android-App-Verkehr.



5. Proxy unter iOS konfigurieren



Nehmen Sie Ihr iPhone in die Hand und öffnen Sie Netzwerkeigenschaften → WLAN-Netzwerkname → Proxyserver → Handbuch → Hostname: * Unsere IP * / Port: * 8888 * → Speichern Sie die geänderten Netzwerkeigenschaften.



Jetzt müssen Sie dem Link chls.pro/ssl oder charlesproxy.com/getssl folgen, "Zulassen" Laden des Konfigurationsprofils. Gehen Sie anschließend zu EinstellungenProfil geladenInstallieren . Gehen Sie dann zu EinstellungenAllgemeinÜber dieses GerätZertifikate vertrauen → Suchen Sie das installierte Zertifikat und machen Sie es zu "Vertrauenswürdig".



Charles Proxy-Funktionalität



  1. Datensubstitution:

  2. Proxy:

  3. Werkzeuge:

  4. Aufnahmeeinstellungen
  5. Fokus
  6. Wiederholen
  7. Wiederholen Sie Erweitert


1. Datenersetzung



Stellen wir uns vor, wir müssen das Layout auf dem Client testen. Sie müssen überprüfen, wie eine große Anzahl von Benutzerboni angezeigt wird. Eine der Optionen, die viele anbieten: Ändern Sie die Anzahl der Boni in der Datenbank und überprüfen Sie den Client. Ja, du wirst recht haben! Der Server verfügt jedoch möglicherweise über einen Cache, und Sie müssen eine Weile warten, bis die Anzahl der Boni aktualisiert wurde, oder einfach eine Verbindung zur Datenbank selbst herstellen und die Anforderung ausführen. Dies dauert eine gewisse Zeit. Es gibt eine einfachere Option: Ändern Sie die Antwort vom Server! Charles Proxy hat drei Möglichkeiten, Daten zu fälschen:



1.1 Haltepunkt



Haltepunkt ist eine Art Haltepunkt für eine Anfrage. Wenn eine Anforderung aus der angegebenen Liste gefunden wird, wird ein separates Fenster für die weitere manuelle Interaktion mit den Anforderungsparametern geöffnet. Gehen Sie darin zum manuellen Ändern der Anforderungen und Antworten. Es ist praktisch, diese Funktion beim Testen der API oder verschiedener Serverantworten zu verwenden.



Wir haben eine Anwendung und ein Benutzerprofil, die derzeit 0 Boni auf ihrem Konto haben:





Die Anfrage, in der diese Anzahl von Boni eingeht: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8







Um den Haltepunkt an der Anfrage zu "hängen", gehen Sie zum Abschnitt ProxyHaltepunkteinstellungen . Aktivieren Sie als Nächstes das Kontrollkästchen Haltepunkte aktivierenHinzufügen und fügen Sie im daraufhin geöffneten Dialogfeld "Haltepunkt bearbeiten" die im Screenshot gezeigte Anforderungs-URL ein: Aktivieren







Sie beispielsweise die Kontrollkästchen "Anforderung" und "Antwort". Klicken Sie dann im Fenster Haltepunkteinstellungen auf OK und erneut auf OK . Führen Sie nun die Anforderung erneut aus, dh der Client öffnet den Bildschirm mit dem Benutzerprofil erneut.



In Charles Proxy können wir sehen, dass die Anforderung angehalten wurde:







Hier können Sie die Abfrageparameter ändern. Jetzt müssen Sie dies nicht mehr tun. Klicken Sie auf "Ausführen". Als nächstes pausieren wir die bereits vom Server empfangene Antwort. Hier müssen wir die "Antwort" bearbeiten. Finden Sie den gewünschten Parameter - bonus_cnt»: 45.







Ändern Sie dann den Wert des Parameters bonus_cntbeispielsweise in 1.000.000 Boni und klicken Sie auf "Ausführen".







Der Kunde zeigt die neue Anzahl an Boni an. Wir sind reich!





1.2 Umschreiben



Rewrite ist ein Tool, mit dem Sie Regeln erstellen können, mit denen Anforderungen und Antworten beim Durchlaufen des Charles Proxy geändert werden. Sie können beispielsweise einen Titel hinzufügen und ändern, Text im Text einer Antwort oder Anfrage suchen und ersetzen usw.



Versuchen wir, Rewrite zu verwenden, um die Höhe der Boni unserer Benutzer zu ändern. Öffnen Sie dazu ExtrasUmschreiben → Aktivieren Sie das Kontrollkästchen „ Umschreiben aktivieren “ → Hinzufügen . Im Feld Name können Sie einen beliebigen Namen für die Ersetzung eingeben, z. B. "Bonus ändern", oder die Standardeinstellung "Satz ohne Titel" beibehalten.







Der nächste Schritt besteht darin, den Anforderungspfad zu "Standort" hinzuzufügen. Dazu im Abschnitt StandortHinzufügenFüllen Sie die folgenden Felder aus und speichern Sie:



Host: https://api.youla.io



Pfad: /api/v1/user/5e6222bbbedcc5975d2375f8







Nachdem Sie den Anforderungspfad hinzugefügt haben, müssen Sie den Parameter selbst und seinen Wert ändern. Dazu müssen Sie eine Umschreiberegel erstellen :



Typ: Body (da sich der Parameter im Body befindet);



Wobei: Antwort (weil der Parameter in der Antwort vom Server enthalten ist);



Übereinstimmungsabschnitt: Geben Sie unter "Wert" den Wert und den Parameter an, den der Server zurückgibt.



Abschnitt ersetzen: Geben Sie unter "Wert" den Wert und den Parameter an, die auf dem Client angezeigt werden sollen.







Speichern Sie als Nächstes die "Umschreiberegel" und klicken Sie auf der Registerkarte "Umschreibeinstellungen" auf OK. Fordern Sie auf dem Client das Benutzerprofil erneut an. Sie haben die Anzahl der Benutzerboni automatisch geändert. Wir sind wieder reich!





1.3 Karte lokal



Map Local ist ein Tool, mit dem Sie lokale Dateien so verwenden können, als wären sie Teil eines Servers.



Gehen Sie zu Extras → Lokal zuordnen.







Klicken Sie anschließend im Fenster Lokale Einstellungen zuordnen auf Hinzufügen → Host: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8→ Lokaler Pfad: Der Pfad auf dem Computer zur Datei. Sie können vorgefertigte Mediendateien, HTML, CSS, JSON, XML verwenden. Es ist natürlich besser für Entwickler geeignet, keine Daten für die anschließenden Tests auf den Server hochzuladen, aber ein Tester kann auch eine kompetente Anwendung finden. Wir haben die Antwort, die wir benötigen, im Voraus vorbereitet und in der Datei change_bonus.json gespeichert:







Speichern Sie die eingegebenen Werte auf der Registerkarte "Mapping bearbeiten" und auf der Registerkarte "Lokale Einstellungen zuordnen".







Fordern Sie auf dem Client das Benutzerprofil erneut an. Sie haben die Anzahl der Benutzerboni automatisch geändert. Wir sind wieder reich!





Werfen wir einen Blick auf andere Funktionen des Charles Proxy-Tools. Beginnen wir von vorne mit der Registerkarte "Proxy".



2.1 Drosselklappeneinstellungen



Die Drosselklappeneinstellungen sind eine Funktion, mit der Sie verschiedene Parameter der Verbindungsgeschwindigkeit für die ausgewählte Domäne einstellen können.



Eine Funktion für diejenigen, die gerne im Aufzug, in der U-Bahn, in der Unterführung testen. Gehen wir zu ProxyDrosselklappeneinstellungen → Kontrollkästchen Drosselung aktivieren . Wenn Sie nicht alle oben genannten Punkte verstehen, können Sie die Drosselklappenvoreinstellung verwenden und die geeignete Geschwindigkeit für den Test auswählen. Das System füllt die restlichen Felder automatisch aus.







Wenn Sie "Nur für ausgewählte Hosts" auswählen, können Sie einen bestimmten Host festlegen, für den Ihre Einstellungen gelten. Hier können Sie vorgefertigte Voreinstellungen mit Einstellungen für verschiedene Typen (4G, 3G usw.) verwenden. Und Sie können auch verschiedene Parameter einstellen, von denen ich einige kurz auflisten werde:



Die Bandbreite ist die maximale Datenmenge, die im Laufe der Zeit übertragen werden kann.



Die Auslastung ist der Bruchteil der gesamten Bandbreite, die dem Benutzer zu einem bestimmten Zeitpunkt zur Verfügung gestellt werden kann.



Latenz - Latenz in Millisekunden auf erste Anfrage zwischen Client und Remote-Server.



MTU ist die maximale Sendeeinheit für die aktuelle Voreinstellung.



Zuverlässigkeit - Ein Maß für die Wahrscheinlichkeit, dass eine Verbindung ausfällt. Wird verwendet, um unzuverlässige Netzwerkbedingungen zu simulieren.



Die Stabilität ist ein Maß für die Wahrscheinlichkeit, dass eine Verbindung instabil ist und daher an Qualität verliert. Nützlich für die Simulation von Netzwerken, in denen die Qualität der Kommunikation regelmäßig abnimmt, z. B. mobil.



2.2 Reverse Proxies



Reverse Proxy ist ein Reverse Proxy Server. Wird normalerweise verwendet, um Anforderungen aus dem Internet zu empfangen und an einen der Webserver umzuleiten.







2.3 Portweiterleitung



Port Forwarding bezeichnet manchmal als Portweiterleitung oder Tunnelbau, ist der Prozess , der Verkehrsweiterleitung an einen bestimmten Netzwerk - Port von einem Netzknoten zu einem anderen gerichtet. Diese Methode ermöglicht es einem externen Benutzer, einen Port innerhalb des lokalen Netzwerks zu erreichen.







2.4 MacOS-Proxy / Windows-Proxy



MacOS Proxy oder Windows Proxy (abhängig von Ihrem Betriebssystem) - Proxy- Verkehr von Ihrem Webbrowser.







Nachdem wir uns mit dem Abschnitt Proxy befasst haben, fahren wir mit dem Abschnitt Extras fort.



3.1 Kein Caching



Das Tool " Kein Caching" verhindert das Caching, indem es die HTTP-Header bearbeitet , die das Zwischenspeichern von Antworten steuern. Header If-Modified-Sinceund If-None-Matchwerden aus Anforderungen entfernt Pragma: no-cacheund hinzugefügt Cache-control: no-cache. Headers Expires, Last-Modifiedund ETagwird von der Antwort entfernt und hinzugefügt Expires: 0, und Cache-Control: no-cache.







3.2 Cookies blockieren



Cookies blockieren - Der Cookie-Header wird aus Anforderungen entfernt, wodurch verhindert wird, dass Dateiwerte von einer Clientanwendung (z. B. einem Webbrowser) an einen Remoteserver gesendet werden. Außerdem wird der Set-Cookie-Header aus den Antworten entfernt, wodurch verhindert wird, dass die Clientanwendung Anforderungen zum Setzen von Cookies vom Remoteserver empfängt. In den Einstellungen können Sie das Entfernen von Cookies sowohl für alle als auch für ausgewählte Hosts aktivieren. Das folgende Beispiel ermöglicht das Löschen von Cookies für alle Anforderungen.







3.3 Map Remote



Map Remote - Ermöglicht das Umleiten von Anforderungen von einer Map From URL zu einer anderen Map To. Ersetzt je nach Aufgabe den Host, den gesamten Pfad oder nur die Parameter. Im folgenden Beispiel wird die Anforderung vom Produktserver an den Entwicklungsserver ersetzt.







3.4 Sperrliste



Sperrliste - Ermöglicht das Blockieren bestimmter Domainnamen. Wenn ein Webbrowser versucht, eine Seite von einem blockierten Domainnamen anzufordern, wird diese blockiert. Sie können entweder "Verbindung trennen" wählen oder 403-Fehler zurückgeben.







3.5 DNS-Spoofing



Shared Hosting ist, wenn Sie mehrere Sites mit derselben IP-Adresse haben und der Webserver anhand des im Browser eingegebenen Namens bestimmt, welche Site Sie anfordern. Genauer gesagt betrachtet der Server den in der Anforderung gesendeten Host-Header. Wenn Sie beispielsweise Hosts ersetzen müssen, damit Anforderungen bei der Eingabe einer Adresse im Browser (z. B. api.youla.ru) an eine andere Adresse gesendet werden (z. B. an eine Testsite).



DNS-Spoofing - Leitet einen Domainnamen an eine bestimmte IP-Adresse um.







3.6 Spiegeln



Spiegeln - Mit dieser Funktion können Sie alle an Charles Proxy zurückgegebenen Antworten automatisch speichern. Sie sind lokal in derselben Hierarchie wie auf dem Server angeordnet. Wenn plötzlich eine Ausfallzeit im Backend auftritt, die Testumgebung abfällt usw., haben Sie bereits vorgefertigte Mocks für Map Local. Sie können die Funktion folgendermaßen aktivieren: ExtrasSpiegeln oder ExtrasAutomatisch speichern .







3.7 Verfassen



Compose ist eine Funktion zum Bearbeiten der von Ihnen erfassten Abfragen.



Beispielsweise fügen Sie Ihren Favoriten ein Produkt hinzu, das jedoch aus irgendeinem Grund nicht hinzugefügt wird. Sie können eine bereits übermittelte Anfrage bearbeiten und erneut senden. Wählen Sie dazu die gewünschte Anfrage aus der Liste aus, klicken Sie mit der rechten Maustaste darauf und wählen Sie Verfassen . Das Anforderungssymbol ändert sich und Sie können es jetzt sicher bearbeiten.







Nachdem Sie die erforderlichen Werte in der Anforderung geändert haben, klicken Sie unten auf "Ausführen", um die Anforderung an den Server zu senden.







4. Aufnahmeeinstellungen



Aufnahmeeinstellungen - Einstellungen zum Anzeigen der Listen der zulässigen und blockierten Domänen.



Auf der Registerkarte "Optionen" können Sie das Limit konfigurieren, dh die Anzahl der Anforderungen, die Charles Proxy aufzeichnen kann.







Auf der Registerkarte "Einschließen" können Sie eine bestimmte Domäne zum Anzeigen von Paketen auswählen.







Auf der Registerkarte "Ausschließen" können wir die Domänen auswählen, die beim Schnüffeln ausgeblendet werden müssen.







5. Fokus



Fokus - Diese Funktion verschiebt die Domain an die ersten Positionen in der Liste. 







6. Wiederholen



Wiederholen - sendet eine Anfrage an den Server, die mit der ausgewählten identisch ist.







7. Wiederholen Sie Erweitert



Repeat Advanced - identisch mit Repeat, nur Sie können die Anzahl der gesendeten Anfragen und die Verzögerung zwischen ihnen auswählen. Diese Funktion ist nützlich, wenn Sie die Reaktion des Servers auf Überschwemmungen überprüfen.



Hier ist Parallelität die Anzahl der Benutzer und Iterationen die Häufigkeit, mit der jede Anforderung wiederholt wird. Sie können auch das Kontrollkästchen "Ergebnisse in neuer Sitzung anzeigen" aktivieren. In diesem Fall wird ein neues Fenster geöffnet, in dem Anforderungen ausgeführt werden.







Zusammenfassung



In diesem Artikel haben wir versucht, die Charles Proxy-Funktionen zu beschreiben, die von Testern für mobile Anwendungen verwendet werden. Das ist alles, und vergessen Sie nicht, die Sitzung vom Sniffer an den Fehlerbericht anzuhängen.



All Articles