Большинство разработчиков, работающих со Stripe, знают об m.stripe.com/6
— скрипте, который отвечает за сбор fingerprint браузера. Но в тенях остался ещё один важный компонент — r.stripe.com/b
, задействованный в защите от автоматизации, ботов и spoof-трафика.
В этой статье разберём:
что это за endpoint;
когда он вызывается;
какие данные он собирает;
как его используют Stripe Radar и другие системы;
и как это изучают технические коммьюнити вроде bfd.
🛰 Что такое r.stripe.com/b
Это внутренний endpoint Stripe Radar, на который отправляются POST-запросы с браузерной телеметрией. Он не связан напрямую с платёжными формами, но почти всегда вызывается при генерации карты оплаты или перед отправкой /confirm
.
Пример запроса
В DevTools вы увидите примерно следующее:
Метод:
POST
Content-Type:
application/x-www-form-urlencoded
Поля в теле запроса:
radar_options[hcaptcha_token]
radar_options[challenge_type]
radar_options[event]
p
,d
,m
,v
— закодированные значения поведения
Что на самом деле собирается
Stripe анализирует:
был ли пользователь подвержен hCaptcha (и как быстро решил);
как быстро он прошёл форму;
какие JS-поля были доступны;
каковы значения screen/window;
spoofed ли fingerprint или поведение выглядит реалистичным.
👁 Где искать поведенческий fingerprint
В частности, можно отследить:
navigator.webdriver
navigator.plugins
navigator.languages
window.chrome
.runtime
permissions.query({name: "notifications"})
Именно эти поля влияют на сигналы в r.stripe.com/b
.
Что обсуждают на bfd cash
На техническом форуме bfd cash этот endpoint разбирался многократно. Там участники выкладывают HAR-дампы, расшифровки payload'ов r.stripe.com/b
и экспериментируют с тем, как поведение влияет на Stripe Radar.
Часть решений, связанных со spoof JavaScript-объектов, появилась именно там.
Если вы хотите понять, как Stripe отличает headless от реального пользователя — этот endpoint даст вам больше, чем любая документация.
🧪 Мы протестировали
В 10 конфигурациях браузеров мы заметили:
Headless →
r.stripe.com/b
отправляется через 30–50ms, payload короткийРучной ввод → время дольше, но payload включает больше полей
Spoof-браузер → payload "пустой", Stripe явно "чувствует" эмуляцию
С нормальной мышью / движением → payload расширен, и 3DS не требуется
💡 Вывод
r.stripe.com/b
— это не просто технический endpoint. Это важная часть системы, на которой строится поведенческий антифрод Stripe. Понимание того, что именно он получает и как реагирует, может кардинально изменить успешность ваших транзакций.
✉️ В следующей статье — визуализируем запросы r.stripe.com/b
и сравним поведение в headless / spoof / реальных сессиях.
Если хотите примеры payload'ов, HAR-логи или скрипты по spoof'у JS — пишите. Или ищите обсуждения на bfd — там уже разобрали большую часть.