Skip to content

About

Reverse proxy server for vibehacking using LLM

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

glocal

Go License

🇬🇧 English · 🇷🇺 Русская версия

Turn a global website into a local one. A single-binary reverse proxy (Go, zero dependencies) that serves a remote site from your machine — minting a TLS certificate per hostname on the fly, rewriting it to look native, and optionally chaining everything through BurpSuite. With multi-host mode even cross-host SSO/OAuth flows stay local.

Built for offensive-security work and local web testing.

browser ──TLS──▶ glocal (localhost) ──▶ [BurpSuite] ──▶ real site(s)
                 ▲ mints a cert per SNI   ▲ optional intercept
                 │ from its own CA

Features

  • Reverse-proxy any site — -target https://example.com, browse it at https://localhost:8443.
  • On-the-fly TLS — own CA, a leaf certificate minted and cached per SNI hostname.
  • Multi-host — -domain + -local-base proxy several upstream hosts so SSO/OAuth flows never leave localhost.
  • Bidirectional rewriting — body, redirects, cookies and Origin/Referer rewritten both ways.
  • BurpSuite integration — -burp routes all upstream traffic through Burp.
  • Header control, HSTS/CSP/CORS, JS injection, full request/response dumps.
  • WebSocket & streaming pass through transparently.

Install

Prebuilt binary

Download the archive for your platform (Linux amd64/arm64, macOS, Windows) from the Releases page, extract it, and put the binary on your PATH:

tar -xzf glocal_vX.Y.Z_linux_amd64.tar.gz
sudo install -m 0755 glocal_vX.Y.Z_linux_amd64/glocal /usr/local/bin/glocal

From source

Requires Go 1.25.11+.

git clone https://github.com/Mikkkin/reverse-proxy-vibehacking
cd reverse-proxy-vibehacking
go build -o glocal ./src

Cross-compile:

GOOS=linux GOARCH=amd64 go build -o glocal-linux-amd64 ./src   # AMD64
GOOS=linux GOARCH=arm64 go build -o glocal-linux-arm64 ./src   # ARM

Quick start

# 1. Create the CA and trust it once (needed for local HTTPS).
glocal ca install

# 2. Serve example.com locally over HTTPS on port 8443, fully localised.
glocal -target https://example.com -port 8443 -rewrite

# 3. Open https://localhost:8443 in your browser.

Plain HTTP target, no TLS:

glocal -target http://neverssl.com -http -port 8080   # browse http://localhost:8080

Multi-host mode

A site's flow often spans several hosts — e.g. an app on job.example.com that logs in through an identity provider on auth.example.com. List every host so the whole flow stays local instead of bouncing you onto the real provider:

glocal -target https://job.example.com/login \
       -domain auth.example.com \
       -local-base 127.0.0.1.sslip.io \
       -port 8443 -rewrite
# open https://127.0.0.1.sslip.io:8443/login
Flag Meaning
-target The main upstream. Mapped to -local-base.
-domain <host> Additional upstream to proxy (repeatable). Mapped to <host-with-dashes>.<local-base>.
-local-base <host> Shared local suffix. Must resolve to 127.0.0.1, including subdomains.

Use a wildcard-DNS base like 127.0.0.1.sslip.io (anything.127.0.0.1.sslip.io → 127.0.0.1) so subdomains work with no /etc/hosts editing. A bare IP is rejected. Every host in the flow must be listed with -domain; an unmapped host is fetched directly and escapes the local copy.

Trusting the CA

glocal ca install detects your OS and installs the CA (asks for sudo/admin): security add-trusted-cert on macOS, update-ca-certificates/update-ca-trust on Linux. Other helpers:

glocal ca path     # print the CA certificate path
glocal ca print    # print the CA certificate (PEM)
glocal ca generate # create the CA without installing it

Firefox / Chrome on Linux keep their own NSS trust store — import the CA via the browser's certificate settings if a site still warns.

Working with BurpSuite

-burp routes the upstream leg (glocal → real sites) through Burp:

# Burp listening on 127.0.0.1:8080, then:
glocal -target https://example.com -burp -rewrite

It auto-forces HTTP/1.1 and -insecure (Burp re-signs upstream TLS). Keep verification on by passing Burp's CA, or change the port:

glocal -target https://example.com -burp -upstream-ca ~/burp-ca.pem
glocal -target https://example.com -burp -burp-addr 127.0.0.1:8081

Check it: the banner shows upstream : via proxy http://127.0.0.1:8080, and the requests appear in Burp's Proxy → HTTP history.

Options

Run glocal help for the full reference.

Group Flags
Target & listener -target -listen -port -tls -http -local-host
Multi-host -domain -local-base
TLS / certs -cert-dir -cert -key
Burp / upstream -burp -burp-addr -upstream-proxy -upstream-ca -insecure/-k -http2
Localisation -rewrite -strip-csp -keep-hsts -inject -cors
Headers -header -response-header -host -user-agent
Behaviour / logs -timeout -verbose/-V -silent -log-file -dump
CA subcommands glocal ca generate|install|path|print

Troubleshooting

  • Certificate warning → glocal ca install and restart the browser.
  • 502 upstream request failed → the upstream (or Burp, with -burp) is unreachable.
  • Bounced to the real site during login → add the other host with -domain (see Multi-host mode).
  • -local-base ... is a bare IP → use 127.0.0.1.sslip.io or localhost.
  • Page half-broken after -rewrite → try without it, or add -strip-csp. Brotli bodies pass through unmodified.

License

MIT.


glocal — русская версия

⬆ English

Превращает глобальный сайт в локальный. Реверс-прокси в одном бинарнике (Go, без зависимостей): отдаёт удалённый сайт с твоей машины, выпускает TLS- сертификат под каждый хост на лету, переписывает его «под локальный» и при желании гонит весь трафик через BurpSuite. С multi-host режимом даже межхостовый SSO/OAuth остаётся локальным.

Сделан для offensive-security и локального веб-тестирования.

браузер ──TLS──▶ glocal (localhost) ──▶ [BurpSuite] ──▶ реальные сайты
                 ▲ cert под каждый SNI    ▲ опциональный перехват
                 │ из своего CA

Возможности

  • Реверс-прокси любого сайта — -target https://example.com, открываешь на https://localhost:8443.
  • TLS на лету — свой CA, leaf-сертификат минтится и кэшируется под каждый SNI.
  • Multi-host — -domain + -local-base проксируют несколько хостов, чтобы SSO/OAuth не уходил с localhost.
  • Двустороннее переписывание — тело, редиректы, cookie и Origin/Referer правятся в обе стороны.
  • Интеграция с Burp — -burp гонит весь upstream-трафик через Burp.
  • Контроль заголовков, HSTS/CSP/CORS, инъекция JS, дамп запросов/ответов.
  • WebSocket и стриминг проходят насквозь.

Установка

Готовый бинарь

Скачай архив под свою платформу (Linux amd64/arm64, macOS, Windows) со страницы Releases, распакуй и положи бинарь в PATH:

tar -xzf glocal_vX.Y.Z_linux_amd64.tar.gz
sudo install -m 0755 glocal_vX.Y.Z_linux_amd64/glocal /usr/local/bin/glocal

Из исходников

Нужен Go 1.25.11+.

git clone https://github.com/Mikkkin/reverse-proxy-vibehacking
cd reverse-proxy-vibehacking
go build -o glocal ./src

Кросс-компиляция:

GOOS=linux GOARCH=amd64 go build -o glocal-linux-amd64 ./src   # AMD64
GOOS=linux GOARCH=arm64 go build -o glocal-linux-arm64 ./src   # ARM

Быстрый старт

# 1. Создать CA и один раз ему довериться (нужно для локального HTTPS).
glocal ca install

# 2. Отдавать example.com локально по HTTPS на 8443, с полной локализацией.
glocal -target https://example.com -port 8443 -rewrite

# 3. Открыть https://localhost:8443 в браузере.

Цель по обычному HTTP, без TLS:

glocal -target http://neverssl.com -http -port 8080   # открываешь http://localhost:8080

Multi-host режим

Поток сайта часто размазан по нескольким хостам — например, приложение на job.example.com, которое логинится через провайдера на auth.example.com. Перечисли все хосты, чтобы поток остался локальным, а не выкидывал на реального провайдера:

glocal -target https://job.example.com/login \
       -domain auth.example.com \
       -local-base 127.0.0.1.sslip.io \
       -port 8443 -rewrite
# открой https://127.0.0.1.sslip.io:8443/login
Флаг Смысл
-target Главный апстрим. Маппится на -local-base.
-domain <host> Дополнительный апстрим (повторяемый). Маппится на <хост-через-дефисы>.<local-base>.
-local-base <host> Общий локальный суффикс. Должен резолвиться в 127.0.0.1, включая поддомены.

Используй wildcard-DNS базу вроде 127.0.0.1.sslip.io (что-угодно.127.0.0.1.sslip.io → 127.0.0.1) — поддомены работают без правки /etc/hosts. Голый IP отклоняется. Каждый хост потока надо указать через -domain; незамапленный хост браузер дёргает напрямую — и он утекает из локальной копии.

Доверие к CA

glocal ca install определяет ОС и ставит CA (спросит sudo/админ): security add-trusted-cert на macOS, update-ca-certificates/update-ca-trust на Linux. Прочие команды:

glocal ca path     # путь к сертификату CA
glocal ca print    # сертификат CA (PEM)
glocal ca generate # создать CA без установки

Firefox / Chrome на Linux держат своё NSS-хранилище — импортируй CA через настройки сертификатов браузера, если сайт всё ещё ругается.

Работа с BurpSuite

-burp пропускает upstream-плечо (glocal → реальные сайты) через Burp:

# Burp на 127.0.0.1:8080, затем:
glocal -target https://example.com -burp -rewrite

Автоматически форсит HTTP/1.1 и -insecure (Burp пере-подписывает upstream-TLS). Чтобы оставить проверку — передай CA от Burp, либо смени порт:

glocal -target https://example.com -burp -upstream-ca ~/burp-ca.pem
glocal -target https://example.com -burp -burp-addr 127.0.0.1:8081

Проверка: в баннере — upstream : via proxy http://127.0.0.1:8080, а запросы появляются в Burp Proxy → HTTP history.

Опции

Полный справочник — glocal help.

Группа Флаги
Цель и слушатель -target -listen -port -tls -http -local-host
Multi-host -domain -local-base
TLS / сертификаты -cert-dir -cert -key
Burp / апстрим -burp -burp-addr -upstream-proxy -upstream-ca -insecure/-k -http2
Локализация -rewrite -strip-csp -keep-hsts -inject -cors
Заголовки -header -response-header -host -user-agent
Поведение / логи -timeout -verbose/-V -silent -log-file -dump
Подкоманды CA glocal ca generate|install|path|print

Решение проблем

  • Предупреждение о сертификате → glocal ca install и перезапусти браузер.
  • 502 upstream request failed → апстрим (или Burp при -burp) недоступен.
  • После входа выкидывает на реальный сайт → добавь другой хост через -domain (см. Multi-host режим).
  • -local-base ... is a bare IP → используй 127.0.0.1.sslip.io или localhost.
  • Страница частично сломана после -rewrite → попробуй без него или добавь -strip-csp. Тела в brotli проходят без изменений.

Лицензия

MIT.

About

Reverse proxy server for vibehacking using LLM

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages