Практический пример: API OpenAI
В этой статье основное внимание уделяется ключам API OpenAI, но тот же метод применим к любому ключу API, который необходимо отправить в виде обычного текста как часть запроса, либо в заголовках, либо в теле.
Введение:
За последние несколько месяцев все мы стали свидетелями множества приложений, которые используют API-интерфейсы OpenAI, чтобы попытаться имитировать функции, предлагаемые ChatGPT. Есть сотни приложений (по крайней мере, в AppStore), которые имеют свою версию ChatGPT, но есть ОДНО. БОЛЬШОЙ. ПРОБЛЕМА.
Проблема:
Руководствуясь желанием быть в числе первых на рынке (уже не так), большинство разработчиков использовали API OpenAI как есть, отправляя API-ключ в заголовке своих запросов, не заботясь о защите своих API-интерфейсов. вообще ключи.
Видишь, к чему я клоню?
Любой, у кого есть базовые знания об использовании прокси, может (и будет) получить свой ключ API за считанные секунды, и прежде чем разработчик узнает об этом, он может проснуться с сотнями/тысячами $$$, испарившимися со своих счетов.
Кто-то может подумать: «Хорошо, давайте использовать закрепление SSL, чтобы убедиться, что связь остается конфиденциальной и поддерживается целостность данных», но это не так просто, поскольку OpenAI не предлагает доступ к своим сертификатам (на момент написания этой статьи).
Хотите попробовать сами?
- Найдите ChatGPT в AppStore/PlayStore и загрузите несколько приложений.
- Настройте Proxyman/Charles или любой другой прокси на телефоне и ноутбуке.
- Ищите запросы с таргетингом на https://api.openai.com
- Проверьте заголовки на что-то вроде:
'Authorization': `Bearer ${apiKey}`
Поздравляю! Теперь у вас есть доступ к рабочему ключу API, и вы можете использовать его по своему усмотрению*.
*Шучу. Пожалуйста, не используйте ключи API других людей без их разрешения, даже если они были настолько невежественны, что представили их в виде обычного текста.
Это всего лишь простой пример того, как легко получить доступ к этим ключам API. Быстрый запуск — не всегда лучший способ, поэтому давайте посмотрим, как мы можем выполнять те же запросы, но без раскрытия ключей API.