mirror of
https://github.com/ProxymanApp/Proxyman.git
synced 2026-04-27 09:05:54 +03:00
[GH-ISSUE #416] Support HTTP/2 #414
Labels
No labels
Discussion
Feature request
In Progress...
Plugins
Waiting response
Windows
Windows
bug
duplicate
enhancement
feature
good first issue
iOS
macOS 10.11
question
wontfix
✅ Done
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/Proxyman#414
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @NghiaTranUIT on GitHub (Feb 26, 2020).
Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/416
Originally assigned to: @NghiaTranUIT on GitHub.
🐶 Brief
At the moment, all intercepted HTTP/HTTPS through Proxyman will be downgraded to HTTP/1.1. We should support HTTP/2 too and implement the HTTP/2 parser correctly.
👑 Criteria
Update 1 (5 Feb 2023): Beta build for HTTP/2 is ready ✅
Comment: https://github.com/ProxymanApp/Proxyman/issues/416#issuecomment-1417959460
Update 2 (14 Feb 2023): New Update
Comment: https://github.com/ProxymanApp/Proxyman/issues/416#issuecomment-1429048662
Update 3 (22 Feb 2023):
https://github.com/ProxymanApp/Proxyman/issues/416#issuecomment-1439878308
@Saklad5 commented on GitHub (Apr 13, 2020):
Any progress on this?
@NghiaTranUIT commented on GitHub (Apr 13, 2020):
@Saklad5 Sorry, but at the moment, I'm working on Protobuf feature.
When it's done, I will kick start the HTTP/2 since it's crucial to support gRPC feature too 🙌
@Saklad5 commented on GitHub (Apr 29, 2020):
Glad to see the Protobuf feature is done: it’s not something I’m interested in, but it means you might work on this soon.
Once Proxyman can run without downgrading traffic, I think I’ll purchase it. Until then, I can’t really justify running it for long periods of time, which limits its utility.
@NghiaTranUIT commented on GitHub (Apr 29, 2020):
I would like to say that HTTP/2 and HTTP/3 are must-have features of Proxyman, and the progress is really good at the moment 🙌
Protobuf, the first blocker is done, it's time for HTTP/2.
Stay tuned 🌮
@Saklad5 commented on GitHub (May 2, 2020):
HTTP/3 isn’t formally accepted yet, so I’d say that’s less of a must-have than HTTP/2. I generally don’t expect things to support draft standards, and I understand it is pretty different.
By the way, does Proxyman do any other downgrading at the moment? Besides forcing HTTP/1, does simply running it affect outgoing traffic at all?
@NghiaTranUIT commented on GitHub (May 2, 2020):
At the moment, only HTTPS domains, which enable SSL-Proxying (To see the HTTP Response Content) is downgraded to HTTP/1.
Otherwise, HTTPS (no SSL-Proxying) and HTTP are not, since it's just a proxy server, no interception. Thus, it would keep HTTP/2 or other protocols without changing it.
As there are no reliable HTTP/2 servers on macOS (Swift/Objc) yet, so it's the reason why Proxyman doesn't support HTTP/2 at the first implementation. However, Swift-NIO from Apple is fully supported recently, so I'm planning to rewrite the Proxyman Core with NIO stack.
When 1.23.0 build is out this weekend, I will push HTTP/2 forward 👍
@wasder commented on GitHub (Nov 6, 2020):
Looking forward for gRPC support.
Could be a killer feature, as nothing yet so handy support it.👍
@bbuckland commented on GitHub (Mar 15, 2021):
@NghiaTranUIT sounds like you've made a ton of progress towards this. Could you share where you're at with HTTP/2, specifically to enable gRPC?
@NghiaTranUIT commented on GitHub (Mar 16, 2021):
@bbuckland We're migrating the codebase to HTTP/2 but it hasn't finished yet. I will push it forward soon after the Multiple Filters and Diffing is done 🙌
To workaround and see the gRPC data, you might consider using Atlantis from Proxyman (https://github.com/ProxymanApp/atlantis#2-my-app-use-grpc)
@inickt commented on GitHub (Jun 30, 2021):
Would love to know if there are any updates on this, our backend microservices only talk over HTTP/2 and I would love to use Proxyman + the beta of the reverse proxy feature to improve my backend workflow.
That being said I switched over from Charles this week and it has been amazing for testing iOS things!
@NghiaTranUIT commented on GitHub (Jul 1, 2021):
Thanks for the upvote @inickt. Since the Reverse Proxy is almost done (we're going to release it in this week), so our team is working on the HTTP/2 👍
We will send a Beta build here when it's available 😄
@inickt commented on GitHub (Sep 30, 2021):
Hey, I was curious if there have been any updates on this? Still been loving the app so thanks for all of your work and the great updates!
@NghiaTranUIT commented on GitHub (Sep 30, 2021):
Hey @inickt Thanks for your shoutout.
To be honest, I tried to support HTTP/2 months ago but it doesn't work well since it's a breaking change in our codebase 😿 . The problem is not just supporting HTTP/2, it also includes HTTP/1.1 as backward compatible.
At the moment, I'm focusing on the Folder Rule (where you can organize the tool rules in folders). When it's done, I will back to HTTP/2 👍
@NicolasCombe5555 commented on GitHub (Jul 2, 2022):
Hello @NghiaTranUIT 👍🏻; could we expect http2 support any time soon or not likely to happen soon? Thanks 🤝
@NghiaTranUIT commented on GitHub (Jul 3, 2022):
Sorry @NicolasCombe5555 This ticket is implemented but it's delayed due to technical problems. Basically, in order to support HTTP/2, we have to redesign the ProxymanCore, which is primarily designed for HTTP/1.1. Hence, we decide to postpone this ticket until we found a better solution.
Can you elaborate on why you need HTTP/2? Does it important for your work? @NicolasCombe5555 🤔
@NicolasCombe5555 commented on GitHub (Jul 3, 2022):
@NghiaTranUIT Well part of my project has http/2 in our tech stack; so I cannot see that traffic when using Proxyman. But I understand if we are having issues with supporting it here; thanks for the quick response tho 👍🏻
@eseay commented on GitHub (Jul 15, 2022):
I've read this thread and understand the complexity surrounding adding HTTP/2 support, but I just wanted to more or less throw a "+1" onto this issue as someone who would like to see it supported.
In the meantime, I am just using mitmproxy to view any traffic from my application where HTTP/2 is required.
@NghiaTranUIT to give you some context about the HTTP/2 need - we're starting to use more gRPC across my teams, and since that's HTTP/2, we're not able to proxy those requests using Proxyman. In fact, having Proxyman open when those requests go out essentially breaks them. (I work on the iOS apps, and am debugging that app's traffic to our servers)
Thanks for your work on such a great tool!
@NghiaTranUIT commented on GitHub (Jul 16, 2022):
Even Proxyman can support HTTP/2 and Protobuf, but there is no guarantee that it can capture and properly decrypt the gRPC package because we don't support it yet.
To workaround, @eseay you can use Atlantis, which allows you to capture gPRC traffic 👍 https://github.com/ProxymanApp/atlantis#2-my-app-use-grpc
@eseay commented on GitHub (Jul 16, 2022):
@NghiaTranUIT well I'll clarify that the back-end is serving a gRPC hybrid called Connect, so we're actually just using
POSTrequests with normal request bodies, but those requests require HTTP/2.In either case - I am curious what I may be doing wrong in Proxyman to not be seeing HTTP/2 traffic.
When I run mitmproxy, I see that all of my requests (both gRPC-Connect and classic REST) are being conducted via HTTP/2; I see the same thing when proxying through Charles.
In Proxyman, when I go to inspect my requests, they are all showing as using HTTP/1.1. Is there something I may have configured incorrectly in Proxyman that's preventing the HTTP/2 transmissions?
@j-j-m commented on GitHub (Oct 12, 2022):
I see the same thing. Is there any way to prevent Proxyman from breaking my gRPC services in app? I have tried Atlantis with no luck.
@NghiaTranUIT commented on GitHub (Oct 13, 2022):
@j-j-m can you use this Atlantis code to capture gRPC traffic? https://github.com/ProxymanApp/atlantis#2-my-app-use-grpc
and open Tools Menu -> SSL Proxying List -> Remove the gRPC domain in the Include List. It will fix the SSL Error, and allows the Atlantis to work properly 👍
@NghiaTranUIT commented on GitHub (Feb 5, 2023):
Good news 🎉 🎉
I've supported the HTTP/2 protocol (Beta) for the Proxyman app 🎉
Beta build: https://proxyman.s3.us-east-2.amazonaws.com/beta/Proxyman_4.1.0_Support_HTTP_2.dmg
What's new
Notes
HTTP/1.1orHTTP/2. It doesn't matter since Proxyman will use the correct HTTP Protocol behind the scenes => It means, you can use your current Map Local Rule/ Breakpoint Raw Message without any problems ✅Screenshots
How to enable HTTP/2
Known issues:
If you guys find any bugs, please let me know, I'm all ears to fix it 👍
Just a friendly tag: @j-j-m @eseay @NicolasCombe5555 @inickt @bbuckland @Saklad5, @Ashraf-Ali-aa, @julasamer, @wasder, @ildar-gilfanov, @NSMyself, @heyzooi, @inickt, @nxtSwitch, @basecde, water-a
@derekmurawsky commented on GitHub (Feb 5, 2023):
Tested it out, and it looks like it works to me! I was able to request an image where, previously, the connection was downgraded to 1.1. Thank you!
@brr53 commented on GitHub (Feb 5, 2023):
Thank you. There is a bug though. HTTP2 does not have the host header. So this RAW is incorrect. HTTP2 heading should look something like this.
:method: GET
:authority: www.google.com
:scheme: https
:path: /
@NghiaTranUIT
@NghiaTranUIT commented on GitHub (Feb 6, 2023):
Thanks @brr53. It's just a UI bug. Behind the sense, Proxyman automatically translates the HTTP/1.1 Raw format into the HTTP/2 format, so it's still working.
I'm going to fix the Raw Tab for HTTP/2 now 👍
@NghiaTranUIT commented on GitHub (Feb 8, 2023):
Update HTTP/2 v2 🎉
Changelog
Known issues:
@NghiaTranUIT commented on GitHub (Feb 8, 2023):
Bug 2
A user reports that TLS/Extension for the HTTP/2 doesn't meet the standard from Google Chrome / Charles Proxy. We should fix it.
@brr53 commented on GitHub (Feb 8, 2023):
@NghiaTranUIT What you have listed aren't related to TLS by the way. I think these are HTTP2 components.
@NghiaTranUIT commented on GitHub (Feb 14, 2023):
Update HTTP/2 v4 🎉
Changelog
Known issues:
@NghiaTranUIT commented on GitHub (Feb 22, 2023):
Update HTTP/2 v5
Changelogs
Known issues:
WS doesn't work with HTTP/2
@NghiaTranUIT commented on GitHub (Feb 24, 2023):
@brr53 just wondering: Why the
akamai_fingerprintis important to you 🤔I've investigated: The reason is the difference between the SentFrame Setting.
You can check out the Section 4: Passive HTTP/2 Fingerprint — Suggested Format at https://www.blackhat.com/docs/eu-17/materials/eu-17-Shuster-Passive-Fingerprinting-Of-HTTP2-Clients-wp.pdf
@havebeenfitz commented on GitHub (Mar 2, 2023):
Hi @NghiaTranUIT, thank you for your effort! It's working great, but I found a crash when connected to VPN before Proxyman is launched and trying to intercept some gRPC traffic. Not sure if there are any logs I can give you to track down the issue.
UPD, found some:
@NghiaTranUIT commented on GitHub (Mar 21, 2023):
Update v6
@NghiaTranUIT commented on GitHub (Apr 2, 2023):
Update 6
What's next:
SentFramesetting issue@NghiaTranUIT commented on GitHub (Apr 5, 2023):
Update 7
@NghiaTranUIT commented on GitHub (Apr 15, 2023):
Update 8
@lundstrj commented on GitHub (Apr 21, 2023):
I went don't a fun rabbit hole related to why my service was falling back to http/1.1 (and breaking) and eventually landed here. Killing the proxy resolved my problem.
Any comment on if/when Proxyman will be able to allow http/3 as well?
@NghiaTranUIT commented on GitHub (Apr 22, 2023):
@lundstrj Not soon yet since the HTTP/2 is still developing (it's 80% now).
@NghiaTranUIT commented on GitHub (May 5, 2023):
Update 9:
@djtarazona commented on GitHub (Jun 11, 2023):
Any updates or ETA on HTTP/2 support @NghiaTranUIT? 🙏
@djtarazona commented on GitHub (Jul 21, 2023):
Bump @NghiaTranUIT 🙏
@NghiaTranUIT commented on GitHub (Jul 30, 2023):
@djtarazona Sorry for the late reply. It's still in BETA.
Here is the v10 Update: https://download.proxyman.io/beta/Proxyman_4.9.0_HTTP_2_v10.dmg
Changelog
@lukeadamson commented on GitHub (Oct 24, 2023):
@NghiaTranUIT Hello! Any update or ETA on HTTP/2 support? I'm still seeing connections be downgraded to HTTP/1.1 when proxied through Proxyman.
The update above indicates that it's still in beta as of Jul 30, but I can't find any mention of it after. Is there a way to access Beta builds of Proxyman?
@ekscrypto commented on GitHub (Oct 24, 2023):
Same here, please make HTTP/2 available to the public
@NghiaTranUIT commented on GitHub (Oct 30, 2023):
Update v11:
Sorry guys @ekscrypto @lukeadamson , HTTP/2 is still in Beta because there is some technical issue that I haven't found a solution yet. It doesn't satisfy my standards so I decided not to bring it to the public until all issues are resolved.
For example:
@djtarazona commented on GitHub (Oct 31, 2023):
Thanks for the context. Appreciate you holding a quality bar.
I don't need WS/WSS, so these betas have been working good for me. I'd appreciate an option to download a build with this HTTP/2 beta for each stable Proxyman release (not sure if the beta build generation is automatic). Or perhaps consider including this feature in stable releases but only opt-in from some preferences pane for beta features.
Thanks a bunch for your work @NghiaTranUIT!
@seidnerj commented on GitHub (Jan 14, 2024):
@NghiaTranUIT any chance to get an up-to-date beta with HTTP2 support? thanks in advance!
@seidnerj commented on GitHub (Jan 14, 2024):
@NghiaTranUIT I'm a bit confused by the HTTP2 support in the builds provided here - does HTTP2 support in Proxyman mean that Proxyman itself will use HTTP2 when connecting to the target server or does it mean that support HTTP2 when receiving incoming traffic, i.e. listening on localhost:9090? or both?
@NghiaTranUIT commented on GitHub (Jan 15, 2024):
@Saklad5 yes, it's. Proxyman Beta prefers using HTTP/2, and fallback to HTTP/1 if your server doesn't talk HTTP2.
@seidnerj commented on GitHub (Jan 15, 2024):
Okay, but from the client's perspective, the client connecting to proxyman that is, is the connection http2 or http1.1?
@NghiaTranUIT commented on GitHub (Jan 16, 2024):
@Saklad5 Yes, it supports both HTTP/2 and HTTP/1 too, depending on what your client would like to use what protocol for the communication.
@NghiaTranUIT commented on GitHub (Jan 29, 2024):
Update HTTP/2 (BETA) v12 🎉
@leberwurstsaft commented on GitHub (Feb 16, 2024):
Is HTTP2 support also in the 5.0 release?
@NghiaTranUIT commented on GitHub (Feb 19, 2024):
@leberwurstsaft HTTP/2 is still in Beta because the Websocket with HTTP/2 is not completed yet.
Here is the new update with Proxyman v5.0.0:
Screenshot
@shrimpwtf commented on GitHub (Jun 7, 2024):
Is this present in 5.5.0? can only find it in the above version
@NicolasCombe5555 commented on GitHub (Jun 9, 2024):
Sorry I got lost in time!
@NghiaTranUIT amazing progress! ❤️Thank you for your passion on this.
Not trying to rush it but I am just catching up, I saw in the comments you said it was 80% done some time ago, are we near close now? Will test your latest build!
@NghiaTranUIT commented on GitHub (Jun 9, 2024):
@shrimpyuk @NicolasCombe5555 Sorry, the HTTP/2 is not out of Beta yet because I could not solve some HTTP/2 issue with Websocket.
You can try this beta HTTP/2: https://download.proxyman.io/beta/Proxyman_5.5.0_Support_HTTP_2_v15.dmg
Changelog
@elijahdou commented on GitHub (Jul 1, 2024):
Is there a schedule for when http2.0 will be supported?
@NghiaTranUIT commented on GitHub (Jul 17, 2024):
HTTP/2 v16
HTTP/2 v17
@zedd3v commented on GitHub (Sep 26, 2024):
Updates ? @NghiaTranUIT
@NghiaTranUIT commented on GitHub (Sep 27, 2024):
@zedd3v it's still in Beta.
Update HTTP/2 with Proxyman 5.9.0
@heyzooi commented on GitHub (Sep 27, 2024):
any plans to support HTTP/3?
@bru02 commented on GitHub (Oct 7, 2024):
is http/2 supported when proxying over socks?
@felipe-linares commented on GitHub (Nov 22, 2024):
Any beta HTTP/2 windows builds by any chance?
@NghiaTranUIT commented on GitHub (Nov 28, 2024):
Update HTTP/2 with Proxyman 5.11.0
@tmm1 commented on GitHub (Jan 30, 2025):
What is the ETA for HTTP/2 in stable releases?
@Aslarex commented on GitHub (Jan 31, 2025):
I really need it for Windows, can you also post the supported file type for it?
@shrimpwtf commented on GitHub (Apr 10, 2025):
any update for this? had 6 or so builds since this without http/2. http/2 is important for a lot of use cases
@iliakan commented on GitHub (Apr 14, 2025):
Any newer betas?
Also, are there any issues with these betas? =)
@NghiaTranUIT commented on GitHub (May 2, 2025):
Good news. I'm working on the new HTTP/2 version. Yesterday, we had a working POC with the new solution, which was simpler and easier than we had done in the previous HTTP/2 BETA.
We will push it this and next week to push the first new HTTP/2 BETA 👍
Sorry for the inconvenience 🙇
@NghiaTranUIT commented on GitHub (May 11, 2025):
New Update HTTP/2 🎉
Changelog
:method,:authority, ...)Known issue
What's next
Screenshots
@tmm1 commented on GitHub (May 11, 2025):
Nice, happy to see renewed effort here! I did some quick tests and it works well. However, if you use BIDI stream (full-duplex/bidirectional mode) then the request is buffered and client will not receive any streaming response until request is closed.
@NghiaTranUIT commented on GitHub (May 11, 2025):
@tmm1 It still works with SSE, it streams data without waiting to complete. Tested with ChatGPT
@tmm1 commented on GitHub (May 11, 2025):
Confirmed SSE and other streaming responses (grpc) work for me.
Bi-Di would be nice to have as well.. I think right now it will buffer the entire response, which breaks i.e chat api relying on bidi grpc.
Either way, kudos and I hope this makes it to release version soon!
@dmytrobabeshko commented on GitHub (May 12, 2025):
Thanks for the great update.
Please pay attention, there might be a bug in calculating the
Time,Request Time, andDuration.Requests on the screen are performed every minute. However, the
Timefor all requests remains constant (likely the time when the connection was established), while theRequest TimeandDurationincrement monotonically every minute.@nvmnghia commented on GitHub (May 19, 2025):
Do we have a linux build?
@NghiaTranUIT commented on GitHub (Jun 22, 2025):
Update new HTTP/2 BETA for v5.22.0
@xL0b0 commented on GitHub (Aug 12, 2025):
can you please bump to latest version?
@NghiaTranUIT commented on GitHub (Aug 13, 2025):
@xL0b0 here you go: https://download.proxyman.io/beta/Proxyman_5.23.1_BETA_HTTP_2_v5.23.1_v1.dmg
Changelog
@xL0b0 commented on GitHub (Sep 25, 2025):
Can you update to the latest version please / have a thread where always is the latest HTTP2 version?
@heyzooi commented on GitHub (Sep 25, 2025):
I just created a new feature request for HTTP/3 https://github.com/ProxymanApp/Proxyman/issues/2482
@NghiaTranUIT commented on GitHub (Sep 29, 2025):
@xL0b0 @heyzooi new Beta for HTTP/2
Changelogs
@xL0b0 commented on GitHub (Sep 29, 2025):
Thanks @NghiaTranUIT
Is there ever going to be a point, when the HTTP2 will finally go into the normal production version?
@ReiiYuki commented on GitHub (Sep 30, 2025):
I'm not sure why does it on the production version since the current production version causing bottleneck on HTTP1.
@NghiaTranUIT commented on GitHub (Sep 30, 2025):
Can you elaborate on it @ReiiYuki ? If it's hard to explain, you can record the video and share with me to nghia@proxyman.com
@elijahdou commented on GitHub (Oct 16, 2025):
I was wondering When will the version supporting http2.0 be released?
@xL0b0 commented on GitHub (Oct 21, 2025):
Will this finally be merged into the 6.0.0 version?
@NghiaTranUIT commented on GitHub (Oct 31, 2025):
BETA HTTP/2.0 with Proxyman v6.0.2
@elijahdou commented on GitHub (Nov 3, 2025):
Trump has already moved into the White House for the second time, and an official version supporting HTTP/2 has still not been released.
@xL0b0 commented on GitHub (Nov 3, 2025):
FACTS
@NghiaTranUIT commented on GitHub (Dec 9, 2025):
HTTP/2 BETA
@NghiaTranUIT commented on GitHub (Dec 9, 2025):
Sorry @xL0b0 @elijahdou, Build HTTP/2 is a breaking change, so I'm reluctant to merge it into the main branch 🤕
It's better to keep HTTP/2 as a separate build.
I just added a Download button to the production build, so you can always download the HTTP/2 Beta 👍
@jhass commented on GitHub (Dec 10, 2025):
How is it a breaking change when the functionality is behind a opt-in feature flag?
@elijahdou commented on GitHub (Dec 23, 2025):
You mean to keep two separate versions forever? @NghiaTranUIT
@swftq commented on GitHub (Jan 22, 2026):
90$ for no http2 support in 2026 is crazy
@NghiaTranUIT commented on GitHub (Feb 2, 2026):
HTTP/2 BETA with Proxyman 6.5.0
@sameer4 commented on GitHub (Mar 3, 2026):
Hi @NghiaTranUIT, thanks for the update. Do you have an estimated timeline for when HTTP/2 support will move out of beta? Also, should beta builds be pointing to the main release for updates? I keep receiving update notifications that switch me back to the main version. Would it make more sense for beta builds to update only to newer beta releases until it becomes the main version?