Przejdź do głównej zawartości

blockHeadless i lista blokad

Oprócz dozwolonych domen i Turnstile Frontmail ma dwa proste filtry, które możesz włączyć w SDK, w panelu albo w obu miejscach. Ustawienia w panelu znajdziesz na stronie Bezpieczeństwo (zmieniać je mogą właściciel i administratorzy).

Odrzuca wysyłki z zautomatyzowanych przeglądarek headless (Puppeteer, Playwright, Selenium i podobnych), których często używają spamboty wypełniające formularze.

init({ publicKey: 'pk_4f2a…', blockHeadless: true });
  • W SDK sprawdzenie odbywa się w przeglądarce, zanim zostanie wysłane jakiekolwiek żądanie: send() kończy się błędem BlockedError z kodem headless_blocked. Nie ma żądania, nie ma zużytego kredytu.
  • W Bezpieczeństwo → Ochrona przed nadużyciami → Blokuj przeglądarki headless API dodatkowo odrzuca żądania z kluczem publicznym, których user agent wskazuje na przeglądarkę headless lub zautomatyzowaną (HeadlessChrome, Puppeteer, Playwright, Selenium, PhantomJS, jsdom …). Używaj obu.

Zwykli użytkownicy nie odczują różnicy. Twoje własne testy end-to-end – owszem: w testach wysyłaj z kluczem prywatnym albo wyłącz tę opcję w środowiskach testowych.

Lista blokad odrzuca wysyłkę, gdy odbiorca – albo wartość wybranego parametru – pasuje do któregoś wpisu. Typowe zastosowania: adres uporczywego spamera, domeny jednorazowych skrzynek, konkurent, który scrapuje twoje formularze.

init({
publicKey: 'pk_4f2a…',
blockList: {
list: ['spam@example.net', 'mailinator.com'],
watchVariable: 'email', // parametr lub pole formularza do sprawdzenia
},
});
  • Wartości są porównywane bez rozróżniania wielkości liter, po usunięciu spacji z początku i końca. Wpis bez @ (albo zaczynający się od @, np. @mailinator.com) pasuje do każdego adresu w tej domenie; pozostałe wpisy muszą dokładnie odpowiadać adresowi e-mail lub sprawdzanej wartości.
  • W SDK sprawdzenie odbywa się przed wysłaniem żądania; przy dopasowaniu send() kończy się błędem BlockedError z kodem recipient_blocked.
  • W Bezpieczeństwo → Lista blokad właściciel i administratorzy wpisują Zablokowane wartości (jedną w wierszu, maksymalnie 1000) i opcjonalnie Sprawdzany parametr (np. email; ścieżki z kropkami też działają). API egzekwuje listę dla każdego żądania – z kluczem publicznym i prywatnym, także ze starych klientów czy skryptów bez SDK – zanim zostanie zużyty kredyt. Sprawdza odbiorców po wyrenderowaniu szablonu (To/CC/BCC) oraz wartość sprawdzanego parametru.

Lista w SDK jest widoczna w kodzie źródłowym strony; wrażliwe wpisy trzymaj tylko na liście w panelu.

SDK potrafią też nie dopuścić do tego, by jedna przeglądarka wysyłała zbyt często – na przykład gdy odwiedzający kliknie przycisk wysyłania dwa razy:

init({ publicKey: 'pk_4f2a…', limitRate: { id: 'contact', throttle: 10_000 } });

Druga wysyłka w ciągu 10 sekund z tej samej strony (albo z tym samym id) jest odrzucana lokalnie błędem BlockedError z kodem rate_limited. To wygodne zabezpieczenie, a nie środek bezpieczeństwa – limity po stronie serwera opisuje strona Rate limity.

Bezpieczeństwo → Ochrona przed nadużyciami → Ścisłe parametry odrzuca żądania z parametrami, których schemat szablonu nie definiuje (zobacz Parametry). Boty, które wypełniają każde pole formularza, także wymyślone, zostają zatrzymane, zanim zużyją kredyty.