All Projects → thekvs → Microproxy

thekvs / Microproxy

Licence: mit
Lightweight non-caching HTTP(S) proxy server

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Microproxy

Proxy.py
⚡⚡⚡Fast, Lightweight, Pluggable, TLS interception capable proxy server focused on Network monitoring, controls & Application development, testing, debugging
Stars: ✭ 1,291 (+1052.68%)
Mutual labels:  lightweight, http-proxy
Moon Api Gateway
Asynchronous API Gateway with spring boot 2.1, servlet 4.0, jetty 9 client
Stars: ✭ 104 (-7.14%)
Mutual labels:  lightweight
Core Components
Accessible and lightweight Javascript components
Stars: ✭ 85 (-24.11%)
Mutual labels:  lightweight
Nitmproxy
Proxy server based on netty
Stars: ✭ 94 (-16.07%)
Mutual labels:  http-proxy
James
Web Debugging Proxy Application
Stars: ✭ 1,299 (+1059.82%)
Mutual labels:  http-proxy
Sozu
Sōzu HTTP reverse proxy, configurable at runtime, fast and safe, built in Rust. It is awesome! Ping us on gitter to know more
Stars: ✭ 1,341 (+1097.32%)
Mutual labels:  http-proxy
Butterfly
🔥 蝴蝶--【简单】【稳定】【好用】的 Python web 框架🦋 除 Python 2.7,无其他依赖; 🦋 butterfly 是一个 RPC 风格 web 框架,同时也是微服务框架,自带消息队列通信机制实现分布式
Stars: ✭ 82 (-26.79%)
Mutual labels:  lightweight
Frp
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
Stars: ✭ 51,746 (+46101.79%)
Mutual labels:  http-proxy
Httpproxy
http代理,支持CONNECT和普通GET/POST,支持http2;可防止主动嗅探;可作为小火箭、圈、surge等软件和SwitchyOmega(chrome插件)所说的https代理
Stars: ✭ 104 (-7.14%)
Mutual labels:  http-proxy
Lwmem
Lightweight dynamic memory manager library for embedded systems with memory constraints. It implements malloc, calloc, realloc and free functions
Stars: ✭ 92 (-17.86%)
Mutual labels:  lightweight
Httptoolkit Ui
The UI of HTTP Toolkit
Stars: ✭ 91 (-18.75%)
Mutual labels:  http-proxy
Gopa Abandoned
GOPA, a spider written in Go.(NOTE: this project moved to https://github.com/infinitbyte/gopa )
Stars: ✭ 98 (-12.5%)
Mutual labels:  lightweight
Obsidian
[WIP] A C# implementation of the Minecraft server protocol. (.NET 5)
Stars: ✭ 89 (-20.54%)
Mutual labels:  lightweight
Pico
Graceful & Minimal CSS design system in pure semantic HTML
Stars: ✭ 89 (-20.54%)
Mutual labels:  lightweight
Blog
Lightweight self-hosted facebook-styled PHP blog.
Stars: ✭ 106 (-5.36%)
Mutual labels:  lightweight
Pangolin
轻量级内网穿透工具, 基于Java8,netty4.x实现,开箱即用,可转发基于TCP的应用层数据流,例如HTTP/HTTPS,SSH
Stars: ✭ 84 (-25%)
Mutual labels:  http-proxy
Dotfiles
🤘 My collection of dotfiles for tmux, vim and zsh
Stars: ✭ 94 (-16.07%)
Mutual labels:  lightweight
Httpproxy
Go HTTP proxy server library
Stars: ✭ 110 (-1.79%)
Mutual labels:  http-proxy
V2ray Core
A platform for building proxies to bypass network restrictions.
Stars: ✭ 38,782 (+34526.79%)
Mutual labels:  http-proxy
Deko3d
Homebrew low level graphics API for Nintendo Switch (Nvidia Tegra X1)
Stars: ✭ 103 (-8.04%)
Mutual labels:  lightweight

Build Status

About

microproxy is a lightweight non-caching HTTP/HTTPS proxy server.

Main features

  • Single executable with no external dependencies.
  • Single simple configuration file in TOML format.
  • Basic and Digest access authentication methods.
  • IP-based black and white access lists.
  • Ability to log all requests.
  • Ability to tweak X-Forwarded-For header.
  • Ability to specify IP address for outgoing connections.
  • Ability to forward requests to upstream proxy.
  • Reasonable memory usage.

Installing

This project is written in the Go programming language and to build it you need to install Go compiler and set some enviroment variables. Here is instructions on how to do it. After you've done it, run the following command in your shell:

$ go get github.com/thekvs/microproxy

and this will build the binary in $GOPATH/bin.

Run go build -mod=vendor for local build.

Configuration file options

microproxy uses TOML format for configuration file. Below is a list of supported configuration options.

  • listen="ip:port" -- ip address and port where to listen for incoming proxy request. Default: 127.0.0.1:3128
  • access_log="path" -- path to a file where to write requested through proxy urls.
  • activity_log="path" -- path to a file where to write debug and auxiliary information.
  • allowed_connect_ports=[port1, port2, ...] -- list of allowed port to CONNECT to. Default: [443]
  • auth_file="path" -- path to a file with users' passwords. If you use digest auth. scheme this file has to be in the format used by Apache's htdigest utility, for basic scheme it has to be in the format used by Apache's htpasswd utility with -p option, i.e. created as $ htpasswd -c -p auth.txt username.
  • auth_type="type" -- authentication scheme type. Available options are:
    • "basic" -- use Basic authentication scheme.
    • "digest" -- use Digest authentication scheme.
  • auth_realm="realmstring" -- realm name which is to be reported to the client for the proxy authentication scheme.
  • forwarded_for_header="action" -- specifies how to handle X-Forwarded-For HTTP protocol header. Available options are:
    • "on" -- set X-Forwarded-For header with client's IP address, this is a default choice.
    • "off" -- do nothing, i.e. leave headear as is.
    • "delete" -- delete X-Forwarded-For header, this turns on stealth mode.
    • "truncate" -- delete all old X-Forwarded-For headers and insert a new one with client's IP address.
  • via_header="action" -- specifies how to handle Via HTTP protocol header. Available options are:
    • "on" -- set Via header, this is a default choice.
    • "off" -- do nothing with Via header.
    • "delete" -- delete Via header.
  • via_proxy_name="name" -- this value will be used as the host name in the Via header, by default the server's host name will be used.
  • allowed_networks=["net1", ...] -- list of whitelisted networks in CIDR format.
  • disallowed_networks=["net1", ...] -- list of blacklisted networks in CIDR format.
  • bind_ip="ip" -- specify which IP will be used for outgoing connections.
  • add_headers=[["header1", value1"], ["header2", "value2"]...] -- adds specified headers to outgoing HTTP requests, this option will not work for HTTPS connections.
  • forward_proxy_url="http://user:[email protected]:port" -- specify proxy to forward requests to. Uses basic auth type for the forward proxy.

Usage

$ ./microproxy --config microproxy.toml

To enable debug mode, add -v switch. To only test configuration file correctness add -t switch, i.e. $ ./microproxy --config microproxy.toml -t

Signal handling

On USR1 signal microproxy reopens access and activity log files.

Licensing

All source code included in this distribution is covered by the MIT License found in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].