Πώς εντοπίζουν την απάτη τα τεστ πληκτρολόγησης; Πώς ελέγχουμε το δικό μας

Τα τεστ πληκτρολόγησης εντοπίζουν την απάτη ελέγχοντας το αρχείο πληκτρολογήσεων πίσω από κάθε σκορ. Το δικό μας ξαναϋπολογίζει κάθε αποτέλεσμα από το αρχείο πληκτρολογήσεων, ελέγχει ένα hash, εξετάζει τη δομή και τον χρονισμό του αρχείου, και κρατά εκτός των δημόσιων πινάκων κάθε χρονομετρημένο αποτέλεσμα πάνω από 130 WPM που έχει επίσης ασυνήθιστο χρονισμό, μέχρι να περάσεις ένα τεστ επανάληψης. Οι έλεγχοι χρονισμού πιάνουν τα πρόχειρα μποτ· το τεστ επανάληψης αναγκάζει ένα προσεγμένο μποτ να τα κάνει όλα από την αρχή.

Το πρώτο μποτ που ξεπέρασε τους ελέγχους χρονισμού μας ήταν δικό μας.

Το βοηθητικό εργαλείο των end-to-end τεστ μας πατούσε πλήκτρα σε σταθερό διάστημα 40 ms, γιατί αυτό κάνει ένα σενάριο δοκιμών. Ο διακομιστής ξαναϋπολόγισε το αποτέλεσμα, επιβεβαίωσε το hash και βαθμολόγησε την προσπάθεια ως ύποπτη: μηδενική διακύμανση ανάμεσα στα πατήματα, μηδενικό rollover, ίδιοι χρόνοι κρατήματος. Χρειάστηκε να προσθέσουμε τυχαία διακύμανση ανά λέξη και περιστασιακές παύσεις «σκέψης» 80 έως 300 ms πριν η δική μας σουίτα δοκιμών καταφέρει να καταχωρίσει ένα αποτέλεσμα που έμοιαζε ανθρώπινο. Η επιλογή υπάρχει ακόμα στον κώδικα, με την ετικέτα humanLike.

Οι έλεγχοι δουλεύουν απέναντι σε ό,τι δεν προσπαθεί, και ό,τι προσπαθεί μπορεί να τους περάσει, γι' αυτό ο σχεδιασμός ρίχνει το πραγματικό βάρος σε ένα τεστ επανάληψης.

Πρώτο βήμα: ξαναϋπολογίζουμε τα πάντα

Ο φυλλομετρητής σου δεν μας στέλνει WPM. Στέλνει το αρχείο πληκτρολογήσεων (κάθε συμβάν keydown, keyup, input και composition, με χρονοσφραγίδα από το μονοτονικό ρολόι performance.now()), τις μετρικές που υπολόγισε και ένα hash SHA-256 του κανονικοποιημένου αποτελέσματος.

Ο διακομιστής τρέχει τον ίδιο κώδικα μετρικών πάνω στο αρχείο και συγκρίνει. Αν οποιοσδήποτε αριθμός διαφέρει περισσότερο από 0,01, το αποτέλεσμα απορρίπτεται ως metrics_mismatch. Αν το hash δεν ταιριάζει, απορρίπτεται ως hash_mismatch. Μια επέκταση φυλλομετρητή που αλλάζει το πεδίο του WPM, η πιο συνηθισμένη απάτη σε ιστότοπους που εμπιστεύονται την πλευρά του πελάτη (client), αποτυγχάνει εδώ. Οι ίδιες συναρτήσεις παράγουν τον αριθμό στην οθόνη σου και στη βάση δεδομένων, και γι' αυτό η σελίδα μετρικών μας μπορεί να υπόσχεται ότι το λυμένο παράδειγμά της αναπαράγεται με ακρίβεια δύο δεκαδικών.

Γιατί να μη χρονομετρούμε το τεστ στον διακομιστή; Τότε το σκορ σου θα περιλάμβανε και το δίκτυο. Κάθε πάτημα θα μας έφτανε λίγο αργότερα, κατά ένα διάστημα που αλλάζει με τη σύνδεσή σου, και ένας γρήγορος δακτυλογράφος με αργή γραμμή θα έχανε ταχύτητα που πραγματικά είχε. Το αρχείο μάς δίνει το ρολόι του φυλλομετρητή σου για ακρίβεια και τον επανυπολογισμό του διακομιστή για εντιμότητα.

Δεύτερο βήμα: βγάζει νόημα το αρχείο;

Πριν από οποιαδήποτε ανάλυση χρονισμού, απλοί έλεγχοι στη μορφή της υποβολής:

  • Το τεστ πρέπει να διαρκέσει τουλάχιστον 15 δευτερόλεπτα ή 10 λέξεις. Οι συντομότερες προσπάθειες έχουν πολύ θόρυβο για να καταταχθούν και φουσκώνονται ευκολότερα.
  • Ένα αποτέλεσμα δεν μπορεί να φτάσει πριν μπορούσε να έχει τελειώσει το τεστ: την έναρξή του συν τη δική του διάρκεια. Ένα αποτέλεσμα 60 δευτερολέπτων που φτάνει είκοσι δευτερόλεπτα μετά την έναρξή του δεν συνέβη.
  • Ο αριθμός των συμβάντων πρέπει να ταιριάζει με τους χαρακτήρες που πληκτρολογήθηκαν.
  • Σε υπολογιστή, κάθε συμβάν input πρέπει να ακολουθεί ένα keydown μέσα σε 50 ms. Αυτό πιάνει το επικολλημένο κείμενο, τα συμβάντα input από σενάρια και τα περισσότερα εργαλεία έγχυσης πατημάτων, που στέλνουν κείμενο χωρίς φυσικό πλήκτρο. Η πληκτρολόγηση μέσω μεθόδου εισαγωγής (IME composition) εξαιρείται, και τα αποτελέσματα από κινητό μένουν εκτός των δημόσιων πινάκων.
  • Ένα αρχείο χωρίς αρχή, χωρίς τέλος ή με μη μονοτονικές χρονοσφραγίδες είναι κακοσχηματισμένο και απορρίπτεται αμέσως.

Τίποτα από αυτά δεν είναι έξυπνο, αλλά αφαιρεί τον μεγαλύτερο όγκο.

Τρίτο βήμα: τι μπορεί να αποκαλύψει ο χρονισμός των πατημάτων;

Αυτό είναι το κομμάτι που σκόπιμα δεν τεκμηριώνουμε πλήρως: η λίστα των χαρακτηριστικών είναι δημόσια, τα όρια και τα βάρη όχι. Ένα δημοσιευμένο όριο είναι στόχος. Αν λέγαμε «επισημαίνεται μια τυπική απόκλιση κάτω από N χιλιοστά του δευτερολέπτου», η επόμενη έκδοση κάθε σεναρίου θα πρόσθετε N συν ένα. Τα χαρακτηριστικά που βαθμολογούμε:

Το μέσο διάστημα ανάμεσα στα πλήκτρα και πόσο διακυμαίνεται. Η ανθρώπινη πληκτρολόγηση είναι ακανόνιστη. Στη μελέτη του Dhakal και των συνεργατών του το 2018 με 168.960 δακτυλογράφους, το μέσο διάστημα ανάμεσα στα πλήκτρα ήταν περίπου 239 ms με τυπική απόκλιση περίπου 112 ms. Ένα σενάριο που πληκτρολογεί σε σταθερό διάστημα δεν έχει σχεδόν καμία διακύμανση· μια μελέτη του 2025 στο arXiv για ένα CAPTCHA βασισμένο στα πατήματα είδε ακριβώς αυτό στο δοκιμαστικό της μποτ, που πληκτρολογούσε με σταθερή καθυστέρηση 50 ms. Αυτό είναι το ισχυρότερο σήμα μας, και αυτό που σκόνταψε το δικό μας εργαλείο.

Το ποσοστό των διαστημάτων κάτω από 40 ms. Ένα διάστημα 40 ms, αν διατηρηθεί, είναι 1.500 χαρακτήρες το λεπτό, ή 300 WPM με πέντε χαρακτήρες ανά λέξη. Τα δάχτυλα όντως παράγουν μεμονωμένα τόσο σύντομα διαστήματα όταν επικαλύπτουν πλήκτρα κατά το rollover, οπότε ένα σύντομο διάστημα δεν σημαίνει τίποτα. Ένα αρχείο όπου μεγάλο μέρος των διαστημάτων είναι τόσο σύντομο δεν είναι πληκτρολόγηση.

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

Ο λόγος rollover. Πόσο συχνά το επόμενο πλήκτρο πατιέται πριν σηκωθεί το προηγούμενο. Ο Dhakal μέτρησε μέσο λόγο rollover 25%, με τους περισσότερους γρήγορους δακτυλογράφους να κάνουν rollover στο 40 έως 70% των πατημάτων και τα πλήκτρα να επικαλύπτονται κατά 30 ms κατά μέσο όρο. Οι αργοί δακτυλογράφοι σχεδόν δεν το χρησιμοποιούν, οπότε ένα γρήγορο αποτέλεσμα χωρίς rollover ξεχωρίζει. Τα μποτ σπάνια επικαλύπτουν πλήκτρα.

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

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

Μπορεί η απάτη σε τεστ πληκτρολόγησης να περάσει τους ελέγχους χρονισμού;

Ναι, αν η απάτη είναι φτιαγμένη με προσοχή. Μια δημοσίευση του David Condrey στο arXiv τον Ιανουάριο του 2026 δοκίμασε ανιχνευτές χρονισμού πατημάτων που προορίζονται να ξεχωρίζουν κείμενο πληκτρολογημένο από άνθρωπο από κείμενο που παρήγαγε τεχνητή νοημοσύνη. Ξεχώρισαν τέλεια την πλήρως αυτοματοποιημένη έγχυση, αλλά οι επιθέσεις με ανθρώπινο χρονισμό (ένας άνθρωπος που ξαναπληκτρολογεί κείμενο τεχνητής νοημοσύνης, ή ένα πρόγραμμα που παίρνει δείγματα καθυστερήσεων από δεδομένα ανθρώπινης πληκτρολόγησης) ξέφυγαν και από τους πέντε ταξινομητές σε ποσοστά τουλάχιστον 99,8%. Η δημοσίευση αφορά τον εντοπισμό συγγραφέα, όχι τα τεστ πληκτρολόγησης, αλλά το δίδαγμα μεταφέρεται: το τρίτο βήμα πιάνει τους πρόχειρους και όχι πολλά άλλα.

Το δικό μας βοηθητικό εργαλείο δοκιμών δείχνει το ίδιο σε μικρή κλίμακα: τυχαία διακύμανση και λίγες παύσεις το μετέφεραν από προφανώς συνθετικό σε πιστευτό.

Άρα το τρίτο βήμα είναι φίλτρο. Η ετυμηγορία έρχεται από το τέταρτο βήμα.

Τέταρτο βήμα: το τεστ επανάληψης για επαλήθευση

Αν ένα χρονομετρημένο αποτέλεσμα είναι πάνω από 130 WPM και ο χρονισμός του επίσης μοιάζει ασυνήθιστος, το βλέπεις και αποθηκεύεται, αλλά μένει εκτός των δημόσιων πινάκων μέχρι να περάσεις ένα τεστ επανάληψης για επαλήθευση. Αυτό είναι ένα καινούργιο τεστ 30 δευτερολέπτων, και πρέπει να φτάσεις τουλάχιστον το 75% της ταχύτητας που δήλωσες. Μια μεμονωμένη τύχη ή ένα δανεικό αρχείο δεν επιβιώνει σε δεύτερη προσπάθεια.

Γιατί 130 WPM; Είναι περίπου δυόμισι φορές ο μέσος όρος των 51,56 WPM στα δεδομένα του Dhakal, πολύ πάνω από τους περισσότερους δακτυλογράφους, και όποιος πραγματικά γράφει τόσο γρήγορα μπορεί να το κάνει δύο φορές. Ένα ξαφνικό γρήγορο αποτέλεσμα με παράξενο χρονισμό έχει τη μορφή που παράγει ένα δανεικό αρχείο ή ένα σενάριο, και αν είναι τίμιο, ένα επιπλέον τεστ είναι μικρό τίμημα.

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

Όρια συχνότητας και αποκλεισμοί

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

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

Τι σε επισημαίνει κατά λάθος

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

Αυτόματη διόρθωση σε κινητό. Μια αντικατάσταση φτάνει ως ένα συμβάν input που αλλάζει αρκετούς χαρακτήρες. Τη μετράμε ως ένα πάτημα, την επισημαίνουμε και κρατάμε το αποτέλεσμα εκτός των δημόσιων πινάκων με μια σημείωση, όχι με απόρριψη.

Επικολλημένο κείμενο. Η επικόλληση είναι μπλοκαρισμένη, και ένα αποτέλεσμα όπου επιχειρήθηκε εξαιρείται από τους πίνακες.

Εναλλαγή καρτελών. Αν η εστίαση φύγει από τη σελίδα για περισσότερα από δύο δευτερόλεπτα κατά τη διάρκεια ενός τεστ, αυτό σημειώνεται ως διακοπτόμενο· αποθηκεύεται και εμφανίζεται, αλλά δεν κατατάσσεται.

Παύση. Ένα διάστημα πάνω από πέντε δευτερόλεπτα σε τεστ λέξεων ή αποσπάσματος σημειώνει το αποτέλεσμα ως σε παύση. Η ίδια μεταχείριση.

IME composition. Τα ιαπωνικά, τα κορεατικά και τα κινεζικά εισάγονται μέσω συμβάντων composition, οπότε παραλείπουμε γι' αυτά τον κανόνα του keydown. Αν κάτι εξακολουθεί να μοιάζει λάθος, είναι σφάλμα, και θα θέλαμε το αρχείο.

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

Το να είσαι πραγματικά γρήγορος. Πάνω από τα 130 WPM θα συναντήσεις το τεστ επανάληψης, μάλλον την πρώτη σου καλή μέρα.

Πώς να κάνεις ένσταση

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

Μόλις δημοσιεύσαμε οδηγίες για το πώς να περάσεις τους ελέγχους; Εν μέρει. Η λίστα των χαρακτηριστικών μπορούσε πάντα να ανακαλυφθεί από τη συμπεριφορά, και τα όρια μένουν ιδιωτικά. Το τεστ επανάληψης είναι το κομμάτι που μετράει, και ο τρόπος να το περάσεις είναι να πληκτρολογήσεις.

Συχνές ερωτήσεις

Πώς εντοπίζουν τα τεστ πληκτρολόγησης τα μποτ;

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

Μπορεί ένα μποτ να περάσει τους ελέγχους απάτης ενός τεστ πληκτρολόγησης;

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

Γιατί δεν κατατάχθηκε το αποτέλεσμα του τεστ πληκτρολόγησής μου;

Συνήθως λόγω τεστ κάτω από 15 δευτερόλεπτα ή 10 λέξεις, παύσης πάνω από πέντε δευτερόλεπτα, εναλλαγής καρτέλας, ή αποτελέσματος πάνω από 130 WPM που περιμένει το τεστ επανάληψης. Το ιστορικό σου δείχνει τον λόγο.

Πηγές