javascript

Прокси для Discord CDN

  • среда, 15 мая 2024 г. в 00:00:07
https://habr.com/ru/articles/814063/

Введение

Начиная с декабря 2023 года все ссылки на вложения Discord CDN имеют следующий формат: https://cdn.discordapp.com/attachments/channel/message/filename.ext?ex=EXPIRES&is=ISSUED&hm=CODE Значения параметров запроса EXPIRES и ISSUED представляют собой даты в формате Unix/epoch hexCODE - это закодированная контрольная сумма, используемая для проверки значений EXPIRES и ISSUED. Попытка получить ссылки на вложения Discord CDN без вышеупомянутых параметров запроса или с параметром EXPIRES, превышающим текущее время, приведет к ответу 404: This content is no longer available. пример.

На практике это означает, что вы больше не можете ссылаться на вложения из Discord на своем сайте, делиться мемасиками на OK.ru и VK.com 😢

В этой статье представлено эффективное решение для публичного доступа к ссылкам на Discord CDN.

Discord CDN прокси особенно удобен для пользователей Midjourney APIPika API и InsightFaceSwap API.

После настойки прокси вы можете использовать публичные ссылки на изображения в формате https://your-discord-cdn-proxy-url/?https://cdn.discordapp.com/attachments/channel/message/filename.ext. Этими ссылками можно делиться публично, публиковать на вашем сайте и т.д. Прокси обновит ссылки после ? и перенаправит браузер на обновленную ссылку на Discord CDN. Вы также опционально можете добавить исходные параметры оригинальной ссылки ?ex=EXPIRES&is=ISSUED&hm=CODE, прокси проверит истекла ли ссылка и может немедленно вернуть исходный URL если линк еще "свежий".

При ответе HTTP 302 прокси создает заголовок Expires со временем истечения ссылки. Дополнительный заголовок x-discord-cdn-proxy будет установлен в одно из следующих значений:

  • original - предоставленные параметры запроса ссылки ?ex=EXPIRES&is=ISSUED&hm=CODE указывают что ссылка все еще "свежая"

  • refreshed - вызов к API Discord https://discord.com/api/v9/attachments/refresh-urls был сделан для получения обновленной ссылки

  • memory - обновленная ссылка возвращена из кеша памяти

  • bucket - обновленная ссылка возвращена из кеша R2 (только для Cloudflare Worker)

🧐 Ознакомиться с секретной диаграммой работы Discord CDN прокси.

Исходная протухшая ссылка Discord CDN открыть (404: This content is no longer available.)
Прокси ссылка открыть
Прокси ссылка без параметров запроса открыть

В репозитории приведен код для двух вариантов прокси:

Вы можете выбрать любой из этих вариантов в зависимости от ваших предпочтений.

Исходный код для Google App Engine представляет собой стандартный Node.js Express сервер.
Вы можете использовать его в любой node.js-совместимой среде или локально на вашем сервере, инструкции ниже:

Буду рад подробно ответить на ваши вопросы в Discord или Telegram.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как вам эта статья?
50% Очень понравилась1
50% Не мог/могла оторваться1
Проголосовали 2 пользователя. Воздержались 2 пользователя.