robots.txt dla web scrapingu: co wiąże, a co nie

robots.txt to konwencja, a nie umowa - i nie blokada. Oto, czego faktycznie wymaga od scrapera, czego nie może wymusić i jak go szanować, jednocześnie pozyskując dane.

Każda rozmowa o etyce scrapingu zaczyna się od robots.txt, a większość z nich popełnia błąd w jednym z dwóch kierunków - traktując go jako prawo, za którego złamanie zostaniesz aresztowany, lub jako hałas, który można całkowicie zignorować. Nie jest ani jednym, ani drugim. robots.txt to dobrowolna konwencja, która mówi dobrze zachowującym się botom, które ścieżki witryna wolałaby, aby pozostawiły w spokoju. Wiedza o tym, co dokładnie wiąże, a co nie, odróżnia profesjonalną operację danych od lekkomyślnej. To przewodnik praktyka, i uwaga na początku: to jest informacyjne, a nie porada prawna.

Czym właściwie jest robots.txt

robots.txt wdraża Protokół Wykluczenia Robotów, znormalizowany w 2022 roku jako RFC 9309. Jest to plik tekstowy, który znajduje się w katalogu głównym domeny - https://example.com/robots.txt - z jednym plikiem na domenę lub subdomenę. Jest opcjonalny: 404 oznacza po prostu, że witryna nie ma pliku i nie wyraziła żadnych preferencji. Kluczowe jest to, że jest to prośba, a nie bariera. Nic w serwowaniu robots.txt technicznie nie zapobiega dostępowi; opiera się na dobrej wierze botów, które go czytają.

Czytanie go to jedno żądanie - rób to, zanim zaczniesz cokolwiek przeszukiwać, za każdym razem:

# Just read it
curl -s https://example.com/robots.txt

# Through a proxy, as your scraper would see it
curl -s -x http://USER:PASS@gate.quantumproxies.io:8000 https://example.com/robots.txt

Dyrektywy, które mają znaczenie

Słownictwo jest małe. Naucz się ich, a będziesz mógł czytać każdy robots.txt na pierwszy rzut oka:

Jedna uwaga dotycząca składni: symbole wieloznaczne * i $ w wzorcach ścieżek nie są w oryginalnym standardzie, ale każdy główny silnik je honoruje, więc Disallow: /*.pdf$ jest powszechne i skuteczne w praktyce.

import urllib.robotparser as rp

# Parse robots.txt and check a URL for your user agent
robots = rp.RobotFileParser()
robots.set_url("https://example.com/robots.txt")
robots.read()

UA = "MyResearchBot/1.0"
print(robots.can_fetch(UA, "https://example.com/products"))  # True / False
print(robots.crawl_delay(UA))                                 # seconds, or None
Dwukolumnowy diagram kontrastujący, czym jest robots.txt (konwencja, sygnał tempa) w porównaniu do tego, czym nie jest (umowa, kontrola dostępu)
robots.txt to sygnał do szanowania, a nie blokada, która cię zatrzymuje lub umowa, która cię sama wiąże.

Co wiąże - a co nie

To jest część, którą ludzie najbardziej potrzebują wyjaśnić. robots.txt nie jest sam w sobie prawnie wiążący i nie jest technicznym mechanizmem kontroli dostępu - nie blokuje niczego. Sądy ogólnie traktowały dobrze znane dane publiczne jako publiczne. Ale 'nie prawo samo w sobie' nie oznacza 'bez konsekwencji'. Ignorowanie wyrażonych życzeń witryny może stać się czynnikiem w argumentach dotyczących warunków użytkowania, naruszenia lub niewłaściwego użycia komputera, zaprasza do blokad i dodatkowej kontroli, i jest po prostu złym obywatelstwem. Pragmatyczne podejście: traktuj robots.txt jako etyczną podstawę, którą honorujesz, a rzeczywiste pytania prawne - dane osobowe, umowy, jurysdykcja - jako oddzielną kwestię do rozwiązania. Nasz przegląd legalności web scrapingu w 2026 roku omawia je oddzielnie.

Zmiana AI-crawler

robots.txt zyskał drugie życie jako kanał rezygnacji z treningu AI. Witryny teraz dodają wyraźne zasady dla agentów użytkowników AI - GPTBot, Google-Extended, CCBot, ClaudeBot, PerplexityBot i innych - aby powiedzieć 'indeksuj mnie, ale nie trenuj na mnie'. Dlatego badacze teraz twierdzą, że robots.txt nie wystarcza już sam w sobie, aby trzymać dane publiczne z dala od modeli: zależy to całkowicie od każdego crawlera, który wybiera, czy się do niego stosować, i mówi tylko do zadeklarowanych, dobrze zachowujących się agentów. Jeśli prowadzisz crawlera, deklarowanie uczciwego User-Agent i respektowanie tych rezygnacji to podstawa. Powstający plik towarzyszący dla przeciwnych zamiarów - zapraszający narzędzia AI - to llms.txt, który omawiamy w naszym przewodniku po llms.txt.

# A modern robots.txt often carries AI-specific opt-outs:
#   User-agent: GPTBot
#   Disallow: /
#
#   User-agent: Google-Extended
#   Disallow: /
#
#   User-agent: *
#   Crawl-delay: 5
#   Sitemap: https://example.com/sitemap.xml
Schemat przepływu zgodnego przeszukiwania: pobierz robots.txt, dopasuj user agent, szanuj crawl-delay, przeszukuj dozwolone publiczne ścieżki
Zgodne przeszukiwanie najpierw czyta plik, szanuje dyrektywy tempa i dotyka tylko dozwolonych publicznych ścieżek.

Bycie dobrym obywatelem, jednocześnie pozyskując dane

Szanując robots.txt i zbierając potrzebne dane publiczne, nie są w konflikcie. Dyscypliny, które utrzymują cię mile widzianym, to te same, które utrzymują cię nieblokowanym: szanuj Crawl-delay i tempuj swoje żądania, uczciwie identyfikuj swojego bota, agresywnie buforuj, aby nigdy nie pobierać tej samej strony ponownie i unikaj kosztownych punktów końcowych, które witryna próbuje chronić. Normą społeczności, dobrze ujętą na forach, jest to, że robots.txt istnieje głównie po to, aby zniechęcać boty generujące miażdżący ruch - więc nie bądź tym botem. Nasz przewodnik po grzecznym scrapingu zamienia to w konkretne zasady tempa.

Dla zespołów, które chcą, aby zgodność była obsługiwana domyślnie, Scraper API może czytać i respektować robots.txt jako część żądania, wraz z rozsądnym ograniczaniem tempa - więc dobre obywatelstwo jest domyślnym zachowaniem narzędzia, a nie polem wyboru, które można zapomnieć. Utrzymuje również czysty, zadeklarowany ślad zamiast surowego skryptu uderzającego z jednego IP.

Zbieraj dane publiczne w zgodny sposób

Często zadawane pytania

Czy robots.txt prawnie dotyczy web scrapingu?

Nie samo w sobie. robots.txt to dobrowolna konwencja (RFC 9309), a nie prawo czy umowa, i nie blokuje technicznie dostępu. Ale ignorowanie go może wpłynąć na roszczenia dotyczące warunków użytkowania, naruszenia lub niewłaściwego użycia komputera i zaprasza do blokad i kontroli. Traktuj to jako etyczną podstawę do honorowania, a rzeczywiste pytania prawne - dane osobowe, umowy - rozpatruj osobno. To nie jest porada prawna.

Jak czytać robots.txt witryny?

Wyślij HTTP GET do katalogu głównego domeny z dołączonym /robots.txt, np. https://example.com/robots.txt. curl lub dowolny klient HTTP działa; w Pythonie urllib.robotparser analizuje to i odpowiada can_fetch() dla danego user agent i URL. 404 oznacza, że witryna nie ma robots.txt i nie wyraziła żadnych preferencji dotyczących przeszukiwania.

Co oznacza Disallow: /?

Prosi wszystkie pasujące boty, aby nie przeszukiwały żadnej ścieżki na stronie - cała domena jest niedostępna na żądanie. Pusta Disallow: oznacza odwrotnie: wszystko jest dozwolone. Pamiętaj, że są to prośby do dobrze zachowujących się crawlerów, a nie wymuszone bariery, i że wartości ścieżek są czułe na wielkość liter, podczas gdy nazwy dyrektyw nie są.

Czy mogę zignorować robots.txt, jeśli dane są publiczne?

Technicznie możesz, ponieważ nie jest to wymuszone, ale generalnie nie powinieneś. Ignorowanie go to złe obywatelstwo, szybciej cię blokuje i może wzmocnić argument witryny przeciwko tobie w sporze. Profesjonalne podejście to szanowanie go, przeszukiwanie tylko dozwolonych publicznych ścieżek, tempowanie swoich żądań i trzymanie danych osobowych całkowicie poza zakresem.

robots.txt to mały plik, który niesie duży sygnał: oto jak ta witryna chce być przeszukiwana. Przeczytaj go najpierw, szanuj ścieżki i tempo, deklaruj, kim jesteś, a możesz zbierać potrzebne dane publiczne, pozostając zdecydowanie po właściwej stronie zarówno etykiety, jak i ryzyka.

Wypróbuj Scraper API z przeszukiwaniem świadomym robots