http_proxy
Version, currently 0.15.131 versions
- 0.15.1latestMay 28, 2026
- 0.15.0not indexedJul 26, 2026
- 0.14.0not indexedJul 26, 2026
- 0.13.1not indexedJul 26, 2026
- 0.13.0not indexedJul 26, 2026
- 0.12.1not indexedJul 26, 2026
- 0.12.0not indexedJul 26, 2026
- 0.11.0not indexedJul 26, 2026
- 0.10.3not indexedJul 26, 2026
- 0.10.2not indexedJul 26, 2026
- 0.10.1not indexedJul 26, 2026
- 0.10.0not indexedJul 26, 2026
- 0.9.0not indexedJul 26, 2026
- 0.8.1not indexedJul 26, 2026
- 0.8.0not indexedJul 26, 2026
- 0.7.3not indexedJul 26, 2026
- 0.7.2not indexedJul 26, 2026
- 0.7.1not indexedJul 26, 2026
- 0.7.0not indexedJul 26, 2026
- 0.6.0not indexedJul 26, 2026
- 0.5.0not indexedJul 26, 2026
- 0.4.0not indexedJul 26, 2026
- 0.3.6not indexedJul 26, 2026
- 0.3.5not indexedJul 26, 2026
- 0.3.4not indexedJul 26, 2026
- 0.3.3not indexedJul 26, 2026
- 0.3.2not indexedJul 26, 2026
- 0.3.1not indexedJul 26, 2026
- 0.3.0not indexedJul 26, 2026
- 0.2.2not indexedJul 26, 2026
- 0.2.1not indexedJul 26, 2026
github.com/mamantoha/http_proxy
A HTTP Proxy server and client written in Crystal
46 stars
5 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
http_proxy:
github: mamantoha/http_proxy
version: ~> 0.15.1Then run:
shards installshard.yml
- Crystal
>= 1.14.0- License
- MIT
- Authors
- Theo Li <bbtfrr@gmail.com>, Anton Maminov <anton.maminov@gmail.com>
Dependencies
Development Dependencies
- webmock*github: manastech/webmock.cr, branch: masterdev
README
# HTTP::Proxy

[](https://github.com/mamantoha/http_proxy/releases)
[](https://github.com/mamantoha/http_proxy/blob/master/LICENSE)
A HTTP Proxy server and client written in Crystal
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
http_proxy:
github: mamantoha/http_proxy
```
## Usage
### Server
```crystal
require "http_proxy"
host = "127.0.0.1"
port = 8080
server = HTTP::Proxy::Server.new
address = server.bind_tcp(host, port)
puts "Listening on http://#{address}"
server.listen
```
```crystal
require "http_proxy"
require "option_parser"
host = "192.168.0.1"
port = 3128
OptionParser.parse! do |opts|
opts.on("-h HOST", "--host HOST", "define host to run server") do |opt|
host = opt
end
opts.on("-p PORT", "--port PORT", "define port to run server") do |opt|
port = opt.to_i
end
end
server = HTTP::Proxy::Server.new(handlers: [
HTTP::LogHandler.new,
]) do |context|
context.perform
end
address = server.bind_tcp(host, port)
puts "Listening on http://#{address}"
server.listen
```
#### Basic Authentication
```crystal
server = HTTP::Proxy::Server.new(handlers: [
HTTP::LogHandler.new,
HTTP::Proxy::Server::BasicAuthHandler.new("user", "passwd"),
]) do |context|
context.request.headers.add("X-Forwarded-For", "127.0.0.1")
context.perform
end
```
### Client
#### Make request with proxy
```crystal
require "http_proxy"
proxy_client = HTTP::Proxy::Client.new("127.0.0.1", 8080)
uri = URI.parse("http://httpbingo.org")
client = HTTP::Client.new(uri)
client.proxy = proxy_client
response = client.get("/get")
```
#### Client Authentication
```crystal
uri = URI.parse("https://httpbingo.org")
proxy_client = HTTP::Proxy::Client.new("127.0.0.1", 8080, username: "user", password: "passwd")
response = HTTP::Client.new(uri) do |client|
client.proxy = proxy_client
client.get("/get")
end
puts response.status_code
puts response.body
```
## Development
### Proxy server
* [x] Basic HTTP Proxy: GET, POST, PUT, DELETE support
* [x] Basic HTTP Proxy: OPTIONS support
* [x] HTTPS Proxy: CONNECT support
* [x] Make context.request & context.response writable
* [x] Basic Authentication
* [ ] MITM HTTPS Proxy
### Proxy client
* [x] Basic HTTP Proxy: GET, POST, PUT, DELETE support
* [x] Basic HTTP Proxy: OPTIONS support
* [x] HTTPS Proxy: CONNECT support
* [x] Basic Authentication
## Contributing
1. Fork it (<https://github.com/mamantoha/http_proxy/fork>)
2. Create your feature branch (git checkout -b my-new-feature)
3. Commit your changes (git commit -am 'Add some feature')
4. Push to the branch (git push origin my-new-feature)
5. Create a new Pull Request
## Contributors
* [bbtfr](https://github.com/bbtfr) Theo Li - creator, maintainer
* [mamantoha](https://github.com/mamantoha) Anton Maminov - maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.15.1- Tagged
- May 28, 2026
- Commit
017f84f1f4c3- Crystal
>= 1.14.0- Indexed
- yes
Dependents
Repository
github.com/mamantoha/http_proxy
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 31