mirror of
https://github.com/ProxymanApp/Proxyman.git
synced 2026-04-26 00:25:56 +03:00
[GH-ISSUE #447] Reverse proxy #444
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#444
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 @hauleth on GitHub (Mar 23, 2020).
Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/447
Originally assigned to: @NghiaTranUIT on GitHub.
Recently I needed to capture requests coming from application that bypasses proxy and instead I wanted to transparently capture and log all requests. In the end I have used mitmproxy in reverse mode. I can see how such feature could be useful in Proxyman as well.
@NghiaTranUIT commented on GitHub (Mar 24, 2020):
Hey, Thanks for this feature request.
I did a little research on what the reverse Proxy is and how to implement it. By the end, It's possible to support it and it's slightly similar to what I did on Map Remote tool. I will support it in the next couple releases after a multiple filters feature 👍
@NghiaTranUIT commented on GitHub (Apr 5, 2020):
Move from Backlog to 1.24.0. It's quite trivial to implement it 🤚
@luckman212 commented on GitHub (Oct 31, 2020):
@NghiaTranUIT Was this implemented? Sorry if it's a dumb question... I'm using Version 2.10.0 (21000) from Setapp...
@NghiaTranUIT commented on GitHub (Oct 31, 2020):
Sorry @luckman212 but we haven't implemented it and it's still in our backlog. I will collect more requests for this feature before implementing it 👍
@simonknittel commented on GitHub (Mar 8, 2021):
Would also love to see this. I need to debug an application which can't change proxy settings but change the URL itself. A revserse proxy should help with this.
@NghiaTranUIT commented on GitHub (Mar 8, 2021):
@simonknittel If you can change the URL, you might change to
localhost.proxyman.io, which is points to 127.0.0.1 in our DNS Cloudflare. As a result, Proxyman can capture the traffic as usual 👍For instance,
localhost.proxyman.io:8000is the same as localhost:8000Ref: https://docs.proxyman.io/troubleshooting/couldnt-see-any-request-from-localhost-server#3-solutions
@simonknittel commented on GitHub (Mar 8, 2021):
Thanks for the hint. However, my target server is not localhost nor any other server on my machine.
Example: From within the application a request will call example.com/some/path. I can change the hostname incl. the path, but the request still needs to go to the real server, after it passed through the proxy.
I would need something like this: All requests to rule1.reverse.proxyman.io will go through Proxyman and then to example.com/some/path
@NghiaTranUIT commented on GitHub (Mar 8, 2021):
You’re right. I will push this feature on the next meeting to see if we can implement it soon. Currently, network throttling is the biggest feature that we’re working on 👍
@msivers commented on GitHub (May 13, 2021):
Would love to see reverse proxy capability implemented (as per the likes of NGINX Reverse Proxy). Would be a huge addition to the feature list (and would also help work around the notable iOS WKWebview lack of http proxy support).
Is there an ETA for this?
@NghiaTranUIT commented on GitHub (May 13, 2021):
Thanks for pushing this feature. I will push this feature request to Proxyman team next week and see if we can allocate resource to implement this feature 👍 If it's reasonable, the ETA after 2-3 weeks after it kicks start.
Just wondering, if you run WKWebView on iOS Simulator: Is Proxyman able to capture the traffic? 🤔
@mattneub commented on GitHub (May 29, 2021):
The trouble is that localhost.proxyman.io is not a reverse proxy. It's just a DNS munger. A reverse proxy is a web server acting as a man in the middle. This is what is needed to intercept communication from apps that do http without regard for proxy settings. localhost.proxyman.io doesn't help with that.
@NghiaTranUIT commented on GitHub (Jun 1, 2021):
Thanks. I understand the problem. We're working on this feature. Please stay tuned 😄
@NghiaTranUIT commented on GitHub (Jun 27, 2021):
Hello @mattneub @hauleth @msivers @simonknittel @luckman212 @m-rots @Yuto-M
Good news that Reverse Proxy is finally implemented 🎉 😄
If you guys don't mind, please check out this beta build: https://proxyman.s3.us-east-2.amazonaws.com/beta/Proxyman_2.28.0_Reverse_Proxy.dmg
What's new:
Benefit
Reverse Proxy allows Proxyman can capture traffic from your app, which doesn't have any option to override the HTTP Proxy.
How to use
Screenshots
Please let me know it there is any bugs. I'm happy to fix it 👍
@mattneub commented on GitHub (Jun 28, 2021):
Sorry, the interface is lovely, but I'm not seeing any evidence that this is working. I am trying to route to local rails server on localhost:3000. I tried port 10000 (with my app pointed to 127.0.0.1:10000), remote host localhost or else 127.0.0.1 or else localhost.proxyman.io, remote port 3000, but I see no evidence that any communication is even reaching the rails server, and no response appears within proxyman. — I know that this can work because it works with Charles.
@NghiaTranUIT commented on GitHub (Jun 28, 2021):
Thanks for letting me know. I'm trying to reproduce your issue @mattneub 👍
@NghiaTranUIT commented on GitHub (Jun 28, 2021):
I'm not sure but I could not reproduce your issue @mattneub 😿
Attempt 1: Use a simple Sinatra server
=> I'm able to make a request to
http://127.0.0.1:10000, and Proxyman forwards tolocalhost:4567(Sinatra Server)127.0.0.1:10000by Safari or Firefox also works toohttp://127.0.0.1:10000from curl, Proxyman displays it as an HTTPS request (https://127.0.0.1:4567) (See the screenshot)@NghiaTranUIT commented on GitHub (Jun 28, 2021):
Attempt 2 - Use my gogin local server at port 3000
Start my local server at port 3000
Setup the reverse proxy entry (Local Port = 10000, RemoteHost = localhost, RemotePort = 3000, PreserveHost = OFF)

Open

127.0.0.1:10000in Firefox=> Proxyman is able to log this Reverse traffic.

=> My gogin servers received these requests

@NghiaTranUIT commented on GitHub (Jun 28, 2021):
@mattneub if you don't mind, please
http://127.0.0.1:10000by using curlAnd see if it works or not.
Thank you in advance @mattneub 🙇
@mattneub commented on GitHub (Jun 28, 2021):
Yes, that works for me too — from the browser (Safari or whatever). I'll continue trying to make this more reproducible!
@NghiaTranUIT commented on GitHub (Jun 28, 2021):
Thanks 🎉 Feel free to reach out to me. I'm ready to fix the bug 😄
@mattneub commented on GitHub (Jun 28, 2021):
I'm sorry, I don't know how to tell you how to reproduce. All I can say is that I have this app running on the Xcode Simulator. If I tell it to connect to Charles, Charles passes the messages on to my local rails server. But if I tell it to connect to Proxyman, it seems to see no server at all and no messages are passed to my local rails server.
@mattneub commented on GitHub (Jun 29, 2021):
OK, I've got it working! I changed Proxyman's reverse proxy port to 53004, to match what Charles was using.
Using
http://127.0.0.1:53004/my app running on the Simulator now passes thru Proxyman to the rails server at localhost 3000.I should add that this app is actually a Xamarin app developed out of Visual Studio. When running on the Android emulator, the URL needs to be
http://10.0.2.2:53004/because of the Android Emulator's peculiar virtual router.@NghiaTranUIT commented on GitHub (Jun 29, 2021):
Glad to know it works for you 🎉
I wonder why port 10000 doesn't work in the first place 🤔 I thought that we have to install & trust the Proxyman Certificate in your Simulator, but it's not the case.