Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Frp | 65,427 | 9 | 11 days ago | 78 | July 10, 2022 | 108 | apache-2.0 | Go | ||
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. | ||||||||||
Mitmproxy | 30,541 | 423 | 43 | 2 days ago | 53 | June 28, 2022 | 261 | mit | Python | |
An interactive TLS-capable intercepting HTTP proxy for penetration testers and software developers. | ||||||||||
Grpc Gateway | 15,190 | 4,659 | a day ago | 385 | August 06, 2022 | 113 | bsd-3-clause | Go | ||
gRPC to JSON proxy generator following the gRPC HTTP spec | ||||||||||
Goproxy | 13,510 | 23 days ago | 17 | April 09, 2021 | 110 | gpl-3.0 | Go | |||
🔥 Proxy is a high performance HTTP(S) proxies, SOCKS5 proxies,WEBSOCKET, TCP, UDP proxy server implemented by golang. Now, it supports chain-style proxies,nat forwarding in different lan,TCP/UDP port forwarding, SSH forwarding.Proxy是golang实现的高性能http,https,websocket,tcp,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,黑白名单,限速,限流量,限连接数,跨平台,KCP支持,认证API。 | ||||||||||
Node Http Proxy | 13,281 | 398,065 | 2,932 | 5 days ago | 103 | May 17, 2020 | 577 | other | JavaScript | |
A full-featured http proxy for node.js | ||||||||||
Whistle | 11,985 | 11 | 17 | 3 days ago | 539 | September 13, 2022 | 27 | mit | JavaScript | |
HTTP, HTTP2, HTTPS, Websocket debugging proxy | ||||||||||
Http Proxy Middleware | 9,802 | 359,536 | 6,528 | 7 days ago | 78 | April 22, 2022 | 87 | mit | TypeScript | |
:zap: The one-liner node.js http-proxy middleware for connect, express, next.js and more | ||||||||||
Proxychains Ng | 8,570 | 9 days ago | 119 | gpl-2.0 | C | |||||
proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project. the sf.net page is currently not updated, use releases from github release page instead. | ||||||||||
Cow | 8,204 | 2 years ago | June 19, 2016 | 240 | bsd-2-clause | Go | ||||
HTTP proxy written in Go. COW can automatically identify blocked sites and use parent proxies to access. | ||||||||||
Anyproxy | 7,193 | 73 | 131 | a year ago | 176 | June 18, 2020 | 241 | apache-2.0 | JavaScript | |
A fully configurable http/https proxy in NodeJS |
Hades is an experimental HATEOAS-based HTTP/2 reverse proxy for JSON API backends.
The JSON API specification makes ample use of links
objects in its
specification. These links objects contain URLs which enable a client to easily
and automatically traverse documents to fetch subsequent pages, relationship
data and related resources.
With the ever increasing deployment of HTTP/2, these HATEOAS links become much more relevant, especially when they can be pushed to the client before the client even requests them.
Hades is an intelligent reverse proxy that can be deployed in front of any JSON API server.
Clients that are HTTP/2 capable can then send an X-Push-Please
request header
to your application. The values of this header should be comprised of JSONPath selectors
which target links in the expected response document. Hades will identify these
links and proactively push the linked resources to the client.
Clients that are not HTTP/2 capable can also send these headers, Hades will simply not push the responses. Future versions of Hades might make further optimizations (like using the request to warm a server-side application cache).
Take a JSON API server with issue
, comment
and user
resource types as an
example.
A client would like to list the 10 most recent issues and embed user avatars for every participant in the issue.
In JSON API terms, the data model is structured such that:
issue -> comment -> user -> avatar
Traditionally, one might use the include
query parameter to receive a compound
document response. The compound document would embed the chain of resources in a
single response. However, in this scenario, issues do not support includes on
comments. They would be far too numerous—if 10 issues each have 100 comments,
the compound document would have 1000 resources!
This means that a client will first need to:
related
or relationship
routes for each issueThis chain of requests is often called the "waterfall." Each step needs to be completed before the next step can proceed because the client can't know which resources to fetch in advance.
In other words, the client can't know which users to fetch if it doesn't know which comments are on an issue... and the client can't know which comments to fetch without first fetching the issues.
Hades solves this problem. By specifying the following request, a client can inform the Hades proxy which resources it's going to fetch and Hades can then proactively push those resources to the client.
GET /api/issues?sort=-created&page[limit]=10
X-Push-Please: $.data[*].relationships.comments.links.related
X-Push-Please: $.data[*].relationships.author.links.related
X-Push-Please: $.data.attributes.avatar.url
Multiple headers are permitted by HTTP/2. Alternatively, values may be
concatenated with ;
Hades can use this information to identify the links in the response document
that the client will eventually require. Future versions will permit response
IDs in the X-Push-Please
header so that link paths can target only specific
responses.
Apart from the client-sent header, client applications need not be adapted in any way. When the client recieves the initial response document, it should still request the subsequent documents just as it would under HTTP/1.1.
However, because those request responses will have already been pushed, they will already be in a local cache or on the way! That means all responses will appear to have been received as if the client sent all the requests at the same time.
Hades eliminates the waterfall.
🔥