0x00
Ένας ανιχνευτής ιστού (γνωστός και ως web spider, web bot, που συνήθως ονομάζεται web chaser στην κοινότητα FOAF) είναι ένα πρόγραμμα ή σενάριο που αποκόπτει αυτόματα πληροφορίες σχετικά με τον Παγκόσμιο Ιστό σύμφωνα με ορισμένους κανόνες. Άλλα λιγότερο συχνά χρησιμοποιούμενα ονόματα περιλαμβάνουν μυρμήγκια, αυτόματα ευρετήρια, προσομοιωτές ή σκουλήκια.
0x01
Για να το θέσω απλά, οι ανιχνευτές αρπάζουν δεδομένα σύμφωνα με τους δικούς τους κανόνες, αναλύουν τα δεδομένα που συλλέγονται και στη συνέχεια αποκτούν χρήσιμα δεδομένα για τον εαυτό τους.
0x02
Η βελτιστοποίηση του προγράμματος ανίχνευσης ιστού μπορεί να χωριστεί σε δύο στάδια:
1: Βελτιστοποίηση κατά την απόξεση δεδομένων.
2: Βελτιστοποιήστε την επεξεργασία των αποτελεσμάτων σύλληψης.
Σήμερα, μιλάμε απλώς για βελτιστοποίηση στη διαδικασία απόξεσης!
0x03
Έχω συνοψίσει μερικά σημεία σχετικά με τη βελτιστοποίηση στη διαδικασία ανίχνευσης:
1: Μπορεί να βελτιστοποιηθεί στη φυσική διεύθυνση, για παράδειγμα: ο διακομιστής πόρων προορισμού είναι ο κεντρικός υπολογιστής Tencent Cloud στη Σαγκάη, προσπαθούμε να επιλέξουμε τον διακομιστή στην ίδια περιοχή, δηλαδή τον διακομιστή στην περιοχή της Σαγκάης, μην επιλέξετε τον διακομιστή στο Πεκίνο, το Qingdao και άλλες περιοχές, αλλά προσπαθήστε επίσης να επιλέξετε τον διακομιστή στην ίδια αίθουσα υπολογιστών IDC, γνωρίζουμε ότι αυτός ο ιστότοπος πόρων είναι ο διακομιστής του Tencent Cloud, προσπαθούμε να βάλουμε τον ανιχνευτή στον διακομιστή Tencent Cloud, όχι στον διακομιστή Alibaba Cloud!
2: Επιλέξτε ένα σταθερό και γρήγορο δίκτυο, γενικά οι ανιχνευτές έχουν υψηλές απαιτήσεις για ποιότητα δικτύου, προσπαθήστε να μην χρησιμοποιήσετε το οικιακό δίκτυο, επιλέξτε το δίκτυο της εταιρείας ή αγοράστε έναν διακομιστή για τη λήψη δεδομένων.
3: Επιλέξτε μια πιο αποτελεσματική γλώσσα ανίχνευσης, άκουσα ότι η python είναι καλύτερη στους ανιχνευτές, αλλά δεν την έχω χρησιμοποιήσει και θα τη δοκιμάσω αργότερα, σήμερα, την εξηγώ κυρίως σε γλώσσα .net.
0x04
Για πράγματα όπως η βιαστική αγορά, οι απαιτήσεις για την ταχύτητα αρπαγής είναι υψηλές, μπορεί να περιγραφεί ως θέμα χρόνου, νωρίς για να λάβετε τα δεδομένα, να αυξήσετε την πιθανότητα αρπαγής, το παρακάτω είναι ότι έγραψα ένα demo με την κονσόλα, τη δοκιμή της αρπαγής των δεδομένων αυτού του ιστότοπου, όπως φαίνεται στο παρακάτω σχήμα:
(Όσο μικρότερος είναι ο χρόνος, τόσο πιο γρήγορος είναι)
Η παραπάνω κατάταξη δεδομένων:1: Εγγενώς βελτιστοποιημένος κώδικας, 2: Εγγενής κώδικας, 3: Πρόσθετα dll τρίτων κατασκευαστών (πακέτα)
0x05
Γιατί τα πρόσθετα (πακέτα) τρίτων χρειάζονται περισσότερο χρόνο; Οι προσθήκες τρίτων είναι στην πραγματικότητα ένας μεγάλος αριθμός ενθυλακώσεων εγγενούς κώδικα, ένας μεγάλος αριθμός λογικών κρίσεων και σχετικά ευέλικτες, γεγονός που μπορεί να οδηγήσει σε αργή ταχύτητα ανίχνευσης.
Εδώ είναι ο εγγενής κώδικας:
Ο εγγενής κώδικας βρίσκεται μόλις λίγες γραμμές παραπάνω.Ο μέσος χρόνος εξακολουθεί να είναι 184 χιλιοστά του δευτερολέπτου,Όσο πιο απλός είναι ο κώδικας, τόσο πιο δύσκολο είναι να βελτιστοποιηθείΠιστεύετε ότι πώς μπορεί να βελτιστοποιηθεί ο παραπάνω κώδικας για να επιτευχθεί μέσος χρόνος 99 χιλιοστών του δευτερολέπτου;Η διαφορά ταχύτητας διπλασιάζεται!
0x06
Εάν ο διακομιστής πόρων προορισμού υποστηρίζει συμπίεση gzip, όταν έχουμε πρόσβαση στον ιστότοπο και το πρόγραμμα περιήγησης ζητά τον ιστότοπο, η κεφαλίδα αιτήματος θα έχει τις ακόλουθες παραμέτρους:
Παράμετροι κεφαλίδας απόκρισης:
Εισαγωγή στην «Αποδοχή-Κωδικοποίηση»: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
Με απλούς όρους:
Ο πελάτης λέει:Υποστηρίζω τον αλγόριθμο συμπίεσης "gzip, deflate, sdch, br", μπορείτε να χρησιμοποιήσετε ό,τι θέλετε κατά την επιστροφή δεδομένων.
Ο διακομιστής είπε:Τυχαίνει να υποστηρίζω τον αλγόριθμο συμπίεσης gzip, επομένως θα χρησιμοποιήσω τον αλγόριθμο gzip για να συμπιέσω τα δεδομένα σε εσάς
Ο πελάτης λέει:Εντάξει, τότε θα αποκρυπτογραφήσω τα ληφθέντα δεδομένα με τον αλγόριθμο gzip
Αλγόριθμος gzip, ο οποίος μπορεί να συμπιέσει τα μεταδιδόμενα δεδομένα και να μειώσει σημαντικά το μεταδιδόμενο περιεχόμενο, επομένως η αποτελεσματικότητα του αιτήματος θα βελτιωθεί, επομένως ο βελτιστοποιημένος κώδικας έχει ως εξής:
Αν και είναι μια μικρή λεπτομέρεια, η απόδοση μπορούμε να πούμε ότι διπλασιάζεται! Είναι ισοδύναμο με τα δεδομένα που συλλέξατε σε δύο ημέρες και τώρα μπορούν να συλλεχθούν σε 1 ημέρα και αυτό το άρθρο είναι αφιερωμένο σε φίλους που μαθαίνουν να σέρνονται.
Σημείωση: Ο αλγόριθμος συμπίεσης gzip δεν έχει καμία σχέση με τη γλώσσα προγραμματισμού!
Τέλος, επισυνάψτε τον πηγαίο κώδικα:
Τουρίστες, αν θέλετε να δείτε το κρυφό περιεχόμενο αυτής της ανάρτησης, παρακαλώ Απάντηση
|