Το Charles Proxy είναι ένας cross-platform διακομιστής μεσολάβησης για αποσφαλμάτωση κίνησης HTTP/HTTPS, που χρησιμοποιείται από προγραμματιστές για υποκλοπή, προβολή και τροποποίηση αιτημάτων δικτύου. Σύμφωνα με τον Karl von Randow, δημιουργό του εργαλείου (2025), το Charles χρησιμοποιείται σε περισσότερες από 50.000 εταιρείες παγκοσμίως από το 2004. Το Proxy υποστηρίζει υποκλοπή κίνησης από κινητές συσκευές μέσω WiFi, HTTPS διαμεσολάβηση με εγκατάσταση ριζικού πιστοποιητικού και ένα ευρύ σύνολο εργαλείων για ανάλυση API.
Βασικά Σημεία
Charles Proxy — είναι ένα HTTP proxy και HTTP monitor που λειτουργεί ως ενδιάμεσος μεταξύ πελάτη και διακομιστή. Όλα τα αιτήματα και οι απαντήσεις περνούν μέσω του Charles, επιτρέποντας την προβολή του περιεχομένου τους, την ανάλυση δομής, την τροποποίηση δεδομένων σε πραγματικό χρόνο και την προσομοίωση διαφόρων συνθηκών δικτύου. Διαθέσιμο για Windows, macOS και Linux.
Το Charles Proxy δημιουργήθηκε το 2004 από τον Karl von Randow και παραμένει ένα από τα πιο δημοφιλή εργαλεία για αποσφαλμάτωση κίνησης δικτύου. Σε αντίθεση με τις δωρεάν εναλλακτικές, το Charles προσφέρει πληρωμένη άδεια με 30ήμερη δοκιμαστική περίοδο. Το εργαλείο τοποθετείται ως επαγγελματική λύση για προγραμματιστές κινητών εφαρμογών, web developers και μηχανικούς QA που χρειάζονται πλήρη έλεγχο επί των επικοινωνιών HTTP.
Το Charles λειτουργεί ως system proxy στον υπολογιστή και μπορεί να υποκλέπτει κίνηση από οποιεσδήποτε συσκευές στο ίδιο δίκτυο: Android, iOS, προσομοιωτές, εξομοιωτές, προγράμματα περιήγησης και συσκευές IoT. Για υποκλοπή HTTPS, πρέπει να εγκαταστήσετε το ριζικό πιστοποιητικό Charles σε κάθε συσκευή. Η κίνηση υποστηρίζεται σε HTTP/1.1 και HTTP/2 (μερικώς). Το HTTP/3 (QUIC) δεν υποστηρίζεται σε επίπεδο υποκλοπής.
Το Charles λειτουργεί με βάση την αρχή του MITM (Man-in-the-Middle) proxy: όταν ένας πελάτης στέλνει ένα αίτημα μέσω Charles, το εργαλείο υποκλέπτει αυτό το αίτημα, το προωθεί στον διακομιστή προορισμού, λαμβάνει την απάντηση και την επιστρέφει στον πελάτη. Όλη η κίνηση περνά μέσω Charles, επιτρέποντας την ανάλυση και τροποποίησή της.
Κατά την εκκίνηση, το Charles δημιουργεί ένα τοπικό HTTP proxy στη θύρα 8888 (προεπιλογή). Το λειτουργικό σύστημα ή η εφαρμογή ρυθμίζεται να χρησιμοποιεί αυτό το proxy. Όλα τα HTTP αιτήματα αποστέλλονται πρώτα στο Charles, το οποίο στη συνέχεια λειτουργεί ως πλήρης πελάτης για τον διακομιστή προορισμού. Για HTTPS, το Charles χρησιμοποιεί τη δική του τεχνική SSL-proxy: δημιουργεί ένα πιστοποιητικό εν κινήσει για κάθε τομέα, υπογεγραμμένο από το ριζικό πιστοποιητικό Charles. Εάν το ριζικό πιστοποιητικό είναι εγκατεστημένο ως αξιόπιστο στη συσκευή, το Charles μπορεί να αποκρυπτογραφήσει και να δει την κίνηση HTTPS.
Το Charles υποστηρίζει δύο λειτουργίες: Proxy (κλασικός διακομιστής μεσολάβησης) και SOCKS Proxy (για κίνηση UDP και TCP). Για ανάπτυξη ιστού, χρησιμοποιείται το τυπικό HTTP-proxy. Για κινητές συσκευές — ρύθμιση WiFi Proxy στη συσκευή με καθορισμό της διεύθυνσης IP του υπολογιστή που εκτελεί το Charles. Το MacOS υποστηρίζει αυτόματη ρύθμιση proxy για τον προσομοιωτή iOS.
<!-- Ρύθμιση network_security_config.xml για Android με υποστήριξη Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Εμπιστευτείτε το πιστοποιητικό Charles σε έκδοση Debug -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Το Charles Proxy παρέχει ένα σύνολο επαγγελματικών εργαλείων για ανάλυση και τροποποίηση κίνησης που ξεπερνά κατά πολύ την απλή υποκλοπή αιτημάτων.
Το εργαλείο Rewrite επιτρέπει την αυτόματη τροποποίηση ορισμένων τμημάτων αιτημάτων ή απαντήσεων: κεφαλίδες, παραμέτρους URL, σώμα απάντησης. Για παράδειγμα, μπορείτε να αντικαταστήσετε την κεφαλίδα User-Agent με μια τιμή από άλλη συσκευή ή να αφαιρέσετε συγκεκριμένα cookies. Τα Breakpoints λειτουργούν σαν διορθωτής: το αίτημα σταματά στο επιλεγμένο στάδιο (πριν από την αποστολή ή πριν από τη λήψη) και ο προγραμματιστής μπορεί να τροποποιήσει χειροκίνητα το περιεχόμενό του προτού προχωρήσει. Αυτό είναι χρήσιμο για τη δοκιμή χειρισμού αποκρίσεων σφαλμάτων ή μη τυπικών καταστάσεων.
Map Local επιτρέπει την αντικατάσταση ενός πόρου δικτύου (CSS, JS, JSON) με ένα τοπικό αρχείο από τον δίσκο. Αυτό είναι απαραίτητο στην ανάπτυξη frontend: μπορείτε να τροποποιήσετε CSS/JS και να δείτε αμέσως το αποτέλεσμα χωρίς ανάπτυξη σε διακομιστή. Map Remote ανακατευθύνει αιτήματα από ένα URL σε άλλο — για παράδειγμα, από τον διακομιστή παραγωγής στο staging για δοκιμή. Και τα δύο εργαλεία λειτουργούν με μοτίβα URL που υποστηρίζουν wildcards.
Το εργαλείο Throttle επιτρέπει την προσομοίωση διαφόρων τύπων συνδέσεων δικτύου βάσει προκαθορισμένων προφίλ: 3G, EDGE, GPRS, DSL, WiFi. Μπορείτε να ρυθμίσετε όρια ταχύτητας (λήψη/μεταφόρτωση), καθυστέρηση, απώλεια πακέτων και σταθερότητα. Αυτό είναι κρίσιμο για τη δοκιμή συμπεριφοράς εφαρμογής σε αργή ή ασταθή σύνδεση — σωστός χειρισμός χρονικών ορίων, επαναλήψεις, λειτουργία εκτός σύνδεσης.
| Προφίλ | Λήψη | Μεταφόρτωση | Καθυστέρηση | Τυπικό σενάριο |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | Δοκιμή με ασθενές σήμα κινητού |
| EDGE | 130 kbps | 50 kbps | 400 ms | Εξαιρετικά αργή σύνδεση |
| GPRS | 50 kbps | 20 kbps | 500 ms | Ελάχιστη δυνατή σύνδεση |
| DSL | 2 Mbps | 256 kbps | 50 ms | Οικιακή ενσύρματη σύνδεση |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | Καλή σύνδεση WiFi |
Το Charles μπορεί να αποθηκεύει αυτόματα συνεδρίες κίνησης σε αρχεία .chls, επιτρέποντας μεταγενέστερη ανάλυση ή κοινή χρήση με συναδέλφους. Το Recording Control επιτρέπει ευέλικτη ρύθμιση του ποια κίνηση θα αποθηκεύεται: ανά τομέα, τύπο περιεχομένου, κωδικό κατάστασης. Αυτό είναι βολικό για μακροπρόθεσμη παρακολούθηση API.
Για αποσφαλμάτωση κίνησης εφαρμογών κινητού, το Charles ρυθμίζεται ως WiFi Proxy: όλες οι συσκευές στο ίδιο δίκτυο με τον υπολογιστή μπορούν να δρομολογούν κίνηση μέσω Charles. Η σωστή ρύθμιση HTTPS απαιτεί εγκατάσταση του πιστοποιητικού Charles στην κινητή συσκευή.
Για Android: ανοίξτε Ρυθμίσεις → WiFi → Για προχωρημένους → Proxy, επιλέξτε Μη αυτόματα και εισαγάγετε τη διεύθυνση IP του υπολογιστή με θύρα 8888. Στη συνέχεια, ανοίξτε το πρόγραμμα περιήγησης στη συσκευή και μεταβείτε στη διεύθυνση http://chls.pro/ssl για λήψη του πιστοποιητικού Charles. Σε Android 7+ (API 24+) απαιτείται network_security_config.xml για εμπιστοσύνη σε πιστοποιητικά χρήστη σε έκδοση Debug — διαφορετικά, η εφαρμογή μπορεί να μην δρομολογεί κίνηση μέσω Charles.
Για iOS: Ρυθμίσεις → WiFi → ρύθμιση proxy στη διεύθυνση IP και θύρα 8888. Στη συνέχεια Safari → http://chls.pro/ssl → εγκατάσταση προφίλ πιστοποιητικού. Σε iOS 10.3+ πρέπει να ενεργοποιήσετε την εμπιστοσύνη πιστοποιητικού: Ρυθμίσεις → Γενικά → Πληροφορίες → Ρυθμίσεις εμπιστοσύνης πιστοποιητικών → ενεργοποίηση Charles Proxy. Το iOS είναι αυστηρότερο με τα πιστοποιητικά: ορισμένες εφαρμογές μπορεί να χρησιμοποιούν SSL Pinning, αποκλείοντας την κίνηση μέσω Charles ακόμη και με αξιόπιστο πιστοποιητικό.
Εάν η εφαρμογή χρησιμοποιεί SSL Pinning (καθήλωση πιστοποιητικού διακομιστή), η τυπική διαμεσολάβηση μέσω Charles δεν θα λειτουργήσει — η εφαρμογή θα απορρίψει το πιστοποιητικό Charles. Λύσεις: απενεργοποιήστε το SSL Pinning στην έκδοση Debug μέσω ρυθμίσεων OkHttp ή URLSession, χρησιμοποιήστε Frida για παράκαμψη του pinning κατά τον χρόνο εκτέλεσης, ή χρησιμοποιήστε Android Emulator με πρόσβαση root.
Το Charles Proxy λύνει συγκεκριμένες εργασίες ανάπτυξης και δοκιμών. Ας εξετάσουμε τα πιο συνηθισμένα σενάρια όπου το εργαλείο είναι απαραίτητο.
Το πιο συνηθισμένο σενάριο — έλεγχος ορθότητας αιτημάτων API. Το Charles δείχνει το ακριβές URL του αιτήματος, κεφαλίδες, σώμα, παραμέτρους. Εάν ο διακομιστής επιστρέψει μια απροσδόκητη απάντηση, είναι άμεσα ορατά: η δομή JSON, ο κωδικός σφάλματος, οι κεφαλίδες απάντησης. Αυτό επιτρέπει τη διάκριση σφάλματος από την πλευρά του πελάτη από σφάλμα από την πλευρά του διακομιστή χωρίς αρχεία καταγραφής και από τις δύο πλευρές.
Χρησιμοποιώντας προφίλ Throttle, μπορείτε να ελέγξετε πώς συμπεριφέρεται η εφαρμογή σε χαμηλή ταχύτητα σύνδεσης: εάν εμφανίζεται η ένδειξη φόρτωσης, εάν το χρονικό όριο χειρίζεται σωστά, εάν το πάγωμα της διεπαφής κατά την απώλεια σύνδεσης. Η δοκιμή προσωρινής αποθήκευσης είναι ιδιαίτερα σημαντική — εάν τα δεδομένα έχουν ήδη φορτωθεί, η εφαρμογή πρέπει να τα εμφανίζει από την προσωρινή μνήμη, αντί να εισέρχεται σε ατελείωτη φόρτωση.
Με τα Breakpoints, μπορείτε να τροποποιήσετε την απάντηση του διακομιστή προτού σταλεί στην εφαρμογή. Για παράδειγμα, να επιστρέψετε έναν κενό πίνακα αντί για δεδομένα, να αλλάξετε τον κωδικό κατάστασης σε 500, να προσθέσετε ένα νέο πεδίο στο JSON. Αυτό επιτρέπει τη δοκιμή χειρισμού ακραίων περιπτώσεων χωρίς τροποποίηση κώδικα διακομιστή — μια από τις ισχυρότερες εφαρμογές του Charles στην ανάπτυξη κινητών.
Συχνές Ερωτήσεις
Το Charles Proxy είναι ένα εμπορικό προϊόν με 30ήμερη δοκιμαστική περίοδο. Μετά τη λήξη της δοκιμαστικής περιόδου, το πρόγραμμα συνεχίζει να λειτουργεί με διάλειμμα 30 λεπτών σε κάθε εκκίνηση. Το κόστος άδειας είναι 50$ ανά αντίγραφο. Υπάρχουν δωρεάν εναλλακτικές, όπως το Proxyman (macOS) και το mitmproxy (cross-platform).
Ναι, ο προσομοιωτής iOS χρησιμοποιεί αυτόματα το system proxy του macOS. Απλώς εκκινήστε το Charles και ενεργοποιήστε το SSL-proxy — όλη η κίνηση του προσομοιωτή θα υποκλαπεί. Η ρύθμιση πιστοποιητικού για τον προσομοιωτή γίνεται αυτόματα, χρειάζεται μόνο να εμπιστευτείτε το πιστοποιητικό Charles στην αλυσίδα κλειδιών macOS.
Κύριες διαφορές: Το Charles είναι cross-platform (Windows, macOS, Linux), το Proxyman — μόνο macOS και iOS. Το Charles έχει ευρύτερο σύνολο εργαλείων (Rewrite, Map Local, Repeat, Auto Save) αλλά είναι επί πληρωμή. Το Proxyman είναι δωρεάν για βασική λειτουργικότητα, με σύγχρονη διεπαφή και εγγενή ενσωμάτωση με τον προσομοιωτή iOS.
Το Charles προσθέτει καθυστέρηση όταν η κίνηση διέρχεται από το proxy, ειδικά με ενεργό SSL-proxy (αποκρυπτογράφηση/κρυπτογράφηση). Σε σύγχρονους υπολογιστές, η καθυστέρηση είναι 5–15 χιλιοστά του δευτερολέπτου ανά αίτημα. Για δοκιμές απόδοσης, συνιστάται η απενεργοποίηση του SSL-proxy για στατικούς πόρους (CSS, JS, εικόνες) μέσω του Recording Control.
Το Charles υποστηρίζει εξαγωγή σε μορφές: .chls (εγγενής, για εκ νέου άνοιγμα στο Charles), HAR (HTTP Archive, ανοίγει σε προγράμματα περιήγησης και άλλα εργαλεία), CSV (για επεξεργασία σε Excel ή υπολογιστικά φύλλα), Trace (για εξαγωγή συγκεκριμένου αιτήματος σε μορφή συμβατή με curl). Εξαγωγή μέσω του μενού File → Export Session.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης