mirror of
https://github.com/ProxymanApp/Proxyman.git
synced 2026-04-26 08:35:53 +03:00
[GH-ISSUE #1555] Support HTTP/3 #1547
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#1547
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 @colinhumber on GitHub (Feb 22, 2023).
Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/1555
Originally assigned to: @NghiaTranUIT on GitHub.
Description
Support HTTP/3 (QUIC)
Why this feature/change is important?
Our web server uses HTTP/3 for our API and currently we're unable to use Proxyman to observe network requests.
@NghiaTranUIT commented on GitHub (Feb 23, 2023):
Thanks for the request @colinhumber. When the HTTP/2 is ready (Almost done), I will push up the HTTP/3 👍
@NghiaTranUIT commented on GitHub (Feb 23, 2023):
Just wondering: Do you Server support HTTP/2 or HTTP/1 during the SSL Negotiation 🤔
Or your server always speaks HTTP/3.
@colinhumber commented on GitHub (Feb 23, 2023):
I'll be honest, I'm not entirely sure 😅 When making requests to our site using Chrome, the protocol listed for the requests are
h2but the responses include an `alt-svc: h3=":443", h3-29=":443".@NghiaTranUIT commented on GitHub (Feb 24, 2023):
If you're able to load your website with Proxyman, I believe your website and Proxyman (HTTP/2 Beta) are working fine by using the HTTP/2. It's good 😄
It negociates down to H2 during the SSL Negotiation.
alt-svc: h3=":443", h3-29=":443".means they're using HTTP/2, so the server advertise there's alternative servers 👍@colinhumber commented on GitHub (Feb 24, 2023):
I should have mentioned we aren't able to view traffic from our iOS apps. I've ensured all the certs are loaded, etc and traffic to our main API doesn't appear in Proxyman, but other traffic does. Is there anything I might be missing?
@NghiaTranUIT commented on GitHub (Feb 24, 2023):
If you can see other HTTPS traffic, it means your setup is correct.
The problem is from your APIs. There are many reasons that can cause the problem:
Can you elaborate on what your traffic is?
@colinhumber commented on GitHub (Feb 24, 2023):
We're using a normal URLSession setup with URLSessionDataTask
We're not using either of these in the main parts of the app
Our networking stack is in-house but nothing out of the ordinary, from what I can tell. Anything here we should keep an eye out for that might be causing issues?
All traffic is hitting HTTPS endpoints
The app is a normal UIKit/SwiftUI app.
One thing I just noticed was accessing our web app through Mobile Safari captures the API traffic, so it does seem like it's something with the app. Is there anything offhand you can think of from a configuration perspective that might be causing issues?
@colinhumber commented on GitHub (Feb 24, 2023):
I just tried accessing one of our endpoints in a test app just to rule out any specific configuration issues with our networking stack and the request was not logged 😞
@NghiaTranUIT commented on GitHub (Feb 24, 2023):
Do you use physical device with iOS 16 or iOS Simulator 🤔
If you can log your API traffic from the Mobile Safari, it means there is something odd with the app. Or the Simulator.
@NghiaTranUIT commented on GitHub (Feb 24, 2023):
To workaround, you can use the Atlantis framework: https://github.com/ProxymanApp/atlantis
It performs the Method Swizelling on all URLSession APIs, so you 100% can see the traffic.
One drawback of the Atlantis is that it's only for Inspector. Map Local or Breakpoint doesn't work.
@colinhumber commented on GitHub (Feb 24, 2023):
Ok, so this is really odd...
I was trying to capture traffic on the simulator with no luck. I installed the app on a physical device and setup the certificate and everything. The physical device successfully captured the traffic. Then I reset the simulator to make sure everything was green and now traffic is being captured on the simulator 😅
@NghiaTranUIT commented on GitHub (Feb 24, 2023):
@colinhumber if you don't mind, let;s try this build: https://download.proxyman.io/beta/Proxyman_4.3.1_Add_some_traffic_log.dmg
I added some production logs, which you can enable in the Help Menu -> Advanced -> Enable Debug Mode.
Then, quit the app, and re-open it via the terminal
/Applications/Proxyman.app/Contents/MacOS/ProxymanIt would log all traffic that goes through the Proxyman Proxy Server (Before the SSL Handshake happens). This log is added during the CONNECT request.
I guess we can verify whether or not your API traffic is:
@colinhumber commented on GitHub (Feb 24, 2023):
Something odd is going on. It definitely seems like a simulator issue. I can still capture traffic from a device but simulator traffic is no longer being captured.
When testing with debug mode on with my device I see the traffic come through on the console and the app. Initially I wasn't able to see traffic on the simulator, but after restarting the simulator a number of times it eventually works, but seems very flaky. Sometimes it captures, sometimes it doesn't.
@NghiaTranUIT commented on GitHub (Feb 24, 2023):
So, it's an Apple Simulator Bug.
There is similar report on the iOS 16 Simulator: https://github.com/ProxymanApp/Proxyman/issues/1268#issuecomment-1238595340
Basically, some API is missing, some are shown. Restart the Simulator might fix it.
@colinhumber commented on GitHub (Feb 24, 2023):
Ah I must have totally missed that ticket. Yeah definitely seems like it. Thanks for all the help! I really appreciate it!
@djtarazona commented on GitHub (Apr 9, 2023):
Thanks @NghiaTranUIT! ❤️ We're looking forward to HTTP/3 support as well. 🙏
@marcelocecin commented on GitHub (Oct 6, 2024):
https://mitmproxy.org/posts/releases/mitmproxy-11/