Dla juryFor the jury
Projekt na konkurs „Fake OFF – Krytyczne myślenie w erze AI” (WSZiB Kraków), kategoria TECH. Tu jest to, o co pyta karta projektu: problem, działanie, wykorzystanie AI, testy i ograniczenia.An entry to the “Fake OFF – Critical thinking in the age of AI” competition (WSZiB Kraków), TECH category. Here is what the project form asks about: the problem, how it works, the use of AI, tests and limitations.
ProblemThe problem
W internecie codziennie trafiamy na fałszywe strony podszywające się pod znane marki, nagłówki-przynęty, artykuły z przekłamanymi faktami i obrazy z AI udające prawdziwe zdjęcia.Every day we run into fake sites impersonating well-known brands, bait headlines, articles with distorted facts, and AI images posing as real photos.
Zwykle zauważamy je za późno: po wpisaniu hasła, po kliknięciu albo po udostępnieniu fałszywki dalej. Fak3Buster ostrzega w chwili czytania strony i zawsze pokazuje, dlaczego coś uznał za podejrzane, żeby użytkownik mógł to ocenić sam.We usually notice too late: after typing a password, after clicking, or after sharing the fake. Fak3Buster warns while you read the page and always shows why it found something suspicious, so you can judge for yourself.
Jak działa, krok po krokuHow it works, step by step
Adres stronyPage address
Reguły (marka w obcej domenie, podejrzana końcówka typu .icu, słowa-wabiki), lista zaufanych domen i lista złośliwych adresów. Przy wynikach niejednoznacznych pomaga AI.Rules (a brand inside a foreign domain, a suspicious ending like .icu, lure words), a list of trusted domains and a list of malicious addresses. AI helps with ambiguous results.
NagłówkiHeadlines
Reguły wyłapujące typowe przynęty („nie uwierzysz”, „sami zobaczcie”) oraz ocena modelu językowego.Rules catching typical bait (“you won't believe”, “see for yourself”) plus a language model's score.
Fakty w artykuleFacts in the article
AI wybiera twierdzenia autora, serwer szuka dowodów w zaufanych źródłach (Wikipedia, fact-checkerzy, agencje prasowe), a AI porównuje twierdzenie ze źródłem. Serwer sam sprawdza, czy cytat z dowodu naprawdę jest w źródle.AI picks the author's claims, the server searches trusted sources for evidence (Wikipedia, fact-checkers, news agencies), and AI compares the claim with the source. The server itself verifies that the quoted evidence really is in the source.
ObrazyImages
Najpierw podpis pochodzenia C2PA (generator AI sam deklaruje w pliku, że stworzył obraz). Gdy go nie ma, serwer wysyła obraz do usługi OpenAI Content Provenance, która rozpoznaje obrazy z narzędzi OpenAI. Jeśli i ona nic nie znajdzie, ocenia go model rozpoznający obrazy AI, uruchomiony na naszym serwerze w formacie ONNX (lekki format modeli działający bez karty graficznej).First the C2PA provenance signature (the AI generator declares inside the file that it made the image). Without one, the server sends the image to the OpenAI Content Provenance service, which recognises images made with OpenAI tools. If that finds nothing too, an AI-image detection model running on our server in the ONNX format (a lightweight model format that runs without a graphics card) judges it.
Wynik wraca na stronę: ostrzeżenie, plakietka, podświetlenie albo chip, zawsze z wyjaśnieniem.The result comes back to the page: a warning, a badge, a highlight or a chip, always with an explanation.
Wykorzystanie AIUse of AI
| Narzędzie AI | Etap | Do czego |
|---|---|---|
| GLM-5.3 Flash przez OrcaRouter, zapasowo DeepSeek V4 Flash | działanie produktu | Ocenia nagłówki, wybiera twierdzenia z artykułów i porównuje je ze źródłami, ocenia niejednoznaczne domeny. Gdy główny model zawiedzie, serwer używa zapasowego. Wcześniej korzystaliśmy z Gemini (Google). |
| haywoodsloan/ | działanie produktu | Model rozpoznający obrazy wygenerowane przez AI. Przekonwertowaliśmy go do formatu ONNX, w którym działa na procesorze naszego serwera bez ciężkich bibliotek do uczenia maszynowego. |
| OpenAI Content Provenance | działanie produktu | Usługa OpenAI, do której serwer wysyła obraz bez podpisu C2PA wskazującego AI. Rozpoznaje tylko obrazy z narzędzi OpenAI; gdy nic nie znajdzie, ocenia nasz model. |
| Claude (Anthropic), w Claude Code | realizacja | Napisał kod serwera, wtyczki i testów oraz dokumentację, pod kierunkiem zespołu. |
| GPT (OpenAI) | realizacja | Drugi, niezależny recenzent kodu. |
| AI tool | Stage | Used for |
|---|---|---|
| GLM-5.3 Flash via OrcaRouter, DeepSeek V4 Flash as fallback | in the product | Scores headlines, picks claims from articles and compares them with sources, judges ambiguous domains. When the main model fails, the server uses the fallback. We used Gemini (Google) earlier. |
| haywoodsloan/ | in the product | A model that recognises AI-generated images. We converted it to the ONNX format, in which it runs on our server's CPU without heavy machine-learning libraries. |
| OpenAI Content Provenance | in the product | An OpenAI service the server sends an image to when it has no C2PA signature pointing to AI. It only recognises images made with OpenAI tools; if it finds nothing, our model decides. |
| Claude (Anthropic), in Claude Code | building | Wrote the server, extension and test code and the documentation, directed by the team. |
| GPT (OpenAI) | building | A second, independent code reviewer. |
Cały kod (serwer, wtyczka, testy) i dokumentację techniczną wygenerowała AI.All the code (server, extension, tests) and the technical documentation were generated by AI.
TestyTests
Na stronach przygotowanych do pokazu, na prawdziwych serwisach (onet.pl, wp.pl, interia.pl, rmf24.pl, bbc.com, konkret24) i na 120 ręcznie oznaczonych nagłówkach.On pages prepared for the demo, on real sites (onet.pl, wp.pl, interia.pl, rmf24.pl, bbc.com, konkret24) and on 120 hand-labelled headlines.
| Przykład | Oczekiwanie | Wynik | Zadziałało? |
|---|---|---|---|
| Domena steampowered-gift.icu | Ostrzeżenie: podszywanie się pod Steam | „złośliwa”, 82/100 (marka w nazwie, końcówka .icu, słowo „gift”) | Tak |
| Domena pko-bp-weryfikacja.online | Ostrzeżenie: podszywanie się pod PKO BP | Najpierw 15/100, bez ostrzeżenia (marka niewykryta). Po dodaniu marki PKO: 72/100, „złośliwa” | Po poprawce tak |
| 13 rzetelnych domen | Brak alarmu | 13/13 bez ostrzeżenia | Tak |
| 4 podróbki spoza list (np. paypa1-secure-login.com) | Ostrzeżenie | Trzy „złośliwe” (ocena AI, 3–7 s), paypa1-… 78/100 z samych reguł | Tak |
| Artykuł testowy: Wieża Eiffla „ukończona w 1999 roku” | Czerwone podświetlenie z linkiem do Wikipedii | „zmanipulowane” dla wieży, „potwierdzone” dla akapitu o Pałacu Kultury. Tekst z OCR bez polskich liter dawał „ok” (błąd) | Częściowo: tak w trybie demo, błąd przy tekście z OCR |
| Prawdziwe artykuły: wp.pl, rmf24.pl, bbc.com, konkret24 | Brak fałszywych zgłoszeń | 0 zgłoszeń na 4 stronach | Tak, ale bez prawdziwego fałszu do wykrycia |
| 120 nagłówków PL/EN (54 to clickbait), same reguły | Clickbait bez fałszywych alarmów | Część testowa: 0 fałszywych alarmów, wykryte 23% clickbaitów (6 z 26) | Częściowo |
| Nagłówki ze stron głównych (1145 PL, 785 EN), same reguły | Mało fałszywych alarmów | Wersja h3: 6 alarmów, wszystkie słuszne; tabloid dailymail 5/5 słusznych | Tak, ale na nagłówkach, na których strojono reguły |
| Galeria: obraz z C2PA, prawdziwe zdjęcie, ikona 32 px | Chip tylko na obrazie C2PA, ikona pominięta | Zgodnie z oczekiwaniem (test automatyczny w Chromium i Firefoksie) | Tak |
| Model obrazów: 23 obrazy (12 prawdziwych, 11 AI) | Rozpoznać AI, nie oskarżyć prawdziwych zdjęć | 21/23 poprawnie; 12/12 prawdziwych bez fałszywego alarmu; 9/11 obrazów AI wykrytych | Przeważnie tak, zbiór mały |
| Case | Expected | Result | Worked? |
|---|---|---|---|
| Domain steampowered-gift.icu | Warning: impersonating Steam | “malicious”, 82/100 (brand in the name, .icu ending, the word “gift”) | Yes |
| Domain pko-bp-weryfikacja.online | Warning: impersonating PKO BP | First 15/100, no warning (brand not detected). After adding the PKO brand: 72/100, “malicious” | Yes, after a fix |
| 13 reputable domains | No alarm | 13/13 without a warning | Yes |
| 4 fakes not on any list (e.g. paypa1-secure-login.com) | Warning | Three “malicious” (AI verdict, 3–7 s), paypa1-… 78/100 from rules alone | Yes |
| Test article: Eiffel Tower “completed in 1999” | Red highlight with a link to Wikipedia | “manipulated” for the tower, “confirmed” for the Palace of Culture paragraph. OCR text without Polish letters returned “ok” (a bug) | Partly: yes in demo mode, a bug with OCR text |
| Real articles: wp.pl, rmf24.pl, bbc.com, konkret24 | No false reports | 0 reports on 4 pages | Yes, but no real falsehood to catch |
| 120 PL/EN headlines (54 clickbait), rules only | Catch clickbait without false alarms | Test split: 0 false alarms, 23% of clickbait caught (6 of 26) | Partly |
| Front-page headlines (1145 PL, 785 EN), rules only | Few false alarms | Version h3: 6 alarms, all correct; tabloid dailymail 5/5 correct | Yes, but on the headlines the rules were tuned on |
| Gallery: C2PA image, real photo, 32 px icon | Chip only on the C2PA image, icon skipped | As expected (automated test in Chromium and Firefox) | Yes |
| Image model: 23 images (12 real, 11 AI) | Spot AI, don't accuse real photos | 21/23 correct; 12/12 real without a false alarm; 9/11 AI images caught | Mostly, small set |
Uczciwe ograniczeniaHonest limitations
- Obraz to ok. 13 s pracy serweraAn image takes about 13 s of server time
Model obrazów działa na procesorze słabego serwera, dlatego ocena jednego obrazu trwa ok. 13 s, a serwer przyjmuje najwyżej 6 obrazów na minutę z jednego adresu.The image model runs on a weak server's CPU, so one image takes about 13 s, and the server accepts at most 6 images per minute from one address.
- Darmowe modele mają limityFree models have limits
Darmowe modele przez OrcaRouter mają limity i bywają wolniejsze: ocena paczki nagłówków trwa ok. 8 s. Serwer ma też własny dzienny limit 100 zapytań do modelu; po jego wyczerpaniu clickbait oceniają same reguły.Free models via OrcaRouter have limits and can be slower: scoring a batch of headlines takes about 8 s. The server also has its own daily budget of 100 model requests; once it is used up, clickbait is scored by rules alone.
- Reguły to tylko zapasRules are only a fallback
Łapią jawne wzorce: na zbiorze testowym 23% clickbaitów, bez fałszywych alarmów. Marka spoza naszej listy może przejść niezauważona (tak było z PKO przed poprawką).They catch obvious patterns: 23% of clickbait on the test set, with no false alarms. A brand missing from our list can slip through (as PKO did before the fix).
- AI się myliAI makes mistakes
Wynik modelu obrazów to szacunek, nie dowód; większość serwisów usuwa podpis C2PA, a usługa OpenAI rozpoznaje tylko obrazy z narzędzi OpenAI. Model sprawdzaliśmy na 23 obrazach, głównie z Midjourney.The image model's score is an estimate, not proof; most sites strip the C2PA signature, and the OpenAI service only recognises images made with OpenAI tools. We tested the model on 23 images, mostly from Midjourney.
- Fact-check częściej milczy, niż się myliFact-checking stays silent rather than guess
Nie sprawdzi świeżych wiadomości (nie ma jeszcze źródeł), opinii, prognoz ani treści za paywallem. Część serwisów blokuje pobieranie.It can't check breaking news (no sources yet), opinions, forecasts or paywalled content. Some sites block fetching.
Z czego zbudowaneWhat it's built with
- SerwerServer
- Python 3.12
- FastAPI
- Pydantic
- httpx
- trafilatura
- c2pa-python
- onnxruntime
- SearXNG
- Docker
- WtyczkaExtension
- TypeScript
- WXT
- Manifest V3
- Material 3
- Mozilla Readability
- TestyTests
- pytest: ok. 350 testów serwerapytest: about 350 server tests
- Vitest
- Playwright
- Puppeteer