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).
blockHeadless
Dział zatytułowany „blockHeadless”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łędemBlockedErrorz kodemheadless_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
Dział zatytułowany „Lista blokad”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łędemBlockedErrorz kodemrecipient_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.
limitRate (ograniczenie w przeglądarce)
Dział zatytułowany „limitRate (ograniczenie w przeglądarce)”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.
Ścisłe parametry
Dział zatytułowany „Ścisłe parametry”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.