Επικοινωνία με την υποστήριξη

Απαντάμε μέσω e-mail, συνήθως μέσα σε δύο ημέρες.

Το Google reCAPTCHA ελέγχει αυτή την υποβολή για κατάχρηση· δεδομένα αποστέλλονται στην Google. Το script φορτώνεται μόνο όταν ανοίξει αυτή η φόρμα.

← Όλα τα άρθρα

Η δοκιμή με curl ελέγχει το λάθος πράγμα

Ένα αίτημα μετρητή που φτάνει χωρίς ταυτότητα προγράμματος περιήγησης γράφει σε δύο από τα δώδεκα σημεία που αγγίζει κανονικά μια καταμετρημένη επίσκεψη. Απαντά 200. Επιστρέφει έγκυρη εικόνα μετρητή. Πουθενά δεν αναφέρεται ότι τα δέκα από τα δώδεκα παραλείφθηκαν.

χωρίς user agent — 2 από 12 προεπιλογή του curl — 2 από 12 ταυτότητα προγράμματος περιήγησης — 10 από 12 και τα τρία απάντησαν 200 με λειτουργική εικόνα μετρητή

Σε τι χρησιμεύει το φίλτρο και τι κοστίζει

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

Και τα δύο είναι σωστά. Η υπηρεσία δεν κάνει λάθος όταν αντιμετωπίζει ένα σκέτο curl ως bot· αυτό ακριβώς είναι. Το πρόβλημα είναι ότι αυτός που εκτελεί το curl συνήθως δεν ελέγχει αν λειτουργεί η ανίχνευση bots. Ελέγχει αν λειτουργεί η καταμέτρηση, και χωρίς να το καταλάβει έχει ζητήσει τη διαδρομή των bots.

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

Η αποτυχία δεν έχει σύμπτωμα

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

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

Συνέβη ενώ γραφόταν αυτό το άρθρο

Η πρώτη εκδοχή της μέτρησης πίσω από αυτό το άρθρο ζητούσε το /c/<number>. Αυτή δεν είναι η διεύθυνση μιας εικόνας μετρητή· η πραγματική περιέχει το σχέδιο και μια κατάληξη, /c/<number>-<design>.png. Το αίτημα επέστρεψε 404.

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

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

Τι να κάνετε αντί γι' αυτό

Στείλτε μια ταυτότητα προγράμματος περιήγησης. Μία παράμετρος, -A με μια πραγματική συμβολοσειρά user agent, και το ίδιο αίτημα γράφει σε δέκα από τα δώδεκα σημεία αντί για δύο.

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

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

Διαφήμιση