Web Scraping and OSINT Engine in Rust | Dweve Winnow

Winnow is a Rust source-intelligence and web-scraping engine. Apache-2.0 terms, self-hosted; the repository publishes in the eighth release round.

Αναζητήσεις, ιστότοποι, API, ροές, αρχεία

Μία πολιτική και ένα αρχείο καταγραφής εκτέλεσης

Τυποποιημένα αποτελέσματα για το επόμενο σύστημα

Κανόνες πηγών που επιβάλλονται σε όλη τη διαδρομή

Οι διακομιστές σας, περιοχή ΕΕ ή απομονωμένο

CLI, Rust crate, υπηρεσία και WebAssembly

Διακυβέρνηση γνώσης για πηγές που συλλέγονται μέσω του Winnow.

Δημιουργία ευρετηρίου συγκεντρωμένων δεδομένων για γρήγορη ανάκτηση.

Ανάλυση εξόδου του Winnow σε δέντρα με βάση το περιεχόμενο.

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

Η πηγή δεν είναι το κέντρο. Η ερώτηση είναι

Σε 66 κατηγορίες. Επιπλέον 28 μηχανές, 325 συλλέκτες.

Ο πυρήνας δεν έχει εξαρτήσεις χρόνου εκτέλεσης. Το stealth browser είναι προαιρετικό, Python.

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

TLS, cookies, όρια ρυθμού, διακομιστές μεσολάβησης

Πρόγραμμα περιήγησης, edge, Python μέσω PyO3

Εκτελέστε το Winnow ως ένα ενιαίο δυαδικό αρχείο, ενσωματώστε το ως Rust crates, εκτελέστε το ως υπηρεσία HTTP axum ή δημιουργήστε για το πρόγραμμα περιήγησης και το edge. Οι ίδιοι scrapers και το ίδιο σχήμα εξόδου λειτουργούν και στις τέσσερις λειτουργίες.

Προκατασκευασμένοι scrapers για πηγές που ήδη χρησιμοποιούν οι αναλυτές, από κυβερνητικές και επιστημονικές πύλες έως ειδήσεις, χρηματοοικονομικά και ανοιχτά δεδομένα. Κάθε scraper είναι ένα τυποποιημένο Rust struct. Οι προσαρμοσμένοι scrapers τοποθετούνται δίπλα στους ενσωματωμένους και ακολουθούν το ίδιο συμβόλαιο εξόδου.

Ο διαχειριστής αποφασίζει τη νόμιμη βάση

Ανά αίτημα: πηγή, URL, χρονική σήμανση, κατάσταση, hash περιεχομένου.

Ιδιωτικά εύρη δικτύου αποκλείονται σε κάθε είσοδο URL.

Κάδοι διακριτικής ικανότητας ανά τομέα που ταιριάζουν με την τεκμηριωμένη πολιτική κάθε πηγής.

Άρνηση από προεπιλογή. Οι μη αποθηκευμένοι τομείς απορρίπτονται έως ότου ληφθεί το robots.txt.

Το Winnow επιβάλλει το robots.txt με πολιτική άρνησης από προεπιλογή, όρια ρυθμού ανά τομέα, προστασία SSRF, ψευδωνυμοποίηση GDPR και καταγραφή ελέγχου ανά αίτημα ως περιορισμούς σχεδιασμού, όχι ως προαιρετικές ρυθμίσεις. Ό,τι είναι εκτός ελέγχου του Winnow: η νόμιμη βάση του διαχειριστή για τη συλλογή δεδομένων, οι επιλογές ελαχιστοποίησης δεδομένων και οι αποφάσεις διατήρησης κατάντη. Αυτή η σελίδα δεν ισχυρίζεται πιστοποίηση GDPR επειδή μια βιβλιοθήκη δεν μπορεί να κάνει αυτόν τον προσδιορισμό για λογαριασμό σας.

κείμενο, JSON, JSONL, CSV ή HTML. Φιλικό προς σωληνώσεις.

Οι επιλογείς CSS εξάγουν τυποποιημένα πεδία από το DOM.

Πρώτα απλό HTTP, μετά stealth HTTP και μετά πρόγραμμα περιήγησης μόνο αν αποκλειστεί.

28 μηχανές αναζήτησης ερωτώνται παράλληλα, τα αποτελέσματα συγχωνεύονται και ταξινομούνται.

Ένα ερώτημα γίνεται δομημένες εγγραφές μέσα από τέσσερα στάδια. Η Ανακάλυψη ρωτά 28 μηχανές αναζήτησης παράλληλα. Η Ανάκτηση ανεβαίνει από απλό HTTP σε αιτήματα με αποτύπωμα TLS και σε stealth browser, μόνο όταν ένας ιστότοπος μπλοκάρει ενεργά. Η Ανάλυση τρέχει τυποποιημένους scrapers στο DOM. Η Έξοδος γράφει μία από πέντε μορφές στο stdout.

Κάθε μηχανή αναζήτησης έχει το δικό της API, τα δικά της όρια και το δικό της wrapper.

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

Το Selenium ή το Playwright προσθέτει ξεχωριστή επιφάνεια λειτουργίας και κόστος πόρων.

Εύθραυστος κώδικας ανά ιστότοπο που σπάει σιωπηλά όταν αλλάζει το markup.

Οι περισσότερες στοίβες συλλογής δεδομένων συνδυάζουν scrapers, headless browsers, υπηρεσίες διακομιστών μεσολάβησης, wrappers αναζήτησης και προσαρμοσμένα σενάρια συντήρησης. Το στρώμα κόλλας γίνεται το έργο. Κάθε εργαλείο έχει τη δική του επιφάνεια λειτουργίας, το δικό του μοντέλο χρέωσης και τις δικές του υποθέσεις ευγένειας.

δεν θα έπρεπε να χρειάζεται πέντε εργαλεία

Η νόμιμη βάση, η ελαχιστοποίηση και η διατήρηση παραμένουν σε εσάς. Το Winnow καταγράφει αυτή την απόφαση· δεν την παίρνει για εσάς.

Κάθε αίτημα καταγράφεται με πηγή, διεύθυνση, ώρα και αποτέλεσμα.

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

Η πολιτική robots και τα όρια ρυθμού ανά τομέα επιβάλλονται από το πρώτο αίτημα.

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

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

Οι εύθραυστοι scrapers ανά ιστότοπο και τα σενάρια κόλλας που συγκρατούν τη στοίβα καταναλώνουν αθόρυβα χρόνο μηχανικών μήνα με τον μήνα.

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

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

Τα δεδομένα εισόδου, ο χρονισμός, οι αποφάσεις και τα αποτελέσματα παραμένουν διαθέσιμα για επανάληψη και επισκόπηση.

Οι κανόνες ανάλυσης, ψευδωνυμοποίησης, κανονικοποίησης και εξόδου είναι ρητοί.

Τα όρια ρυθμού, η πολιτική robots, οι επαναλήψεις και η προστασία από μη ασφαλείς διευθύνσεις ταξιδεύουν με τη διαδρομή.

Κάθε μηχανή αναζήτησης, ιστότοπος, API, ροή και αρχείο ονομάζεται στην εκτέλεση.

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

Εξάγετε JSON, CSV, ροές, αποθηκευμένες εγγραφές ή τη μορφή απόκρισης που αναμένει η ροή εργασίας σας.

Η ανακάλυψη, η λήψη, η ανάλυση και η έξοδος μοιράζονται μία πολιτική και ένα αρχείο εκτέλεσης.

Μηχανές αναζήτησης, ιστότοποι, APIs, ροές και αρχεία μπορούν να εισέλθουν στην ίδια εκτέλεση.

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

Καταγράφει τι επισκέφθηκε, οπότε η απάντηση είναι ήδη εκεί αν ρωτήσει κάποιος.

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

Ακολουθεί τους κανόνες που θέτει κάθε ιστότοπος και περιμένει τη σειρά του.

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

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

Η λίστα είναι ένα μικρό αρχείο που μπορείς να αποθηκεύσεις και να επιστρέψεις σε αυτό, όχι κάτι που εξαφανίζεται.

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

Η ακαταστασία απομακρύνεται. Βλέπεις τα χρήσιμα μέρη που ζήτησες και από πού προήλθε το καθένα.

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

Κάθε κάρτα δείχνει το ακριβές είδος πράγματος που θα έλεγες, ώστε να μην κολλήσεις ποτέ.

Δεν υπάρχουν μενού ή ρυθμίσεις για να παλέψεις. Απλώς ρωτάς.

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

Δεν χρειάζονται ειδικές λέξεις. Ζήτα ειδήσεις για ένα θέμα, τιμές από μερικά καταστήματα, μια επίσημη ανακοίνωση ή τις ώρες μιας εκδήλωσης. Διάλεξε ένα παράδειγμα για να δεις πώς μπορείς να ρωτήσεις και τι είδους οργανωμένη απάντηση μπορεί να επιστρέψει.

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

Επισκέπτεται τις σελίδες και τις διαβάζει για σένα, ευγενικά.

Πες του τι ψάχνεις, με καθημερινά λόγια.

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