{"id":2428,"date":"2026-04-03T11:01:00","date_gmt":"2026-04-03T10:01:00","guid":{"rendered":"https:\/\/jalvo.eu\/zakresy-ip-robotow-google-nowy-adres-allowlisty-nginx\/"},"modified":"2026-04-03T11:01:00","modified_gmt":"2026-04-03T10:01:00","slug":"zakresy-ip-robotow-google-nowy-adres-allowlisty-nginx","status":"publish","type":"post","link":"https:\/\/jalvo.eu\/pl\/zakresy-ip-robotow-google-nowy-adres-allowlisty-nginx\/","title":{"rendered":"Zakresy IP robot\u00f3w Google przeniesione: aktualizacja allowlist w NGINX"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Pliki JSON z zakresami IP robot\u00f3w Google zmieniaj\u0105 adres. Stare miejsce: <code>\/search\/apis\/ipranges\/<\/code>. Nowe miejsce: <code>developers.google.com\/crawling\/ipranges\/<\/code>. Ka\u017cdy skrypt, kt\u00f3ry zasila allowlist\u0119 w NGINX albo w firewallu, musi wi\u0119c dosta\u0107 now\u0105 \u015bcie\u017ck\u0119. Google opublikowa\u0142o <a href=\"https:\/\/developers.google.com\/search\/blog\/2026\/03\/crawler-ip-ranges\" rel=\"nofollow noopener\" target=\"_blank\">og\u0142oszenie o nowej lokalizacji<\/a> 31 marca 2026 roku i podaje, \u017ce stary adres na razie dzia\u0142a, a w ci\u0105gu sze\u015bciu miesi\u0119cy zostanie przekierowany. Wpuszczasz Googlebota po IP i pobierasz te pliki automatycznie? W takim razie ta poprawka jest po Twojej stronie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co si\u0119 zmieni\u0142o w zakresach IP robot\u00f3w Google?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Adres URL. I tyle. Pliki opuszczaj\u0105 katalog <code>\/search\/apis\/ipranges\/<\/code> w serwisie developers.google.com i le\u017c\u0105 teraz pod <code>developers.google.com\/crawling\/ipranges\/<\/code>. Uzasadnienie Google: zakresy dotycz\u0105 nie tylko robot\u00f3w wyszukiwarki, wi\u0119c nale\u017cy im si\u0119 bardziej og\u00f3lne miejsce. Niech b\u0119dzie. \u017b\u0105dania do poprzedniej \u015bcie\u017cki dzi\u015b nadal si\u0119 udaj\u0105, a p\u00f3\u017aniej odpowiedzi\u0105 na nie b\u0119dzie przekierowanie. W og\u0142oszeniu nie ma nic o zmianie zawarto\u015bci plik\u00f3w ani notacji CIDR, wi\u0119c parser mo\u017ce zosta\u0107 dok\u0142adnie taki, jaki jest.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kt\u00f3re pliki JSON obejmuj\u0105 kt\u00f3re roboty?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Google dzieli swoje roboty na trzy grupy, a ka\u017cda grupa ma w\u0142asny plik. To, jak traktuj\u0105 robots.txt, jest opisane na stronie o <a href=\"https:\/\/developers.google.com\/crawling\/docs\/crawlers-fetchers\/verify-google-requests\" rel=\"nofollow noopener\" target=\"_blank\">weryfikacji \u017c\u0105da\u0144 od Google<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Roboty og\u00f3lne<\/strong>, takie jak Googlebot, wymienione w <code>common-crawlers.json<\/code>, przy automatycznym crawlowaniu zawsze przestrzegaj\u0105 regu\u0142 robots.txt.<\/li>\n<li><strong>Roboty do zada\u0144 specjalnych<\/strong>, takie jak AdsBot, wykonuj\u0105 konkretne zadania dla produkt\u00f3w Google i mog\u0105 przestrzega\u0107 robots.txt albo nie.<\/li>\n<li><strong>Narz\u0119dzia pobieraj\u0105ce uruchamiane przez u\u017cytkownika<\/strong>, takie jak Google Site Verifier, ignoruj\u0105 robots.txt, bo o pobranie poprosi\u0142 cz\u0142owiek.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ta ostatnia grupa jest najbardziej zagmatwana. Obejmuje pliki <code>user-triggered-fetchers.json<\/code>, <code>user-triggered-fetchers-google.json<\/code> i <code>user-triggered-agents.json<\/code>. Adresy z pliku <code>-google<\/code> rozwi\u0105zuj\u0105 si\u0119 do nazwy hosta w domenie google.com, a te z <code>user-triggered-fetchers.json<\/code> do gae.googleusercontent.com. Moja rada: wybierz grupy, kt\u00f3rych Twoja strona naprawd\u0119 potrzebuje, i pomi\u0144 reszt\u0119, zamiast importowa\u0107 wszystko na wszelki wypadek. A wiedza o tym, <a href=\"https:\/\/jalvo.eu\/pl\/przekierowania-po-ip-blokuja-crawlowanie-googlebota\/\">sk\u0105d Googlebot crawluje strony<\/a>, jest r\u00f3wnie wa\u017cna jak znajomo\u015b\u0107 jego adres\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak zaktualizowa\u0107 skrypty, kt\u00f3re pobieraj\u0105 JSON z zakresami IP Googlebota?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Podmie\u0144 star\u0105 \u015bcie\u017ck\u0119 wsz\u0119dzie, gdzie wyst\u0119puje, i spraw, \u017ceby krok pobierania by\u0142 wybredny wobec tego, co przyjmuje. Ja zrobi\u0142bym to w tej kolejno\u015bci:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Przeszukaj grepem zadania crona, zarz\u0105dzanie konfiguracj\u0105, pipeline&#8217;y CI i narz\u0119dzia firewalla pod k\u0105tem <code>\/search\/apis\/ipranges\/<\/code>.<\/li>\n<li>Wstaw nowy adres <code>\/crawling\/ipranges\/<\/code> dla ka\u017cdego pliku, kt\u00f3rego u\u017cywasz.<\/li>\n<li>Ka\u017c klientowi HTTP pod\u0105\u017ca\u0107 za przekierowaniami, \u017ceby odwo\u0142anie, o kt\u00f3rym zapomnia\u0142e\u015b, przetrwa\u0142o zmian\u0119.<\/li>\n<li>Sparsuj odpowied\u017a jako JSON, zanim odczyta j\u0105 cokolwiek innego.<\/li>\n<li>Zako\u0144cz dzia\u0142anie b\u0142\u0119dem, gdy plik jest pusty, uszkodzony albo nie zawiera \u017cadnych prefiks\u00f3w.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Trzymaj ostatni\u0105 dobr\u0105 kopi\u0119 obok skryptu. Nieudane pobranie nie mo\u017ce nigdy wyczy\u015bci\u0107 allowlisty. Nigdy. Adresy przychodz\u0105 w formacie CIDR, a Tw\u00f3j kod musi obs\u0142ugiwa\u0107 prefiksy zar\u00f3wno IPv4, jak i IPv6 (o tym drugim \u0142atwo zapomnie\u0107).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Budowanie allowlisty Googlebota w NGINX na podstawie plik\u00f3w<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nie wpisuj zakres\u00f3w r\u0119cznie. Generuj plik include z JSON-a. G\u0142\u00f3wna konfiguracja nie powinna zawiera\u0107 \u017cadnych prefiks\u00f3w - ma tylko wskazywa\u0107 osobny plik, kt\u00f3ry skrypt nadpisuje przy ka\u017cdym uruchomieniu. Dobrze pasuje tu blok <code>geo<\/code>:<\/p>\n\n\n\n<pre><code>geo $google_crawler {\n    default 0;\n    include \/etc\/nginx\/generated\/google-crawlers.conf;\n}\n\nlocation \/restricted\/ {\n    if ($google_crawler = 0) {\n        return 403;\n    }\n}<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Ka\u017cda linia wygenerowanego pliku to jeden prefiks, a po nim <code>1;<\/code>. Proste. Jest jednak jeden haczyk: je\u015bli przed Twoim hostingiem stoi reverse proxy NGINX z adresami z UE albo USA, takie jak Jalvo, zastosuj regu\u0142\u0119 na serwerze \u017ar\u00f3d\u0142owym, gdzie wida\u0107 prawdziwe IP klienta. A czy to jest cloaking? Nie. Zmienna decyduje wy\u0142\u0105cznie o dost\u0119pie, a ka\u017cdy odwiedzaj\u0105cy, kt\u00f3ry przejdzie, dostaje identyczn\u0105 tre\u015b\u0107. Ta sama wygenerowana mapa przydaje si\u0119, gdy konfigurujesz <a href=\"https:\/\/jalvo.eu\/pl\/ochrona-przed-hotlinkingiem-nginx-grafika-google\/\">ochron\u0119 przed hotlinkowaniem w Google Images<\/a> i chcesz wy\u0142\u0105czy\u0107 z niej prawdziwe roboty.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Od\u015bwie\u017caj wed\u0142ug harmonogramu i testuj na sucho<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ustaw zadanie pobierania i przebudowy w harmonogramie, \u017ceby allowlista nad\u0105\u017ca\u0142a za tym, co publikuje Google. Ale ka\u017cde uruchomienie powinno zaczyna\u0107 si\u0119 od pr\u00f3by na sucho:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zapisz nowy include do pliku tymczasowego,<\/li>\n<li>por\u00f3wnaj go diffem z dzia\u0142aj\u0105cym,<\/li>\n<li>uruchom <code>nginx -t<\/code>,<\/li>\n<li>prze\u0142aduj tylko wtedy, gdy test przejdzie.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Loguj ka\u017cdy dodany i usuni\u0119ty prefiks. Wysy\u0142aj alert, gdy pobieranie si\u0119 nie powiedzie albo diff jest nieoczekiwanie du\u017cy. A po przej\u015bciu na now\u0105 \u015bcie\u017ck\u0119 przejrzyj logi dost\u0119pu pod k\u0105tem odrzuconych \u017c\u0105da\u0144 z user agentem Googlebota. Zdradzaj\u0105 one brakuj\u0105c\u0105 grup\u0119 albo nieaktualny plik.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak zweryfikowa\u0107 IP Googlebota, gdy \u017c\u0105danie wygl\u0105da podejrzanie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Google opisuje dwie metody: r\u0119czne sprawdzenie w DNS dla pojedynczych przypadk\u00f3w oraz automatyczne dopasowywanie do opublikowanych list przy du\u017cej skali. Jednorazowo wykonaj odwrotne zapytanie DNS dla adresu i potwierd\u017a, \u017ce nazwa hosta ko\u0144czy si\u0119 na googlebot.com, google.com albo googleusercontent.com. Potem wykonaj zapytanie w prz\u00f3d i por\u00f3wnaj wynik z pierwotnym IP. A co z nag\u0142\u00f3wkiem user agent? Niczego nie dowodzi, bo wys\u0142a\u0107 go mo\u017ce ka\u017cdy. Liczy si\u0119 adres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ca\u0142a robota z zakresami IP robot\u00f3w Google sprowadza si\u0119 wi\u0119c do czterech rzeczy: skieruj skrypty na now\u0105 \u015bcie\u017ck\u0119, pozw\u00f3l im pod\u0105\u017ca\u0107 za przekierowaniami, przebudowuj allowlist\u0119 wed\u0142ug harmonogramu i trzymaj prefiksy z dala od r\u0119cznie pisanej konfiguracji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1790979928004-0\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Czy moja allowlista przestanie dzia\u0142a\u0107, je\u015bli zostawi\u0119 stary URL?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Nie od razu. Poprzednia \u015bcie\u017cka na razie nadal odpowiada i zostanie przekierowana na now\u0105, wi\u0119c klienty, kt\u00f3re pod\u0105\u017caj\u0105 za przekierowaniami, dalej dostaj\u0105 pliki. Mimo to zaktualizuj odwo\u0142anie. Narz\u0119dzie, kt\u00f3re ignoruje przekierowania, sko\u0144czy\u0142oby z pust\u0105 albo nieprawid\u0142ow\u0105 odpowiedzi\u0105.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1790979928004-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Czy potrzebuj\u0119 wszystkich plik\u00f3w JSON, czy tylko common-crawlers.json?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>To zale\u017cy od tego, kt\u00f3re produkty Google docieraj\u0105 do Twojej strony. <code>common-crawlers.json<\/code> obejmuje Googlebota i pozosta\u0142e roboty og\u00f3lne, roboty do zada\u0144 specjalnych, takie jak AdsBot, maj\u0105 w\u0142asn\u0105 list\u0119, a narz\u0119dzia pobieraj\u0105ce uruchamiane przez u\u017cytkownika s\u0105 rozdzielone na osobne pliki. Importuj tylko te grupy, kt\u00f3rych ruchu si\u0119 spodziewasz i kt\u00f3ry chcesz wpu\u015bci\u0107.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1790979928004-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Czy narz\u0119dzia pobieraj\u0105ce uruchamiane przez u\u017cytkownika przestrzegaj\u0105 robots.txt?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Nie. Strona Google o weryfikacji podaje, \u017ce te narz\u0119dzia ignoruj\u0105 regu\u0142y robots.txt, bo o pobranie poprosi\u0142 u\u017cytkownik, a nie zosta\u0142o ono rozpocz\u0119te przez automatyczne crawlowanie. Kontrola dost\u0119pu musi wi\u0119c odbywa\u0107 si\u0119 dla nich na poziomie IP.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Pliki JSON z zakresami IP robot\u00f3w Google zmieniaj\u0105 adres. Stare miejsce: \/search\/apis\/ipranges\/. Nowe miejsce: developers.google.com\/crawling\/ipranges\/. Ka\u017cdy skrypt, kt\u00f3ry zasila allowlist\u0119 w NGINX albo w firewallu, musi wi\u0119c dosta\u0107 now\u0105 \u015bcie\u017ck\u0119. Google opublikowa\u0142o og\u0142oszenie o nowej lokalizacji 31 marca 2026 roku i podaje, \u017ce stary adres na razie dzia\u0142a, a w ci\u0105gu sze\u015bciu miesi\u0119cy zostanie przekierowany. [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":2406,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[182],"tags":[290,292,247,223,35,513],"class_list":["post-2428","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo-pl","tag-google-x","tag-googlebot-x","tag-nginx-x","tag-roboty-wyszukiwarek","tag-techniczne-seo-pl","tag-zakresy-ip"],"acf":[],"_links":{"self":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts\/2428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/comments?post=2428"}],"version-history":[{"count":0,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/posts\/2428\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/media\/2406"}],"wp:attachment":[{"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/media?parent=2428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/categories?post=2428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jalvo.eu\/pl\/wp-json\/wp\/v2\/tags?post=2428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}