English | Português
A robust and configurable HTTP proxy server developed in TypeScript, featuring authentication, host access control, and logging. Ideal for scenarios such as Discord bots, data scraping, and traffic control.
- 🔐 Basic authentication via
config.toml
- 🌐 Host access control
- 📄 Logging with Winston
- ⚙️ All configuration is loaded exclusively from
config.toml
- 🧪 Modular and extensible structure
Note:
All configuration is centralized in theconfig.toml
file and loaded through thesrc/config/
module. No environment variables or other config files are used.
-
Clone the repository:
git clone https://github.com/HCDevWorks/http-proxy.git cd http-proxy
-
Install the dependencies:
pnpm install
-
Configure the
config.toml
file (seeconfig.example.toml
for an example):[server] port = 8888 [logging] enableLogs = true enableErrorLogs = false [auth] username = "your_username" password = "your_password" [allowed_hosts] hosts = ["google.com", "youtube.com"] # Or to allow all hosts: # hosts = "*"
Note:
To allow connections from any host, sethosts = "*"
in[allowed_hosts]
.
To restrict, use a list of domains, likehosts = ["google.com", "youtube.com"]
.
Start the proxy server with:
pnpm build # build the server pnpm start # start the server
The server will listen on the port defined in config.toml
(default: 8888).
See how to create a systemd service to run the proxy automatically on Linux in docs/LINUX-SERVICE.md
.
http-proxy/ ├── src/ │ ├── config/ │ │ ├── index.ts # Loads and exports the validated config object │ │ ├── loader.ts # Loads and parses config.toml, validates with Zod │ │ └── schema.ts # Zod schema and types for config │ ├── core/ │ │ ├── logger.ts # Winston logger configuration │ │ └── server.ts # Main proxy server logic │ └── index.ts # Entry point ├── tests/ │ ├── testProxy.ts │ └── testProxyBenchmark.ts ├── config.toml ├── config.example.toml ├── logs/ │ └── proxy.log ├── package.json ├── pnpm-lock.yaml ├── tsconfig.json └── docs/ ├── LINUX-SERVICE.md └── pt-br/ ├── LINUX-SERVICE.md └── README.md
Contributions are welcome! Please read our Code of Conduct and Contributing Guidelines before opening issues or pull requests.
We also provide templates to help you:
This project is licensed under the MIT License.