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.
Sökning, webbplatser, API:er, flöden, filer
Källregler som tillämpas längs hela vägen
Kunskapsstyrning över Winnow-insamlade källor.
Indexera insamlade data för snabb hämtning.
Parsa Winnow-utdata till innehållsadresserade träd.
Börja med en återkommande fråga. Winnow gör den till en namngiven väg med explicita källor, delade hämtningsregler, typad utdata och en körningspost som nästa system kan granska.
Över 66 kategorier. Plus 28 motorer, 325 samlare.
Core har inga körtidsberoenden. Stealth-webbläsare är valfri, Python.
Projektbladet registrerar vad som levereras: en kompakt Rust-binär, katalogen över skrapare och samlare, utdataformat, begäran-kontroller, språkbindningar och de fyra integrationsytor som resten av stacken använder.
TLS, cookies, hastighetsbegränsningar, proxyservrar
Kör Winnow som en enda binär, bädda in det som Rust-crates, kör det som en axum HTTP-tjänst, eller bygg för webbläsare och edge. Samma skrapare och samma utdataformat fungerar i alla fyra lägena.
Förbyggda skrapare för de källor analytiker redan använder, från myndighets- och vetenskapsportaler till nyheter, ekonomi och öppna data. Varje skrapare är en typad Rust-struct. Egna skrapare läggs till bredvid de inbyggda och följer samma utdatakontrakt.
Per begäran: källa, URL, tidsstämpel, status, innehållshash.
Privata nätverksintervall blockeras i alla URL-inmatningar.
Token-buckets per domän anpassade till varje källas dokumenterade policy.
Neka som standard. Icke-cachade domäner vägras tills robots.txt har hämtats.
Winnow upprätthåller robots.txt med en neka-som-standard-policy, rate limits per domän, SSRF-skydd, GDPR-pseudonymisering och revisionsloggning per begäran som designbegränsningar, inte valfria inställningar. Det som ligger utanför Winnows kontroll: operatörens lagliga grund för datainsamling, val kring dataminimering och beslut om nedströms lagring. Denna sida gör inte anspråk på GDPR-certifiering eftersom ett bibliotek inte kan göra den bedömningen åt dig.
text, JSON, JSONL, CSV eller HTML. Pipe-vänligt.
CSS-väljare extraherar typade fält från DOM:en.
Vanlig HTTP först, sedan stealth-HTTP, sedan en webbläsare endast om det blockeras.
28 sökmotorer frågas parallellt, resultat slås samman och rankas.
En fråga blir strukturerade poster genom fyra steg. Discovery frågar 28 sökmotorer parallellt. Fetch eskalerar från vanlig HTTP till TLS-fingeravtryckta förfrågningar och sedan till en stealth-webbläsare, bara när en webbplats aktivt blockerar. Parse kör typade skrapare över DOM:en. Output skriver ett av fem format till stdout.
Varje sökmotor har sitt eget API, sina egna kvoter och sin egen wrapper.
Rotationstjänster lägger till separat fakturering och variation i IP-kvalitet.
Selenium eller Playwright lägger till en separat drift-yta och resurskostnad.
Skör kod per webbplats som tyst går sönder när markup ändras.
De flesta datainsamlingsstackar kombinerar skrapare, huvudlösa webbläsare, proxytjänster, sökwrappers och anpassade underhållsskript. Glue-lagret blir projektet. Varje verktyg har sin egen drift-yta, sin egen faktureringsmodell och sina egna antaganden om hänsyn.
Laglig grund, minimering och lagringstid ligger kvar hos dig. Winnow registrerar beslutet; det fattar det inte åt dig.
Varje förfrågan loggas med källa, adress, tid och resultat.
Identifierare kan pseudonymiseras när data samlas in, inte föras vidare råa.
Robots-policy och hastighetsbegränsningar per domän tillämpas från första förfrågan.
Att samla webbdata innebär verkliga risker: att bli blockerad, hantera personuppgifter, förfrågningar som når osäkra adresser och att inte ha någon logg över vad som hänt. Winnow hanterar var och en av dessa från start, med hänsynsregler, pseudonymisering, skydd mot osäkra destinationer och en logg per förfrågan. Vad det inte gör är att låtsas fatta dina juridiska beslut. Din lagliga grund, hur mycket du behåller och hur länge du behåller det är ditt val, och vi gör inga certifieringsanspråk som ett bibliotek inte ärligt kan göra.
Att vika ihop stacken till en binärfil innebär en sak att lära sig, köra och patch:a, istället för fem plus deras skarvar.
Sköra skrapare per webbplats och glue-skripten som håller ihop stacken äter tyst ingenjörstid månad efter månad.
Proxyrotation och sökkvoter faktureras per användning. En självhostad binärfil på infrastruktur du redan betalar för har ingen överraskande trafikräkning.
En insamlingsstack splittras vanligtvis i sajtsspecifika skrapare, webbläsarautomatisering, proxyhantering, sökkopplingar och limkod. Winnow samordnar dessa rörliga delar under en körningspolicy, så att operationer kan lappa en rutt, observera en post och upprepa en fråga.
Indata, tidpunkter, beslut och resultat finns kvar för upprepning och granskning.
Tolkning, pseudonymisering, normalisering och utdataregler är explicita.
Hastighetsgränser, robotpolicy, försök och skydd mot osäkra adresser följer med rutten.
Varje sökmotor, webbplats, API, flöde och fil namnges i körningen.
Ett återkommande insamlingsjobb ska inte bete sig som fem orelaterade skript. Winnow ger upptäckt, hämtning, tolkning, normalisering, utdata och körningsposten en gemensam rutt, medan driftsättning förblir ett separat operativt val.
Generera JSON, CSV, strömmar, lagrade poster eller den svarsform din arbetsflöde förväntar sig.
Upptäck, hämta, tolka och mata ut delar en policy och en körningspost.
Sökmotorer, webbplatser, API:er, flöden och filer kan ingå i samma körning.
Winnow börjar med en fråga, avgör vilka källsidor som hör till körningen, upptäcker kandidater, hämtar dem artigt, tolkar det användbara materialet och genererar typade resultat. Rutten spelas in så att samma arbete kan upprepas och granskas.
Den skriver ner vad den besökte, så svaret finns redan där om någon frågar.
Den kan köras helt inom Europa, på maskiner du litar på.
Den följer reglerna varje webbplats sätter och väntar på sin tur.
Varje resultat behåller sina källanteckningar och insamlingsrutt, så att tjänsten kan visa var informationen kom ifrån.
De första frågorna är vettiga: kan detta orsaka problem, vart går min information och hur kan jag se vad den gjorde? Här är de raka svaren. Omsorg och öppenhet är inbyggda i Winnow från start, inte sålda som tillägg.
Listan är en liten fil som du kan spara och komma tillbaka till, inte något som försvinner.
Varje rad anger var den kommer ifrån, så att du alltid kan titta på källan själv.
Röran är borttagen. Du ser de användbara delarna du bad om och var varje del kommer ifrån.
Istället för en hög med webbplatser att läsa får du en tydlig lista med en rad för varje punkt och en notering om var den kommer ifrån. Läs den, skriv ut den eller spara den. Den förvandlar en röra av öppna flikar till en post du kan kontrollera senare.
Varje kort visar exakt den typ av sak du skulle säga, så att du aldrig fastnar.
Det finns inga menyer eller inställningar att brottas med. Du bara frågar.
Beskriv vad du vill ha med dina egna vardagliga ord, som att prata med en person.
Du behöver inga speciella ord. Fråga efter nyheter om ett ämne, priser från några butiker, ett officiellt meddelande eller tiderna för ett evenemang. Välj ett exempel för att se hur du kan fråga och vilken typ av organiserat svar som kan komma tillbaka.
En prydlig lista kommer tillbaka, på samma sätt som ett snyggt kvitto listar vad du köpt.
Den besöker sidorna och läser dem åt dig, artigt.
Berätta vad du letar efter, med vardagliga ord.
Webben är enorm och mycket av den är brus. Winnow läser de relevanta sidorna, behåller de användbara delarna och lämnar bruset bakom sig. Du frågar med enkla ord och får ett organiserat svar med sina källor. Det finns inget nytt att lära sig.
Färre återkommande räkningar att hantera
Winnow ger återkommande källarbete en styrd väg. Sökmotorer, webbplatser, API:er, flöden och filer går in i samma körning; upptäckt, hämtning, tolkning och typad utdata delar en policy och en post. Verksamheten får en repeterbar process istället för fem samlare som driver isär.
Varje resultat behåller sin källspårning
När Fabric behöver aktuell information samlar Winnow de relevanta delarna från de källor som valts för tjänsten och returnerar ett prydligt resultat med källorna bifogade. Du konfigurerar inga skrapare eller skriver kod; Winnow arbetar i bakgrunden och för register över hur informationen samlades in.
robots.txt, hastighetsbegränsningar, SSRF-skydd genom design
1 325 webbplatskrapare, 28 sökmotorer, 325 samlare
Scrapy, Selenium, proxyservrar, anpassade skript
Winnow kompilerar en fråga, ett mål eller ett bevakningsvillkor till en repeterbar insamlingsväg. Upptäckten spänner över sökmotorer och skrapkatalogen; hämtningen eskalerar från HTTP till webbläsarautomatisering; tolkningen normaliserar resultatet till typad text, JSON, JSONL, CSV eller HTML. Varje begäran passerar de delade hastighets-, robots-, SSRF- och granskningskontrollerna.
Neka som standard, tolkas före varje hämtning.
Pseudonymiseras vid insamlingstillfället.
Varje begäran registreras och kan exporteras.
Winnow är en öppen källkodsbaserad, självhostad källinformationsmotor i Rust under Apache-2.0-licensen. En fråga kompileras till en typad källgraf: upptäckt över 28 sökmotorer, 1 325 underhållna skrapare och 325 inbyggda samlare, under ett hållbart frågekontrakt.