Μετάβαση στο περιεχόμενο

Δώστε σε πράκτορα μηχανή για δοκιμές

Ένας σταθμός είναι μια αναλώσιμη μηχανή που ανοίγει ένας πράκτορας όταν χρειάζεται να δοκιμάσει κάτι στην πράξη: να φορτώσει μια σελίδα, να κάνει κλικ σε μια εφαρμογή επιφάνειας εργασίας, να πατήσει σε ένα τηλέφωνο. Μπορείτε να τον παρακολουθείτε να δουλεύει σε πραγματικό χρόνο και να αναλαμβάνετε τον έλεγχο όποτε θέλετε.

Οι περίκλειστοι σταθμοί τερματικού, περιηγητή και επιφάνειας εργασίας είναι εικονικές μηχανές με αναλώσιμους δίσκους και δίκτυα πίσω από πύλη. Το Android και το iOS είναι εξομοιωτές που διαχειρίζεται ο ξενιστής: η κατάσταση της συσκευής τους είναι αναλώσιμη, αλλά το δίκτυό τους ακολουθεί τον ξενιστή του διακομιστή.

Οι σταθμοί εκτελούνται στη μηχανή που φιλοξενεί το cc_server — την ίδια μηχανή, όχι αυτή που κοιτάτε. Υπάρχουν πέντε επιφάνειες που βλέπει ο χρήστης· οι επιφάνειες για υπολογιστή και κινητά χρειάζονται ρύθμιση στον ξενιστή:

Επιφάνεια Εκτελείται σε Ρύθμιση
Τερματικό (VM) Ένα microVM που εκκινεί μια καθηλωμένη εικόνα Ubuntu Καμία — η εικόνα λαμβάνεται αυτόματα κατά την πρώτη χρήση
Περιηγητής (VM) Ένα microVM που εκκινεί μια καθηλωμένη εικόνα Debian, με Chromium, Firefox ή WebKit να εγκαθίσταται κατά την πρώτη χρήση Καμία — το ίδιο
Υπολογιστής (VM) QEMU με εικόνα επιφάνειας εργασίας Linux που περιλαμβάνει Chromium, Firefox, WebKit και μια βάση CLI τύπου GitHub-hosted runner Εγκαταστήστε το QEMU (brew install qemu) και μετά κάντε Εισαγωγή μιας εικόνας επιφάνειας εργασίας από Ρυθμίσεις → Διακομιστής → Σταθμοί
Android Τον εξομοιωτή Android της Google Εγκαταστήστε το Android SDK, δημιουργήστε ένα AVD και εκκινήστε το (παρακάτω)
Προσομοιωτής iOS CoreSimulator στον Mac του διακομιστή Εγκαταστήστε το Xcode και το ζητούμενο runtime iOS και μετά εγκαταστήστε τη γέφυρα αυτοματοποίησης από Ρυθμίσεις → Διακομιστής → Σταθμοί

Οι μηχανές τερματικού και περιηγητή εκκινούν από εικόνες καθηλωμένες σε digest: τα ακριβή byte ονομάζονται εκ των προτέρων, λαμβάνονται μία φορά κατά την πρώτη εκκίνηση και αποθηκεύονται προσωρινά — μετά την πρώτη εκκίνηση κάθε είδους, οι επόμενες μηχανές παραλείπουν εντελώς τη λήψη και εμφανίζονται σε δευτερόλεπτα. Η σελίδα Ρυθμίσεις → Διακομιστής → Σταθμοί δείχνει τι μπορεί να εκκινήσει ο διακομιστής σας και κάθε μηχανή που εκτελείται αυτή τη στιγμή.

Μια εγκατεστημένη εικόνα επιφάνειας εργασίας παραμένει διαχειρίσιμη από την ίδια σελίδα: η Εισαγωγή την αντικαθιστά με ένα νεότερο qcow2 και η Διαγραφή την αφαιρεί, ώστε να μπορείτε να εγκαταστήσετε μια νέα έκδοση.

Οι κινητές συσκευές ρυθμίζονται διαφορετικά

Ενότητα με τίτλο «Οι κινητές συσκευές ρυθμίζονται διαφορετικά»

Δεν υπάρχει δική μας εικόνα για Android ή iOS, και αυτό δεν είναι παράλειψη. Οι εικόνες συστήματος Android προέρχονται από το SDK της Google· τα runtime iOS προέρχονται από το Xcode. Για το Android, εγκαταστήστε το Android Studio (ή τα εργαλεία SDK της γραμμής εντολών), προσθέστε μια εικονική συσκευή στο Device Manager και εκκινήστε την. Η σελίδα Σταθμοί αναφέρει τότε το Android ως διαθέσιμο.

Σας λέει επίσης ακριβώς ποιο βήμα λείπει — χωρίς SDK, χωρίς εξομοιωτή, χωρίς εικονική συσκευή ή με μια συσκευή που απλώς δεν εκτελείται — γιατί αυτά έχουν τέσσερις διαφορετικές λύσεις και μόνο μία από αυτές είναι λήψη. Αν εκκινήσετε το cc_server από ένα κέλυφος που δεν βλέπει το SDK, εξάγετέ το:

Παράθυρο τερματικού
export ANDROID_HOME="$HOME/Library/Android/sdk"

Για το iOS, ο ίδιος ο διακομιστής πρέπει να εκτελείται σε macOS με εγκατεστημένο το Xcode και ένα runtime Προσομοιωτή iOS. Ανοίξτε τις Ρυθμίσεις → Διακομιστής → Σταθμοί και πατήστε Εγκατάσταση γέφυρας αυτοματοποίησης iOS. Ο διακομιστής λαμβάνει το artifact WebDriverAgent που είναι καθηλωμένο σε checksum, το επαληθεύει και το εγκαθιστά στην αποθήκη αυτοματοποίησης που ανήκει στον διακομιστή. Κανένας προσομοιωτής δεν εκκινεί κατά τη ρύθμιση.

Οι μηχανές ζουν ως καρτέλες, δίπλα στη συνομιλία και το diff — σε έναν χώρο ή σε σελίδα PR, στο ίδιο μενού +, κάτω από το Μηχανήματα:

  • Υπολογιστής — μια επιφάνεια εργασίας Linux με Chromium, Firefox και WebKit
  • Chromium, Firefox ή WebKit — ένας περιηγητής
  • Android — ο εξομοιωτής Android που εκτελείται
  • Προσομοιωτής iOS — ένας αναλώσιμος προσομοιωτής που δημιουργήθηκε για αυτή τη συνομιλία

Επιλέξτε μία και πατήστε Εκκίνηση της μηχανής. Η καρτέλα δείχνει σε ποιο στάδιο βρίσκεται η εκκίνηση («Starting the microVM», «Waiting for the guest to come up») αντί να γυρίζει απλώς.

Η καρτέλα περιορίζεται στη συνομιλία, και το ίδιο ισχύει για το εργαλείο του πράκτορα. Μια καρτέλα Chromium, Firefox ή WebKit και το browser_use, το Android και το mobile_use, ή ο Προσομοιωτής iOS και το ios_use απευθύνονται στην ίδια προεπιλεγμένη μηχανή. Οι πρόσθετες θέσεις UI είναι ξεχωριστές μηχανές σύγκρισης· τα εργαλεία του πράκτορα χρησιμοποιούν πάντα την προεπιλεγμένη.

Για να κάνετε build, εγκατάσταση και εκκίνηση μιας εφαρμογής Flutter στο Android:

Παράθυρο τερματικού
fvm flutter build apk --debug

Στη συνέχεια καλέστε το mobile_use με το install_apk και το build/app/outputs/flutter-apk/app-debug.apk, ακολουθούμενο από το start_app και το όνομα πακέτου Android. Το ui_dump, τα στιγμιότυπα οθόνης και η εισαγωγή οδηγούν την ίδια συσκευή που εμφανίζεται στην ανθρώπινη καρτέλα. Τα stop_app, clear_app_data, uninstall_app, open_url και οι κλήσεις shell σε μορφή argv καλύπτουν τον υπόλοιπο κύκλο ανάπτυξης χωρίς να καλείται κέλυφος στη μηχανή του διακομιστή.

Για να κάνετε build, εγκατάσταση και εκκίνηση μιας εφαρμογής Flutter στον Προσομοιωτή iOS:

Παράθυρο τερματικού
fvm flutter build ios --simulator --debug
/usr/bin/plutil -extract CFBundleIdentifier raw -o - \
build/ios/iphonesimulator/Runner.app/Info.plist

Στη συνέχεια καλέστε το ios_use με το install_app και τον κατάλογο .app, ακολουθούμενο από το start_app και το bundle identifier που εκτυπώνει το plutil. Το εργαλείο iOS εκθέτει επίσης τα stop_app, uninstall_app, open_url και μια ενέργεια spawn σε μορφή argv για διαγνωστικά τοπικά στον προσομοιωτή.

Οι προβολές επιφάνειας εργασίας και περιηγητή προσαρμόζονται στο μέγεθος του πλαισίου. Το iOS διατηρεί το σταθερό μέγεθος σε points του προσομοιωτή και το τοποθετεί με μαύρες λωρίδες. Κάθε επιφάνεια έχει ακόμα δύο ανεξάρτητες ροές: ο πράκτορας παίρνει μικρά, φθηνά στιγμιότυπα οθόνης, ενώ εσείς παίρνετε τη ζωντανή προβολή. Η αλλαγή καρτέλας σταματά τη ροή για τον άνθρωπο, ώστε μια μηχανή στο παρασκήνιο να μην καταναλώνει εύρος ζώνης προβολής.

Μια καρτέλα σταθμού δεν εκκινεί μηχανή από μόνη της, ούτε κατά την επαναφορά διάταξης. Ο κανόνας αυτός αποτρέπει το άνοιγμα της εφαρμογής από το να εκκινήσει απροσδόκητα εικονικές μηχανές ή να δημιουργήσει συσκευές προσομοιωτή.

Ο καμβάς είναι δικός σας για πληκτρολόγηση και κλικ όποτε κανείς άλλος δεν έχει αποκλειστικό έλεγχο — ή όταν τον έχετε εσείς. Όσο κρατάτε αυτό το κλείδωμα, η ετικέτα κατάστασης γράφει Έχετε τον έλεγχο, ο πράκτορας μπορεί ακόμα να παίρνει στιγμιότυπα οθόνης και ο διακομιστής αρνείται τις ενέργειες που αλλάζουν κατάσταση στο μοναδικό σημείο από το οποίο περνούν όλες οι ενέργειες. Ό,τι κάνετε καταγράφεται στο όνομά σας.

Πατήστε Διακοπή της μηχανής όταν τελειώσετε.

Ο έλεγχος είναι αποκλειστικός σκόπιμα: δύο δρώντες που πληκτρολογούν σε μία μηχανή παράγουν εισαγωγή που δεν σκόπευε κανένας από τους δύο.

Η αντιγραφή και η επικόλληση λειτουργούν και προς τις δύο κατευθύνσεις στον καμβά του σταθμού, όπως και η μεταφορά αρχείων με σύρσιμο.

Αντιγραφή και επικόλληση. Πατήστε τον συνδυασμό αντιγραφής πάνω στον καμβά και ό,τι αντέγραψε η μηχανή — κείμενο, εικόνα, λίστα αρχείων — προσγειώνεται στο πρόχειρό σας. Η επικόλληση στέλνει το δικό σας προς την άλλη κατεύθυνση και εκτελεί επικόλληση μέσα στη μηχανή. Στο macOS ο συνδυασμός είναι ⌘C/⌘V· το ⌃C φτάνει ακόμα σε ένα φιλοξενούμενο κέλυφος ως διακοπή. Στα Windows και το Linux χρησιμοποιήστε ⌃C/⌃V — το φιλοξενούμενο λαμβάνει το ίδιο πλήκτρο που θα λάμβανε ούτως ή άλλως, οπότε το ⌃C σε φιλοξενούμενο τερματικό εξακολουθεί να διακόπτει και το δικό σας πρόχειρο μένει ανέπαφο.

Τίποτα δεν συγχρονίζεται στο παρασκήνιο. Ένας κωδικός που αντιγράφετε στη δική σας μηχανή δεν φτάνει μέσα σε ένα VM επειδή ενεργοποιήθηκε κάποιος χρονοδιακόπτης· περνά όταν κάνετε επικόλληση.

Η επικόλληση προς έναν σταθμό επιτρέπεται εξ ορισμού. Η αντιγραφή από έναν σταθμό ζητά πρώτα άδεια — παραχώρηση δέκα λεπτών ή Να επιτρέπεται πάντα από Ρυθμίσεις → Διακομιστής → Σταθμοί → Πρόσβαση στο πρόχειρο. Οι δύο κατευθύνσεις είναι ανεξάρτητες και σας ακολουθούν εσάς, όχι τον χώρο εργασίας.

Σύρετε αρχεία μέσα. Αφήστε τα οπουδήποτε στον καμβά.

  • Στον Περιηγητή (VM), η σελίδα λαμβάνει ένα πραγματικό άφημα στο σημείο που αφήνετε το αρχείο, οπότε μια ζώνη μεταφόρτωσης συμπεριφέρεται ακριβώς όπως θα έκανε με ένα τοπικό αρχείο.
  • Στον Υπολογιστή (VM), τα αρχεία καταλήγουν στο ~/Drops και οι διαδρομές τους πηγαίνουν στο πρόχειρο της μηχανής, ώστε το ⌃V να τα επικολλά σε έναν διαχειριστή αρχείων ή σε ένα πεδίο μεταφόρτωσης. Ο ξενιστής δεν μπορεί να συνθέσει ένα σύρσιμο προς μια αυθαίρετη εφαρμογή Linux χωρίς να εκτελεί έναν δαίμονα με προνόμια μέσα στο VM, κάτι που οι σταθμοί σκόπιμα δεν έχουν — γι’ αυτό το μήνυμα σας λέει πού πήγαν τα αρχεία αντί να προσποιείται ότι έγινε άφημα.
  • Σε ένα τερματικό, το αρχείο αντιγράφεται μέσα και η διαδρομή του πληκτρολογείται στο prompt, έτοιμη να περαστεί σε μια εντολή. Η επικόλληση μιας εικόνας σε ένα τερματικό κάνει το ίδιο: αποθηκεύεται στη μηχανή και παίρνετε τη διαδρομή.

Το σύρσιμο αρχείων έξω λειτουργεί από τον Υπολογιστή (VM). Ξεκινήστε να σύρετε ένα αρχείο μέσα στη μηχανή, βγάλτε τον δείκτη έξω από τον καμβά και γίνεται πραγματικό σύρσιμο στην επιφάνεια εργασίας σας — αφήστε το στο Finder ή τον Explorer. Η αντιγραφή αρχείων από τον διαχειριστή αρχείων της μηχανής και η επικόλληση στη δική σας πλευρά λειτουργεί επίσης. Ο Περιηγητής (VM) δεν το προσφέρει αυτό: ένας headless περιηγητής δεν έχει ωφέλιμο φορτίο συρσίματος για ανάγνωση και το να μαντεύει κανείς από την επιλογή κειμένου της σελίδας θα υφάρπαζε συνηθισμένα κλικ.

Τα τερματικά σε έναν χώρο ή σε μια σελίδα PR μπορούν να εκτελούνται μέσα σε έναν σταθμό αντί στη μηχανή του ίδιου του διακομιστή. Όταν συμβαίνει αυτό, το πλαίσιο εμφανίζει μια ετικέτα Απομονωμένο VM.

Τι αλλάζει:

  • Τίποτα από όσα εκτελείτε δεν φτάνει στον ξενιστή. Ένα rm -rf εκεί μέσα σας κοστίζει τον σταθμό.
  • Το δίκτυο είναι κλειστό εξ ορισμού. Μόνο οι κεντρικοί υπολογιστές στη λίστα επιτρεπόμενων του σταθμού είναι προσβάσιμοι και τα πάντα περνούν από μια πύλη που την επιβάλλει.
  • Το git push λειτουργεί ακόμα σε τερματικό που ανοίξατε εσείς. Ο σταθμός δεν έχει αποθηκευμένο διαπιστευτήριο· ζητά από τον διακομιστή ένα βραχύβιο για κάθε ενέργεια, περιορισμένο από τη δική σας πρόσβαση στη φιλοξενία κώδικα, και το token ανακαλείται όταν κλείσει ο σταθμός. Ένας σταθμός που άνοιξε ένας πράκτορας παίρνει διαπιστευτήριο μόνο για ανάγνωση, οπότε μπορεί να κάνει fetch αλλά όχι push.

Τι πρέπει να γνωρίζετε:

  • Ένα περίκλειστο τερματικό που επαναφέρεται σας περιμένει. Όπως μια καρτέλα σταθμού, ένα τερματικό microvm που επιστρέφει με τη διάταξή σας εμφανίζει ένα κουμπί Άνοιγμα του κελύφους αντί να εκκινεί το VM του κατά την εκκίνηση. Ένα τερματικό κελύφους στον ξενιστή κοστίζει μια διεργασία· ένα περίκλειστο κοστίζει μια μηχανή.
  • Τα αρχεία που αφήνετε στο τερματικό πληκτρολογούνται, δεν ανοίγουν. Αφήστε ένα CSV σε ένα περίκλειστο τερματικό και αντιγράφεται στη μηχανή και η διαδρομή του φιλοξενούμενου εμφανίζεται στο prompt — η διαδρομή του ξενιστή θα ήταν εντολή που αποτυγχάνει εκεί.
  • Το αντίγραφο στον σταθμό είναι αντίγραφο. Το worktree σας στον ξενιστή παραμένει η πηγή αλήθειας. Τα commits που κάνετε μέσα σε έναν σταθμό μεταφέρονται πίσω στο refs/rigs/<id>/* όταν το ζητήσετε — δεν μετακινούν ποτέ το branch σας ούτε αγγίζουν το working tree σας.
  • Η εργασία με στόχο τον ξενιστή εκτελείται ακόμα στον ξενιστή. Ένα φιλοξενούμενο Linux δεν μπορεί να κάνει build για macOS ή να εκτελέσει xcodebuild. Επιλέξτε ρητά το εγγενές υποσύστημα γι’ αυτό· η εφαρμογή θα σας ζητήσει επιβεβαίωση αντί να αλλάξει σιωπηλά.

Εκτελέστε έναν διακομιστή ανάπτυξης στο Τερματικό (VM) — ας πούμε pnpm dev στη θύρα 3000 — και μέσα σε λίγα δευτερόλεπτα το εικονίδιο του βύσματος στη γωνία του τερματικού ανάβει: η θύρα προωθείται στο localhost:3000 της μηχανής σας, είναι προσβάσιμη στο localhost:3000 μέσα στον Περιηγητή (VM), μοιράζεται στο δίκτυό σας και μπορεί να ονομαστεί https://myapp.test. Όλη η ροή — αυτόματη προώθηση, κοινή χρήση στο LAN, τομείς ανάπτυξης με HTTPS — έχει τον δικό της οδηγό: Προώθηση θυρών από τερματικό.

Ένας χώρος εργασίας μπορεί να στρέψει το Τερματικό (VM) και τον Περιηγητή (VM) στις δικές του εικόνες — από Ρυθμίσεις → Διακομιστής → Σταθμοί → Προσαρμοσμένες εικόνες (αυτός ο χώρος εργασίας). Συνήθης χρήση: επεκτείνετε την προεπιλεγμένη εικόνα με την αλυσίδα εργαλείων που χρειάζεται το project σας, ώστε κάθε τερματικό να ξεκινά έτοιμο, ή επαναχρησιμοποιήστε μια εικόνα που δημοσιεύει ήδη η ομάδα σας.

Η μηχανή εκκινεί ακόμα μέσα στο ίδιο περίβλημα: ίδια πύλη εξερχόμενης κίνησης, ίδιος μεσίτης διαπιστευτηρίων, ίδιος κύκλος ζωής. Μόνο οι διαχειριστές του χώρου εργασίας μπορούν να αλλάξουν τη ρύθμιση, οι νέες μηχανές την υιοθετούν (οι εκτελούμενες κρατούν τη δική τους) και η αναφορά πρέπει να είναι εικόνα από registry — οι τοπικές διαδρομές απορρίπτονται.

Τι πρέπει να παρέχει μια εικόνα:

  • Τερματικό (VM) — μια εικόνα Linux με bash. Χρειάζεται επίσης git, curl και socat — είτε προεγκατεστημένα είτε εγκαταστάσιμα κατά την πρώτη εκκίνηση (οποιαδήποτε εικόνα βασισμένη σε Debian/Ubuntu κάνει: εγκαθίστανται αυτόματα, μαζί με ένα σύνολο εργαλείων CLI τύπου GitHub-hosted runner: μεταγλωττιστές, Python 3, jq, εργαλεία αρχειοθέτησης, rsync. Runtime γλωσσών όπως Node/Go/Java και το Docker δεν είναι προεγκατεστημένα). Η θύρα φιλοξενούμενου 7911 είναι δεσμευμένη για τον προωθητή θυρών.
  • Περιηγητής (VM) — μια εικόνα Debian/Ubuntu με bash και socat, συν ένα εκτελέσιμο chromium. Ο διακομιστής εκκινεί ο ίδιος τον Chromium ως chromium --headless=new και μεταφέρει το DevTools από τη θύρα φιλοξενούμενου 9223 στη 9222. Το PulseAudio και το ffmpeg εγκαθίστανται κατά την πρώτη εκκίνηση. Μην κάνετε build FROM chromedp/headless-shell — αυτό το εκτελέσιμο δεν έχει ήχο. Η παράκαμψη ισχύει μόνο για σταθμούς Chromium· ο Firefox και το WebKit την αγνοούν και εκκινούν την καθηλωμένη εικόνα Debian. Οι θύρες φιλοξενούμενου 9222/9223 είναι δεσμευμένες.

Δύο συστάσεις: καθηλώστε την αναφορά με digest (@sha256:…) ώστε τα byte να μην μπορούν να αλλάξουν κάτω από τα πόδια σας, και φιλοξενήστε την στο Docker Hub ή στο GitHub Container Registry — οι κεντρικοί υπολογιστές λήψης αυτών των registries γίνονται δεκτοί από την πύλη εξερχόμενης κίνησης αυτόματα· άλλοι μπορεί να χρειάζονται τους κεντρικούς υπολογιστές παράδοσης περιεχομένου τους προσβάσιμους για τη λήψη.

Οι σταθμοί προορίζονται να είναι προσωρινοί:

  • Αδράνεια — μετά από ~15 λεπτά χωρίς τίποτα να συμβαίνει, ένας σταθμός περιηγητή, επιφάνειας εργασίας ή κινητού σταθμεύει (παγώνει, ξυπνά αμέσως στην επόμενη ενέργεια). Ένα περίκλειστο τερματικό περιμένει 45 λεπτά. Μετά το διπλάσιο διάστημα αδράνειας, κλείνει.
  • Χρονικό όριο — κάθε σταθμός έχει μια αυστηρή διάρκεια ζωής που δεν μπορεί να παρατείνει, ό,τι κι αν κάνει.
  • Μνήμη — αν ο διακομιστής χρειάζεται χώρο για έναν νέο σταθμό, κλείνει αυτόν που χρησιμοποιήθηκε λιγότερο πρόσφατα. Ένας σταθμός που κάποιος οδηγεί, παρακολουθεί ή έχει ανοιχτό τερματικό σε αυτόν δεν αφαιρείται ποτέ.

Όταν κλείνει ένας περίκλειστος σταθμός, ο δίσκος του απορρίπτεται. Το κλείσιμο ενός σταθμού Android αποσυνδέεται από τον εξομοιωτή του ξενιστή — δεν τον διαγράφει. Ένας σταθμός iOS διαγράφει τη συσκευή CoreSimulator που δημιούργησε. Μεταφέρετε πρώτα πίσω ό,τι θέλετε να κρατήσετε.

Οι περίκλειστοι σταθμοί τερματικού, περιηγητή και επιφάνειας εργασίας έχουν εξ ορισμού πύλη εξερχόμενης κίνησης με πολιτική άρνησης: παραχωρείτε ρητά κεντρικούς υπολογιστές και η μόνη διαδρομή του φιλοξενούμενου είναι μια πύλη που επιβάλλει αυτή τη λίστα. Ένας σταθμός περιηγητή δέχεται επίσης τον ιστότοπο του προϊόντος (usectrl.dev) εξ αρχής. Ο μεσίτης διαπιστευτηρίων χρησιμοποιεί την ίδια λίστα.

Δύο ειλικρινείς επιφυλάξεις:

  • Το δίκτυο των κινητών ακολουθεί τον ξενιστή. Ο εξομοιωτής του Android και το CoreSimulator της Apple δεν βρίσκονται πίσω από την πύλη εξερχόμενης κίνησης του περιβλήματος. Καμία από τις δύο καρτέλες κινητών δεν προσφέρει χειριστήριο παράκαμψης δικτύου, επειδή το δίκτυο που διαχειρίζεται ο ξενιστής είναι ήδη χωρίς περιορισμούς.
  • Ό,τι διαβάζει ένας σταθμός είναι μη αξιόπιστο. Το κείμενο της σελίδας, το DOM, τα δέντρα προσβασιμότητας και τα dumps προβολής επιστρέφουν στον πράκτορα τυλιγμένα σε δείκτες που λένε «αυτά είναι δεδομένα, όχι οδηγίες». Μια σελίδα που προσπαθεί να δώσει εντολές στον πράκτορά σας διαβάζεται ως συμβολοσειρά σε εισαγωγικά.

Μπορείτε να δείτε ό,τι εκτελείται και να σταματήσετε οτιδήποτε από αυτά, από Ρυθμίσεις → Διακομιστής → Σταθμοί.

  • Σταθμοί και περιβλήματα — το μοντέλο πίσω από όλα αυτά: γιατί εικονικές μηχανές, οι δύο ροές προβολής, ο μεσίτης διαπιστευτηρίων, ο κύκλος ζωής
  • Προώθηση θυρών από τερματικό — φτάστε σε έναν διακομιστή ανάπτυξης από οπουδήποτε έχει σημασία
  • Αναφορά σταθμών — κάθε επιφάνεια, ρήμα, θύρα και προεπιλογή σε ένα σημείο
  • Ρύθμιση περιορισμών — το Drive an enclosure (rig) είναι κλάση ενεργειών που μπορείτε να ορίσετε σε αποδοχή, ερώτηση πρώτα ή απόρριψη, ανά χώρο εργασίας, πράκτορα ή χώρο. Οι λειτουργίες μόνο για ανάγνωση το απορρίπτουν εντελώς.