Авторизация через прокси

July 6, 2025

Недавно у нас на работе завезли локальную LLM’ку с китайскими премудростями. Среди прочих возможностей там есть RAG’и. Для тех, кто ещё не преисполнился: RAG — retrieval augmented generation, то есть такая фигня, где LLM’ка не просто гонит шизу, а делает это, используя переданный ей большой кусок контекста. То есть если вы ей скормили, например, wiki по aichat (🌚), то она будет не просто фантазировать, а искать ответы в этом контексте.

Перспективы потрясающие, поэтому я решил тут же скормить электронному болвану документацию из нашего Confluence Data Center. Но меня ждало разочарование: даже через VPN наша конфлюха требует авторизации — нельзя даже читать.

Я уже писал, что преисполнился ненависти и знаний относительно Confluence. И вот пришло время употребить их на благо человечества (озонечества) и научить aichat высасывать конфлюху с авторизацией.

Для этого понадобилось:

  1. Один aichat
  2. Один mitmproxy
  3. Один питонячий скрипт на 3 строки
  4. Один вечер

Теперь рассказываю, как сделать авторизацию по хедеру, когда приложенька (в моём случае aichat) не может в авторизацию. Вдруг кому пригодится.

  1. Ставим mitmproxy. Знаете про атаку man-in-the-middle? Вот это оно. Эта штука будет перехватывать запросы и модифицировать их. Почувствуй себя hackerman’ом.
  2. Ставим сертификат, чтобы нормально работал HTTPS в mitmproxy. Мне пришлось заводить Firefox через проксю, потому что хром не смог нормально открыть.
  3. Пилим вот такой (подобный) питонячий скрипт под названием, например, add_authorization_header.py:
def request(flow):
   if flow.request.pretty_host == 'confluence.mydomain.ru':  # меняй урлу на нужную тебе
       flow.request.headers['Authorization'] = 'Bearer <token>'  # меняй метод авторизации
  1. Запускаем mitmproxy: mitmproxy -s add_authorization_header.py

Теперь просто проксируем запросы через http://127.0.0.1:8080 — и вы великолепны!