Prywatny numer telefonu najczęściej trafia do kodu strony nie dlatego, że ktoś celowo go opublikował. Wystarczy skopiowany fragment stopki, automatycznie uzupełniony profil autora, testowy formularz albo dane zapisane w konfiguracji wtyczki. Numer może być niewidoczny na ekranie, a mimo to pozostawać dostępny w HTML-u, danych strukturalnych, skryptach JavaScript lub plikach pobieranych przez przeglądarkę.
To istotna różnica. Ukrycie elementu za pomocą CSS nie usuwa informacji ze strony. Robot indeksujący, skrypt zbierający dane albo zwykły użytkownik korzystający z opcji „Wyświetl źródło strony” nadal może ją odczytać. Gdy numer zostanie zaindeksowany, samo poprawienie witryny również nie zawsze kończy sprawę — kopia może pozostać w wynikach wyszukiwania, pamięci podręcznej, archiwum internetowym albo bazie firmy zbierającej dane kontaktowe.
Najpierw ustal, gdzie numer naprawdę się znajduje
Pierwszy błąd to sprawdzanie wyłącznie tego, co widać na ekranie. Numer telefonu może nie pojawiać się w treści strony, ale nadal być wysyłany do każdej osoby, która ją otwiera. W praktyce kontrolę trzeba przeprowadzić na kilku poziomach.
Najpierw otwórz stronę w przeglądarce i użyj skrótu Ctrl+U, aby wyświetlić jej źródło. Następnie wyszukaj:
- pełny numer, np.
501234567, - numer ze spacjami, np.
501 234 567, - zapis międzynarodowy, np.
+48 501 234 567, - ostatnie sześć cyfr, ponieważ numer może zostać podzielony znacznikami HTML,
- ciągi
tel:,telephone,phone,mobileicontactPoint.
Samo źródło HTML nie wystarcza w przypadku stron opartych na React, Vue, Next.js lub rozbudowanych kreatorach. Numer może zostać dołączony dopiero po uruchomieniu JavaScriptu. W takiej sytuacji należy otworzyć narzędzia deweloperskie skrótem F12, przejść do zakładki „Elements” i ponownie przeszukać dokument.
Kolejnym miejscem są dane strukturalne JSON-LD. Zwykle znajdują się w znaczniku:
<script type="application/ld+json">
Wewnątrz mogą występować pola telephone, contactPoint, employee, founder albo author. To częsty problem na stronach firmowych. Administrator podmienia numer widoczny w zakładce „Kontakt”, ale stary numer pozostaje w danych typu Organization lub LocalBusiness, ponieważ został wpisany osobno w konfiguracji SEO.
Trzeba też sprawdzić:
- stopkę i nagłówek strony,
- menu mobilne,
- wizytówki pracowników,
- profile autorów wpisów,
- formularze kontaktowe,
- komunikaty błędów formularza,
- przyciski „Zadzwoń” i „Oddzwoń”,
- regulamin oraz politykę prywatności,
- pliki PDF, DOCX i vCard,
- komentarze pozostawione w kodzie,
- pliki JavaScript i mapy źródeł
.map, - historię zmian w publicznym repozytorium GitHub lub GitLab.
Szczególnie zdradliwe są linki telefoniczne. Element może wyświetlać napis „Zadzwoń do opiekuna”, podczas gdy właściwy numer znajduje się w atrybucie:
<a href="tel:+48501234567">Zadzwoń do opiekuna</a>
Numer nie jest widoczny jako tekst, ale nadal stanowi część publicznego kodu. Tak samo działa przycisk z ikoną telefonu, którego opis lub adres jest generowany przez wtyczkę.
W przypadku WordPressa numer należy wyszukać nie tylko w treści podstron. Może być zapisany w Customizerze, widżecie stopki, Elementorze, globalnym szablonie, polach ACF, ustawieniach motywu, wtyczce SEO albo bazie danych. Podmiana danych w jednym miejscu nie aktualizuje automatycznie pozostałych kopii.
Nie maskuj numeru — usuń go z warstwy publicznej
Najgorszym rozwiązaniem jest „ukrycie” numeru metodą wizualną. Reguły takie jak display:none, visibility:hidden, przesunięcie elementu poza ekran czy ustawienie koloru tekstu identycznego z tłem nie zapewniają ochrony. Przeglądarka nadal pobiera pełną wartość.
Podobnie należy ocenić proste sztuczki polegające na zapisaniu numeru jako:
501 [małpa] 234...,501-234-567,pięć zero jeden...,- kilku osobnych fragmentów HTML,
- ciągu odwracanego później przez JavaScript.
Takie rozwiązania mogą ograniczyć działanie najprostszych botów, ale nie chronią prywatnego numeru przed odczytaniem. Skrypt może analizować widoczny tekst, strukturę dokumentu i wynik działania JavaScriptu. Jeżeli numer ma pozostać prywatny, nie powinien być wysyłany do przeglądarki użytkownika w żadnej postaci.
Najbezpieczniejsza decyzja to zastąpienie numeru prywatnego jednym z trzech rozwiązań:
- Oddzielny numer służbowy
Najprostszy wariant dla jednoosobowej działalności i małej firmy. Numer powinien działać na osobnej karcie SIM lub eSIM. Abonament głosowy w Polsce zwykle kosztuje około 20–50 zł miesięcznie, zależnie od operatora i zakresu usług. Minusem jest konieczność obsługi drugiego numeru oraz ryzyko połączeń poza godzinami pracy. - Numer wirtualny lub centrala VoIP
Numer jest kierowany na wybrane telefony, zgodnie z harmonogramem albo kolejką połączeń. Podstawowe usługi zwykle kosztują około 10–40 zł miesięcznie za numer, a bardziej rozbudowana centrala z nagrywaniem, zapowiedziami i kilkoma użytkownikami może kosztować 50–200 zł miesięcznie. Trzeba sprawdzić warunki przechowywania nagrań, lokalizację infrastruktury i umowę powierzenia danych. - Formularz kontaktowy z oddzwanianiem
Prywatny numer nie jest publikowany, a użytkownik pozostawia własne dane. Formularz powinien wysyłać zgłoszenie na skrzynkę firmową lub do systemu CRM. Wadą jest niższa wygoda dla osób oczekujących natychmiastowego kontaktu. Dochodzą też obowiązki związane z zabezpieczeniem formularza, ograniczeniem spamu oraz ustaleniem czasu przechowywania zgłoszeń.
Dla osoby prowadzącej działalność najlepszym kompromisem jest zwykle osobny numer służbowy z przekierowaniem, a nie techniczne zaciemnianie numeru prywatnego. Dzięki temu numer może pozostać publiczny, lecz jego ujawnienie nie narusza granicy między życiem zawodowym a prywatnym.
Trzeba przy tym rozróżnić dwa przypadki. Ogólny numer biura lub infolinii, który nie identyfikuje konkretnej osoby, nie zawsze będzie traktowany tak samo jak numer przypisany bezpośrednio do właściciela, pracownika czy współpracownika. Prywatny numer powiązany z konkretną osobą jest daną osobową. Jego publikacja powinna mieć określony cel, podstawę oraz zakres adekwatny do tego celu. Sam fakt, że pracownik odbiera czasem telefony służbowe, nie oznacza automatycznej zgody na umieszczenie jego prywatnego numeru w publicznym kodzie witryny.
Jeżeli numer pracownika ma być używany na stronie, bezpieczniejszą praktyką jest wydanie mu numeru służbowego. Zgoda na publikację prywatnego numeru jest rozwiązaniem słabym organizacyjnie: może zostać wycofana, utrudnia rozdzielenie kontaktu prywatnego od zawodowego i często prowadzi do problemów po zakończeniu współpracy.
Usuń kopie, wyczyść indeks i wprowadź kontrolę publikacji
Usunięcie numeru z aktualnego szablonu to dopiero połowa pracy. Po zmianie trzeba sprawdzić, czy stara wartość nie jest nadal udostępniana przez pamięć podręczną, sieć CDN, wersję AMP, stronę testową albo plik utworzony przed aktualizacją.
Praktyczna kolejność działań wygląda następująco:
- usuń numer z treści, szablonów i danych strukturalnych,
- wyczyść pamięć podręczną CMS-a,
- wyczyść cache używanej wtyczki optymalizacyjnej,
- usuń kopię z CDN, np. Cloudflare,
- przebuduj statyczne pliki strony,
- sprawdź wersję mobilną i językową,
- ponownie przejrzyj HTML oraz zakładkę „Elements”,
- sprawdź pliki PDF i materiały do pobrania,
- przeszukaj repozytorium oraz historię wdrożeń.
Na stronie o kilkudziesięciu podstronach ręczna kontrola szybko staje się zawodna. Warto wtedy pobrać kopię witryny albo użyć crawlera, takiego jak Screaming Frog SEO Spider. Narzędzie pozwala przeszukać kod wielu adresów jednocześnie. Bezpłatna wersja obsługuje ograniczoną liczbę adresów, dlatego przy większym serwisie trzeba użyć wersji płatnej albo własnego skryptu.
Własny skaner powinien wyszukiwać nie tylko jeden zapis numeru, ale również jego warianty. Dla polskiego numeru komórkowego trzeba uwzględnić co najmniej:
- zapis dziewięciocyfrowy,
- zapis ze spacjami,
- zapis z myślnikami,
- prefiks
+48, - prefiks
0048, - link
tel:, - cyfry rozdzielone znacznikami HTML.
Wyrażenie regularne pomagające wykrywać polskie numery może być przydatne, ale nie powinno automatycznie usuwać znalezionych ciągów. Dziewięć cyfr może oznaczać także numer zamówienia, identyfikator produktu albo fragment danych technicznych. Każde trafienie trzeba zweryfikować w kontekście.
Jeżeli numer pojawił się w Google, po jego usunięciu należy poprosić o ponowne zindeksowanie poprawionej strony w Google Search Console. W pilnych przypadkach można skorzystać z narzędzia do usuwania nieaktualnych treści lub tymczasowego ukrywania wyniku. Nie daje to jednak gwarancji usunięcia numeru ze wszystkich zewnętrznych baz. Serwisy archiwizujące i firmy agregujące kontakty działają niezależnie.
Nie należy również polegać wyłącznie na pliku robots.txt. Zablokowanie skanowania nie usuwa danych z kodu ani nie gwarantuje zniknięcia wcześniej zaindeksowanego adresu. Czasem wręcz utrudnia wyszukiwarce ponowne odwiedzenie strony i zauważenie, że numer został już usunięty.
Po incydencie potrzebna jest prosta zasada publikacyjna: żaden prywatny numer nie trafia do CMS-a, repozytorium ani pliku konfiguracyjnego używanego na produkcji. W formularzach testowych należy stosować numery fikcyjne lub wyraźnie oznaczone dane demonstracyjne. W środowisku produkcyjnym dane kontaktowe powinny pochodzić z jednego, kontrolowanego źródła, a nie z kilku niezależnych pól w motywie i wtyczkach.
Przydatne jest też automatyczne sprawdzanie kodu przed wdrożeniem. Nawet prosty skrypt uruchamiany w procesie CI/CD może przerwać publikację, gdy wykryje konkretny numer, adres prywatnej skrzynki albo inne niedozwolone dane. Niedogodność jest oczywista: lista blokowanych wartości wymaga utrzymania i może generować fałszywe alarmy. Mimo to koszt poprawienia alarmu przed wdrożeniem jest znacznie niższy niż usuwanie numeru z indeksów i zewnętrznych baz.
Dodatkowe informacje na: https://aiqo.pl
FAQ
Czy ustawienie numeru jako niewidocznego w CSS wystarczy?
Nie. Numer nadal znajduje się w kodzie pobieranym przez przeglądarkę i może zostać odczytany przez użytkownika, robota lub skrypt.
Czy zapisanie numeru w JavaScripcie chroni go przed robotami?
Nie zapewnia ochrony. Współczesne roboty potrafią wykonywać JavaScript, analizować pliki skryptów i odczytywać wynik działania strony.
Czy obrazek z numerem jest bezpieczniejszy niż tekst?
Jedynie wobec najprostszych automatów. Numer nadal jest publiczny, może zostać odczytany ręcznie lub rozpoznany przez system OCR. Obrazek pogarsza też dostępność strony.
Czy wystarczy usunąć link tel:?
Nie, jeżeli numer występuje również w tekście, danych JSON-LD, stopce, pliku PDF, skrypcie lub pamięci podręcznej. Trzeba sprawdzić wszystkie kopie.
Czy prywatny numer telefonu podlega RODO?
Tak, gdy jest powiązany z konkretną osobą lub pozwala ją zidentyfikować. Publiczny numer centrali firmowej wymaga innej oceny niż osobisty numer właściciela albo pracownika.
Czy po usunięciu numer natychmiast zniknie z Google?
Nie zawsze. Wyszukiwarka musi ponownie odwiedzić stronę i zaktualizować indeks. Proces można przyspieszyć przez Google Search Console, ale kopie mogą nadal istnieć w innych serwisach.
Czy zamiana kilku cyfr na gwiazdki rozwiązuje problem?
Tak, pod warunkiem że pełny numer nie znajduje się nigdzie indziej w kodzie. Zapis 501 *** 567 nie ujawnia całego numeru, lecz może nadal ułatwiać identyfikację, gdy pozostałe dane są publiczne.
Co zrobić, gdy numer został opublikowany przez pracodawcę?
Najpierw należy zażądać usunięcia go ze strony, kodu, dokumentów i danych strukturalnych. Następnie trzeba ustalić, gdzie numer został skopiowany oraz czy istnieje uzasadniona podstawa jego dalszego przetwarzania.
Pierwszym działaniem powinno być wyszukanie pełnego numeru i jego ostatnich sześciu cyfr w źródle HTML, drzewie DOM oraz danych JSON-LD. Jeżeli numer tam występuje, nie należy go maskować ani zaciemniać. Trzeba usunąć go z publicznej warstwy strony, wyczyścić pamięć podręczną i zastąpić numerem służbowym albo formularzem kontaktowym. To błąd o najwyższym priorytecie — indeksowanie i kopiowanie danych może rozpocząć się natychmiast po publikacji.
