Извините, что сообщаю, что не существует абсолютно никакого неразрывного способа ограничить доступ к вашему API только с определенного клиента.В конце концов, ваш клиент Javascript отправляет HTTP-запросы к API, и эти запросы можно легко перехватывать, изучать и создавать заново в инструменте тестирования (или даже непосредственно в Chrome!) Или в другом пользовательском клиенте.
A JavascriptКлиент, работающий полностью под контролем пользователей, также может быть им изменен.Сокращение и запутывание могут сделать это труднее, но это не остановит кого-либо достаточно мотивированным.
По существу, забудьте о любом решении, касающемся только клиента, потому что оно не является доверенным.
Тогда это оставляеттолько на стороне сервера.Идеи, которые вы уже высказали, могут помочь, но первый вопрос (чей ответ вы не предоставили): от каких конкретных рисков мы пытаемся защитить?
Если это перегрузка серверанапример, регулирование в основном решает эту проблему, и вам не нужно заботиться о том, действительно ли ваш собственный клиент выполняет запросы.Если это что-то другое, возможно, есть другие решения, но эта информация имеет решающее значение для поиска правильного решения.
Приложение
Если вы не уверены, что пытаться контролировать клиента бессмысленно,Взгляните на этот проект, который существует исключительно для очистки веб-сайтов и / или предоставления различных (более мощных) API-интерфейсов для их использования: https://weboob.org/
Если вы так обеспокоены тем, что API-интерфейс будет злоупотреблять, вот2 (плохих) метода смягчения:
- Не предоставляйте API!Визуализируйте HTML-код только на сервере.
- Меняйте API каждый день или около того и выдвигайте новый клиент Javascript для его обработки.
Однако ни один из них не препятствует очистке веб-сайта отокончательный вариант DOM, если вы не готовы постоянно изменять его структуру.