https://github.com/bin-umar/http-proxy
HTTP/HTTPS-proxy in Node.js
https://github.com/bin-umar/http-proxy
Last synced: about 1 year ago
JSON representation
HTTP/HTTPS-proxy in Node.js
- Host: GitHub
- URL: https://github.com/bin-umar/http-proxy
- Owner: bin-umar
- Created: 2019-09-26T16:34:16.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-23T19:05:05.000Z (over 2 years ago)
- Last Synced: 2025-01-11T11:46:27.833Z (about 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 262 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# HTTP/HTTPS-proxy по курсу [Безопастность интернет-приложений](https://park.mail.ru/blog/view/7/) в образовательном проекте [Технопарк](https://park.mail.ru) (3 семестр)
## Задание:
Нужно написать http прокси-сервер, через который можно будет отправлять трафик из браузера. Необходимо сохранять запросы в произвольном хранилище (БД, текстовые файлы и тп) и иметь возможность заново отправлять сохраненные запросы (примерно как history burp proxy и burp repeater)
Нужно поддержать:
1. Проксирование HTTP запросов (Соединение устанавливается подобным образом https://en.wikipedia.org/wiki/Proxy_server#Web_proxy_servers) - 3 балла
2. Проксирование HTTPS запросов (Необходимо создать свой корневой сертификат, на лету при обработке sni https://en.wikipedia.org/wiki/Server_Name_Indication генерировать сертификаты для запрашиваемого домена https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309, само соединение с прокси устанавливается с помощью метода connect https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_method ) - 3 балла
3. Возможность отправки сохраненных запросов (как burp repeater) - 4 балла
Реализацию можно делать на любом языке программирования. Можно использовать встроенны или сторонние библиотеки для работы с сетью, парсинга http, tls. Нельзя использовать библиотеки, которые уже реализовали http proxy (например, https://mitmproxy.org/)
### Задание было выполнено с использованием ***Node.js*** и ***sqlite3***
### Как запустить
- **git clone**
- **npm i && npm start** (Если у вас уже установлен Node.js && npm)
- Сервер запускаеться на порт 9000
### Запустить reapeter
node app.js -rr={{Integer}}
**-rr** нужео передать Id запроса внутри Бд которого надо повторить, если ничего не передано повторяются все запросы
(результат выведиться в консоль)
### Выполнил: [Джахонгир Тулфоров](https://github.com/bin-umar)