Reddit i cloaking robots.txt – analiza i testy

Minęło już 2 lata jak sprawdzałem plik robots.txt serwisu Reddit i wykryłem, że robi cloaking, a przy tym blokując wszystkich innych dyrektywą Disallow: /. Postanowiłem wrócić do tematu i sprawdzić, co zmieniło się od tamtej pory. Zapraszam, bo wychodzi na to, że jest minimum 4 różne wersje robots.txt 🙂

reddit robots.txt i cloaking

Przypomnienie: co znalazłem w 2024 roku

Pierwszy raz natknąłem się na cloaking pliku robots.txt serwisu Reddit w sierpniu 2024 roku, gdzie standardowe zapytanie do reddit.com/robots.txt zwracało:

User-agent: *
Disallow: /

Narzędzie Google Rich Results Test z tego samego okresu pokazywało plik pozwalający na indeksację, z dziesiątkami szczegółowych reguł dla poszczególnych sekcji serwisu.

Plik robots.txt dla Google w 2026 roku (kliknij żeby rozwinąć)
# Our robots.txt is for search engines

# 80legs
User-agent: 008
Disallow: /

# 80legs' new crawler
User-agent: voltron
Disallow: /

User-Agent: bender
Disallow: /my_shiny_metal_ass

User-Agent: Gort
Disallow: /earth

User-agent: MJ12bot
Disallow: /

User-agent: PiplBot
Disallow: /

User-Agent: *
Disallow: /*.json
Disallow: /*.json-compact
Disallow: /*.json-html
Disallow: /*.xml
Disallow: /*.rss
Allow: /discover.rss
Allow: /r/*.rss
Disallow: /r/*/search.rss
Disallow: /r/*/comments/*.rss
Disallow: /r/*/config/*.rss
Disallow: /r/*/wiki/*.rss
Disallow: /*.i
Disallow: /*.embed
Disallow: /*/comments/*?*sort=
Disallow: */comment/*
Allow: /r/*/comments/*/*/de/*
Allow: /r/*/comments/*/*/es/*
Allow: /r/*/comments/*/*/fr/*
Allow: /r/*/comments/*/*/pt/*
Allow: /r/*/comments/*/*/it/*
Allow: /r/*/comments/*/*/video/*
Disallow: /r/*/comments/*/*/*/*
Disallow: /r/*/submit$
Disallow: /r/*/submit/$
Disallow: /message/compose*
Disallow: /api
Disallow: /post
Disallow: /submit
Disallow: /goto
Disallow: /*before=
Disallow: /user/*after=
Disallow: /u/*after=
Disallow: /domain/*t=
Allow: /login
Disallow: /remove_email/t2_*
Disallow: /r/*/user/
Disallow: /gold?
Disallow: /search*
Disallow: /*/search?
Disallow: /*/search/?
Disallow: /*/search$
Disallow: /*/search/$
Disallow: /search.compact$
Disallow: /*/search.compact$
Allow: /r/*/comments/*/search/$
Allow: /r/*/comments/*/search$
Disallow: /static/button/button1.js
Disallow: /static/button/button1.html
Disallow: /static/button/button2.html
Disallow: /static/button/button3.html
Disallow: /subreddits/*
Disallow: /buttonlite.js
Disallow: /timings/perf
Disallow: /counters/client-screenview
Disallow: /*?*feed=
Disallow: /svc/shreddit/*
Disallow: /svc/sh/*
Disallow: /svc/web/*
Disallow: /svc/events/preload-header
Disallow: /graphql
Disallow: /errors$
Disallow: /live/*
Disallow: /mediaembed/*
Disallow: /media
Disallow: /gallery/*
Disallow: /poll/*
Allow: /
Allow: /sitemaps/*.xml
Allow: /posts/*
Disallow: /answers/*
Allow: /answers$
Allow: /answers/$

User-agent: AdsBot-Google
Disallow: /search*
Disallow: /*/search?
Disallow: /*/search/?
Disallow: /*/search$
Disallow: /*/search/$
Disallow: /search.compact$
Disallow: /*/search.compact$

Plik robots.txt serwisu Reddit różni się minimalnie od wersji z 2024 roku.

Jak się okazuje zniknęło:

disallow: /login
disallow: /search
disallow: /search$
disallow: /search?q=
disallow: /search?title=

Doszły też nowe dyrektywy

User-agent: AdsBot-Google
Disallow: /search*
Disallow: /*/search?
Disallow: /*/search/?
Disallow: /*/search$
Disallow: /*/search/$
Disallow: /search.compact$
Disallow: /*/search.compact$

W 2024 roku mówiłem, że Reddit stosuje cloaking. Po 2 latach okazuje się, że to wielowarstwowy mechanizm.

4 wersje 1 pliku

Sprawdziłem bezpośrednio przez curl, jak wygląda robots.txt w zależności od nagłówka User-Agent.

  1. Blokada wszystkich, czyli domyślny robots.txt
  2. Dedykowany robots.txt dla archive.org umożliwiając archiwizowanie TYLKO strony głównej Reddit’a dzięki dyrektywie Allow: /$
  3. Social media umożliwiają podgląd udostepnianego linku
  4. Biała lista podmiotów z pełnym dostępem do serwisu Reddit

Wariant domyślny – blokada wszystkich:

curl -A "Claudebot" https://www.reddit.com/robots.txt
curl -A "Seekio.pl" https://www.reddit.com/robots.txt

Obie komendy zwracają identyczny plik, co potwierdziłem również bezpośrednio w przeglądarce:

# Welcome to Reddit's robots.txt
# Reddit believes in an open internet, but not the misuse of public content.
# See https://support.reddithelp.com/hc/en-us/articles/26410290525844-Public-Content-Policy
# See https://www.reddit.com/r/reddit4researchers/ for details on how Reddit continues to support research and non-commercial use.

User-agent: *
Disallow: /

To wersja, którą widzi każdy losowy bot i każdy losowy skrypt, czyli zero dostępu do czegokolwiek ale…

Wariant dla Internet Archive – tylko strona główna:

curl -A "archive.org_bot" https://www.reddit.com/robots.txt

Pokazuje już coś innego

# Allowed for archiving
# =====================
User-Agent: *
Allow: /$
Disallow: /

To istotna zmiana w czasie. W aktualizacji do poprzedniego artykułu pisałem, że od grudnia 2024 roku Reddit całkowicie zablokował archive.org. Sprawdzajac wersje archiwalne na początku 2025 roku pokazują samo Disallow: / bez żadnego wyjątku. Obecna, częściowa wersja z dostępem do samej strony głównej (Allow: /$ – dokładne dopasowanie root URL i nic poza tym) to osobna późniejsza zmiana.

Wayback Machine Internet Archive nie respektuje robots.txt od 2017 roku

Internet Archive już w kwietniu 2017 roku opub1likowało wpis, w którym napisali, że odchodzi od respektowania plików robots.txt przy podejmowaniu decyzji o archiwizacji. Zaczęli od domen rządowych i wojskowych USA, ale zapowiedzieli, że będą to rozszerzać.

Co ciekawe dla social media serwowany jest inny robots.txt

Wariant dla crawlerów podglądu linków (Meta, X):

curl -A "facebookexternalhit" https://www.reddit.com/robots.txt
curl -A "Twitterbot" https://www.reddit.com/robots.txt

Test curl dla User-agentów Meta oraz X.com pokazuje wystarczająco dużo, by wygenerować podgląd linku przy udostępnianiu posta ale wciąż daleko od pełnego dostępu.

# Allowed for social sharing
# ==========================
User-Agent: *
Disallow: /
Allow: /r/*
Allow: /oembed*
Allow: /avatar/*
Allow: /user/*
Allow: /u/*
Allow: /tldr/*
Allow: /best/*
Allow: /register/
Allow: /login/
Allow: /media
Allow: /c/*
Allow: /$

No i klasyka, czyli biała lista z pełnym dostępem

Wariant pełny (biała lista) – dostępny dla Google i OpenAI

Ten sam plik, który w 2024 roku widziała tylko pamięć podręczna Google, dziś mogę odtworzyć na 2 niezależne sposoby

  1. Google Rich Results Test
  2. bezpośrednie zapytanie w ChatGPT promptem

podaj zawartość pliku robots strony reddit.com

Test z ChatGPT powtórzyłem na koncie będąc zalogowanym oraz w trybie incognito jako niezalogowany. Wynik identyczny w obu przypadkach!

Obie metody zwracają identyczny, w pełni rozbudowany plik. Oznacza to, że wersja z białą listą jest aktywnie utrzymywana i rozwijana i widoczna tylko dla wybranych podmiotów. Przypomnę tylko, że przychody z licencjonowania danych na platformie Reddit w Q2 2026 wzrosły o 24% do 43 mln dolarów, a na czele listy kupujących plasuje się OpenAI i Google2

2 warstwy cloakingu

Tu dochodzę do najważniejszego odkrycia tej analizy. Próbowałem podszyć się pod user-agent i dostałem ciekawe info:

curl -A "Googlebot" https://www.reddit.com/robots.txt
curl -A "GPTBot" https://www.reddit.com/robots.txt
curl -A "bingbot" https://www.reddit.com/robots.txt

Wszystkie 3 zapytania zwróciły identyczną stronę blokady:

<h1>whoa there, pardner!</h1>
<p>Your request has been blocked due to a network policy.</p>

Co ciekawe, strony blokady różniły się jednym szczegółem – kodem ticketu na dole strony:

User-AgentKod ticketu
Googlebot(puste pole)
GPTBot01a0230d-d445-7048-bb4a-4118c75de615
bingbot01a02388-1b13-7974-83b5-99a031e78014

Ta różnica sugeruje, że zapytania nie są odrzucane w jednym, wspólnym miejscu. Możliwe, że fałszywy Googlebot jest blokowany wcześniej – na poziomie brzegowym CDN, jeszcze zanim trafi do warstwy aplikacji generującej ticket – podczas gdy GPTBot i bingbot przechodzą nieco dalej i dopiero tam są odrzucane.

Z tych testów wynika, że Reddit stosuje 2 niezależne warstwy cloakingu:

  1. Warstwa sieciowa (WAF) – dla najbardziej „atrakcyjnych” do podszywania się identyfikatorów (Googlebot, GPTBot, bingbot) sam nagłówek User-Agent nie wystarczy. System weryfikuje prawdopodobnie jeszcze IP lub rDNS.
  2. Warstwa treści pliku (klasyczny cloaking) – dla pozostałych identyfikatorów (Claude, archive.org, facebookexternalhit, Twitterbot, każdy losowy string) wystarczy sam nagłówek User-Agent, żeby dostać 1 z opisanych wcześniej wersji pliku. Tu nie ma żadnej weryfikacji sieciowej.

Reddit nie ufa samej deklaracji User-Agent w przypadku botów, które są dla niego najcenniejsze i jednocześnie najbardziej opłacalne do podrobienia ale dla całej reszty standardowy cloaking na poziomie treści pliku w zupełności wystarcza. Odkrycie jest ciekawe moim zdaniem.

Bing – blokada potwierdzona niezależną metodą i zmierzona w danych

W 2024 roku pisałem, że narzędzie mobile-friendly test Binga pokazuje błąd przy próbie analizy Reddita. Sprawdziłem to ponownie:

curl -A "bingbot" https://www.reddit.com/robots.txt

Próbowałem wielokrotnie uzyskać informacje z narzędzie mobile-friendly test Binga ale jedyne co dostałem, to krótkie info:

Nie można pobrać informacji o tej stronie. Sprawdź adres strony i spróbuj ponownie.

Dla porównania to samo narzędzie bez żadnego problemu analizuje inne strony. Problem wychodzi jedynie przy próbie robots.txt Reddit’a.

Operator site: na pomoc!

Tę blokadę można zmierzyć liczbowo, porównując wyniki operatora site:reddit.com w Google i Bing.

WyszukiwarkaSierpień 20242026Zmiana
Google~355 000 000~636 000 000+79%
Bing~1 960 000~1 970 000+0,5%

Podczas gdy indeks Google urósł o prawie 80%, to indeks Bing praktycznie stoi w miejscu. To dokładnie to, czego można się spodziewać gdy 1 crawler ma pełny i nieprzerwany dostęp, a drugi jest blokowany.

Common Crawl – konsekwentna blokada, miesiąc po miesiącu

Sprawdziłem też jak się ma Common Crawl, który jest otwartym projektem crawlującym internet, a którego dane są jednym z podstawowych źródeł treningowych dla wielu LLM’ów. Okazuje się, że Reddit skutecznie blokuje cały czas CCbot bez żadnych wyjątków.

Ciekawostką jest to, że mimo pełnej blokady w danych Common Crawl wciąż skanuje niewielka liczbę stron na reddit.com. W zależności od miesiąca wychodzi to od 306 do 871. Nie są to jednak strony faktycznie pobrane wbrew blokadzie, a raczej same adresy URL odkryte przez crawler dzięki linkom z innych, niezablokowanych stron i bez faktycznego pobrania treści spod tych adresów.

To spójne z resztą obrazu: dostęp do treningowych zbiorów danych Reddita jest towarem, a Common Crawl jako darmowy, ogólnodostępny zasób nie jest stroną żadnej umowy licencyjnej.

Perplexity – częściowy dostęp do metadanych, a nie do treści

Osobno przetestowałem Perplexity tym samym promptem o zawartość robots.txt:

podaj zawartość pliku robots strony https://reddit.com/robots.txt

Perplexity zwróciło mi informację, że nie było w stanie pobrać pliku, bo serwer Reddita odrzucił żądanie. Logiczne, w koncu jest „disallow” ale… poprosiłem więc streszczenie konkretnego, świeżego wątku sprzed kilkunastu godzin:

znajdź na reddit.com temat „Popular high-end outdoor clothing company has horrible AI copy” i podaj streszczenie.

Odpowiedź była częściowo trafna: Perplexity poprawnie wskazało subreddit (r/SEO), flair posta oraz nazwę użytkownika autora. Jednocześnie przyznał wprost, że nie ma dostępu do konkretnych cytatów ani do nazwy marki, o której mowa w poście mimo że nazwa pojawia się wprost w treści wątku, a nie tylko w tytule.

Perplexity miało dostęp do metadanych posta jak: tytuł, autor, subreddit i znacznik czasu ale nie do pełnej treści czy komentarzy.

Sprawdziłem ten sam wątek Reddit w Google i Bing:

  • Google – zaindeksowany
  • Bing – niezaindeksowany

Więc jedyne wytłumaczenie mam takie, że Perplexity wykorzystało to, co znalazło w SERP Google. Tym bardziej, ze w procesie myślowym widać wprost użycie operatora site

"Popular high-end outdoor clothing company has horrible AI copy" site:reddit.com

Podsumowanie: cloaking jako narzędzie segmentacji komercyjnej

Zestawienie wszystkich testów daje spójny obraz:

PodmiotWersja robots.txtMechanizm blokady
Googlepełny dostępbrak – zweryfikowany na poziomie sieci
OpenAI (ChatGPT)pełny dostępbrak – zweryfikowany na poziomie sieci, potwierdzone niezależnie od stanu logowania
Bingbrak dostępuWAF, potwierdzone niezależnym narzędziem Microsoftu, spójne z zerowym wzrostem indeksu
Anthropic (Claude)Disallow: /cloaking na poziomie treści pliku
Common CrawlDisallow: /deklaracja w robots.txt, potwierdzona w 12 kolejnych miesiącach bez wyjątku
Internet Archivetylko strona głównacloaking na poziomie treści pliku, zmieniony w czasie (pełna blokada → dostęp częściowy)
Meta / X (podgląd linków)dostęp ograniczonycloaking na poziomie treści pliku
Perplexitybrak dostępu do robots.txt, częściowy dostęp do metadanych treściniejasny, prawdopodobnie inny kanał niż standardowy crawling
Losowy bot / użytkownikDisallow: /domyślna, najbardziej restrykcyjna wersja

To co w 2024 roku wyglądało na jeden plik dla Google, a drugi dla reszty świata – to po 2 latach okazuje się, że Reddit serwuje różne robots.txt w zależności od tego, kto po drugiej stronie łącza faktycznie płaci lub ma podpisaną umowę licencyjną.

  1. Archive.org ignoruje robots.txt od 2017 roku – https://blog.archive.org/2017/04/17/robots-txt-meant-for-search-engines-dont-work-well-for-web-archives/ ↩︎
  2. Przychody Reddit wzrosły o 24% do 43 mln dolarów, a na czele jest OpenAI i Google – https://investor.redditinc.com/news-events/news-releases/news-details/2026/Reddit-Reports-Second-Quarter-2026-Results/default.aspx ↩︎

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *