{"id":32163295,"url":"https://github.com/bjin/hprox","last_synced_at":"2026-02-10T06:04:22.391Z","repository":{"id":62436163,"uuid":"130676045","full_name":"bjin/hprox","owner":"bjin","description":"a lightweight HTTP proxy server, and more","archived":false,"fork":false,"pushed_at":"2025-01-22T13:27:48.000Z","size":137,"stargazers_count":34,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-12-08T03:46:23.765Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bjin.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-04-23T09:54:06.000Z","updated_at":"2025-10-28T18:54:23.000Z","dependencies_parsed_at":"2024-06-20T17:19:10.777Z","dependency_job_id":"9b69d4bb-cc88-46d9-bd27-28d5251dc0b2","html_url":"https://github.com/bjin/hprox","commit_stats":{"total_commits":162,"total_committers":2,"mean_commits":81.0,"dds":0.006172839506172867,"last_synced_commit":"972d74c388a3e0f5ca8be411325d2a8c3fc1d870"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/bjin/hprox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjin%2Fhprox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjin%2Fhprox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjin%2Fhprox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjin%2Fhprox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bjin","download_url":"https://codeload.github.com/bjin/hprox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjin%2Fhprox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29292054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T03:42:42.660Z","status":"ssl_error","status_checked_at":"2026-02-10T03:42:41.897Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-21T14:26:24.780Z","updated_at":"2026-02-10T06:04:22.386Z","avatar_url":"https://github.com/bjin.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## hprox\n\n[![CircleCI](https://circleci.com/gh/bjin/hprox.svg?style=shield)](https://circleci.com/gh/bjin/hprox)\n[![CirrusCI](https://api.cirrus-ci.com/github/bjin/hprox.svg)](https://cirrus-ci.com/github/bjin/hprox)\n[![Depends](https://img.shields.io/hackage-deps/v/hprox.svg)](https://packdeps.haskellers.com/feed?needle=hprox)\n[![Release](https://img.shields.io/github/release/bjin/hprox.svg)](https://github.com/bjin/hprox/releases)\n[![Hackage](https://img.shields.io/hackage/v/hprox.svg)](https://hackage.haskell.org/package/hprox)\n[![License](https://img.shields.io/github/license/bjin/hprox.svg)](https://github.com/bjin/hprox/blob/master/LICENSE)\n\n`hprox` is a lightweight HTTP/HTTPS proxy server.\n\n### Features\n\n* Basic HTTP proxy functionality.\n* [Basic](https://en.wikipedia.org/wiki/Basic_access_authentication) password authentication.\n* Enables TLS encryption, requiring a valid certificate. Supports TLS 1.3 and HTTP/2, also known as SPDY Proxy.\n* TLS SNI validation (blocks all clients with an invalid domain name).\n* Provides a PAC file for seamless client-side configuration, compatible with browsers like Chrome and Firefox.\n* Websocket redirection (compatible with [v2ray-plugin](https://github.com/shadowsocks/v2ray-plugin)).\n* Reverse proxy support (redirects requests to a fallback server).\n* DNS-over-HTTPS (DoH) support.\n* [naiveproxy](https://github.com/klzgrad/naiveproxy) compatible [padding](https://github.com/klzgrad/naiveproxy/#padding-protocol-an-informal-specification) (HTTP Connect proxy).\n* HTTP/3 (QUIC) support (`h3` protocol).\n* ACME `http-01` challenge as specified by RFC8555, see [acme.sh stateless mode](https://github.com/acmesh-official/acme.sh/wiki/Stateless-Mode).\n* Designed as a middleware, ensuring compatibility with any Haskell Web Application built using the `wai` interface.\n  Refer to [library documents](https://hackage.haskell.org/package/hprox) for details.\n\n### Installation\n\n`hprox` is designed to build and function seamlessly on all Unix-like operating systems with GHC support, as well as on Windows environments.\n\n[stack](https://docs.haskellstack.org/en/stable/README/#how-to-install) is recommended for building `hprox`.\n\n```sh\nstack setup\nstack install\n```\n\nAlternatively, you have the option to utilize the statically linked binary available in the [latest release](https://github.com/bjin/hprox/releases).\n\n### Usage\n\nUtilize `hprox --help` to view a comprehensive list of options along with detailed explanations.\n\n* To run `hprox` on port 8080 with simple password authentication (passwords will be [Argon2-hashed](https://en.wikipedia.org/wiki/Argon2) after first run):\n\n```sh\necho \"user:pass\" \u003e userpass.txt\nhprox -p 8080 -a userpass.txt\n```\n\n* To run `hprox` with TLS encryption on port 443, with a certificate for `example.com` obtained with [acme.sh](https://acme.sh/):\n\n```sh\nhprox -p 443 -s example.com:$HOME/.acme.sh/example.com/fullchain.cer:$HOME/.acme.sh/example.com/example.com.key\n```\n\nBrowsers can be configured with the PAC file URL `https://example.com/.hprox/config.pac`.\n\n* For integration with `v2ray-plugin` and a fallback page to the [Ubuntu archive](http://archive.ubuntu.com/):\n\n```sh\nv2ray-plugin -server -localPort 8080 -mode websocket -host example.com -remotePort xxxx\nhprox -p 443 -s example.com:fullchain.pem:privkey.pem --ws 127.0.0.1:8080 --rev archive.ubuntu.com:80\n```\n\nClients can establish connections using the plugin option `tls;host=example.com`.\n\n* Enable HTTP/3 (QUIC) on UDP port 8443, enable DoH support (redirect to 8.8.8.8), and add naiveproxy compatible padding:\n\n```sh\nhprox -p 443 -q 8443 -s example.com:fullchain.pem:privkey.pem -a userpass.txt --naive --doh 8.8.8.8\n```\n\nThen DoH can be accessed at `https://example.com/dns-query`.\n\n### License\n\n`hprox` is licensed under the Apache license. Refer to the `LICENSE` file for comprehensive details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjin%2Fhprox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbjin%2Fhprox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjin%2Fhprox/lists"}