[GH-ISSUE #858] Support DNS spoofing #851

Open
opened 2026-03-03 19:22:26 +03:00 by kerem · 17 comments
Owner

Originally created by @tiamed on GitHub (Apr 19, 2021).
Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/858

Originally assigned to: @NghiaTranUIT on GitHub.

Feature request for DNS spoofing, pointing the domain to a different IP.

Originally created by @tiamed on GitHub (Apr 19, 2021). Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/858 Originally assigned to: @NghiaTranUIT on GitHub. Feature request for DNS spoofing, pointing the domain to a different IP.
Author
Owner

@NghiaTranUIT commented on GitHub (Apr 21, 2021):

Thanks for requesting this feature @tiamed

I will check out what it's and see if It's reasonable to support it 👍

<!-- gh-comment-id:824066250 --> @NghiaTranUIT commented on GitHub (Apr 21, 2021): Thanks for requesting this feature @tiamed I will check out what it's and see if It's reasonable to support it 👍
Author
Owner

@fishioon commented on GitHub (Sep 27, 2021):

DNS spoofing is a useful feature for me. I need connect a new version server with a domain.

<!-- gh-comment-id:927440351 --> @fishioon commented on GitHub (Sep 27, 2021): DNS spoofing is a useful feature for me. I need connect a new version server with a domain.
Author
Owner

@NghiaTranUIT commented on GitHub (Sep 27, 2021):

@fishioon you might try using Scripting to map your domain to a new domain on the fly.

Here is the snippet code:

function onRequest(context, url, request) {
    request.scheme = "http";
    request.host = "proxyman.dev";
    request.port = 9090;
    return request;
}

It will map https://proxyman.io -> http://proxyman.dev:9090 or your configure 👍

<!-- gh-comment-id:927442092 --> @NghiaTranUIT commented on GitHub (Sep 27, 2021): @fishioon you might try using Scripting to map your domain to a new domain on the fly. Here is the [snippet code](https://docs.proxyman.io/scripting/snippet-code#change-request-destination-scheme-host-port-path): - Matching rule = https://proxyman.io ```js function onRequest(context, url, request) { request.scheme = "http"; request.host = "proxyman.dev"; request.port = 9090; return request; } ``` It will map https://proxyman.io -> http://proxyman.dev:9090 or your configure 👍
Author
Owner

@EeeMt commented on GitHub (Dec 30, 2021):

In my case, the pre and prd has the same domain, but different ip address, so I need use something like ihosts/switchhosts to make requests reach the pre server. It will be very nice if proxyman supports this feature, and I can config network settings in one place.

<!-- gh-comment-id:1002860249 --> @EeeMt commented on GitHub (Dec 30, 2021): In my case, the pre and prd has the same domain, but different ip address, so I need use something like ihosts/switchhosts to make requests reach the pre server. It will be very nice if proxyman supports this feature, and I can config network settings in one place.
Author
Owner

@keenwon commented on GitHub (Mar 2, 2022):

In my case, the pre and prd has the same domain, but different ip address, so I need use something like ihosts/switchhosts to make requests reach the pre server. It will be very nice if proxyman supports this feature, and I can config network settings in one place.

+1

<!-- gh-comment-id:1056461823 --> @keenwon commented on GitHub (Mar 2, 2022): > In my case, the pre and prd has the same domain, but different ip address, so I need use something like ihosts/switchhosts to make requests reach the pre server. It will be very nice if proxyman supports this feature, and I can config network settings in one place. +1
Author
Owner

@rxg9527 commented on GitHub (Mar 17, 2022):

@NghiaTranUIT ,using Scripting you mentioned above doesn't work.

<!-- gh-comment-id:1070545495 --> @rxg9527 commented on GitHub (Mar 17, 2022): @NghiaTranUIT ,using Scripting you mentioned above doesn't work.
Author
Owner

@Treverr commented on GitHub (Aug 1, 2022):

I would love this feature as well. Any plans for this?

<!-- gh-comment-id:1201631295 --> @Treverr commented on GitHub (Aug 1, 2022): I would love this feature as well. Any plans for this?
Author
Owner

@johnnypea commented on GitHub (Aug 3, 2022):

I would find this useful as well. Thank you.

<!-- gh-comment-id:1204578918 --> @johnnypea commented on GitHub (Aug 3, 2022): I would find this useful as well. Thank you.
Author
Owner

@rxg9527 commented on GitHub (Nov 23, 2022):

I would love this feature as well. Thx.

<!-- gh-comment-id:1324730645 --> @rxg9527 commented on GitHub (Nov 23, 2022): I would love this feature as well. Thx.
Author
Owner

@EeeMt commented on GitHub (Jan 31, 2023):

Any progress for the ticket?

<!-- gh-comment-id:1409997117 --> @EeeMt commented on GitHub (Jan 31, 2023): Any progress for the ticket?
Author
Owner

@NghiaTranUIT commented on GitHub (Jan 31, 2023):

Sorry, no progress so far. We're busy to port the app to Windows (1.2.0) and the Linux (on-going) 😢

Her is a workaround:

  1. Start Charles Proxy on port 8888
  2. Setup the DNS Spoofing on Charles Proxy.
  3. Start Proxyman -> At this point, Proxyman will override the Proxy at port 9090
  4. Go to Proxyman -> Tools -> Proxying Setting -> External Proxy -> Setup HTTP and HTTPS to 127.0.0.1 at port 8888.
  5. Done

This setup is: Your client -> Proxyman ---(external proxy)---> Charles Proxy (DNS Sppofing) -> The Internet.

You can use Proxyman as a main development tool, and Charles Proxy will handle the DNS 👍

<!-- gh-comment-id:1410015036 --> @NghiaTranUIT commented on GitHub (Jan 31, 2023): Sorry, no progress so far. We're busy to port the app to Windows (1.2.0) and the Linux (on-going) 😢 Her is a workaround: 1. Start Charles Proxy on port 8888 2. Setup the DNS Spoofing on Charles Proxy. 3. Start Proxyman -> At this point, Proxyman will override the Proxy at port 9090 4. Go to Proxyman -> Tools -> Proxying Setting -> External Proxy -> Setup HTTP and HTTPS to 127.0.0.1 at port 8888. 5. Done ✅ This setup is: Your client -> Proxyman ---(external proxy)---> Charles Proxy (DNS Sppofing) -> The Internet. You can use Proxyman as a main development tool, and Charles Proxy will handle the DNS 👍
Author
Owner

@NghiaTranUIT commented on GitHub (Jun 30, 2023):

@EeeMt @rxg9527 @tiamed @johnnypea, if you don't mind, let's check out this Beta build: https://download.proxyman.io/beta/Proxyman_4.8.1_Support_DNS_Spoofing.dmg

You can access the DNS Spoofing in the Tool Menu. It's similar to what Charles Proxy does:

  • It doesn't change the Host Header or the URL
  • Before connecting to the destination server, it lookups at the DNS Spoofing
  • Support wildcard

CleanShot 2023-06-30 at 20 48 09@2x


Let me know the result or any bugs that you can find 👍

<!-- gh-comment-id:1614680367 --> @NghiaTranUIT commented on GitHub (Jun 30, 2023): @EeeMt @rxg9527 @tiamed @johnnypea, if you don't mind, let's check out this Beta build: https://download.proxyman.io/beta/Proxyman_4.8.1_Support_DNS_Spoofing.dmg You can access the DNS Spoofing in the Tool Menu. It's similar to what Charles Proxy does: - It doesn't change the Host Header or the URL - Before connecting to the destination server, it lookups at the DNS Spoofing - Support wildcard ![CleanShot 2023-06-30 at 20 48 09@2x](https://github.com/ProxymanApp/Proxyman/assets/5878421/4ee0c0c6-711a-4745-a982-8f4c90bd7138) --------------- Let me know the result or any bugs that you can find 👍
Author
Owner

@zineer commented on GitHub (Jun 30, 2023):

Awesome! I ran a couple quick checks for pointing domains to a new server that we are transferring to and it worked great! One fix - the checkbox says 'spoffing' instead of 'spoofing'.
image

<!-- gh-comment-id:1614824712 --> @zineer commented on GitHub (Jun 30, 2023): Awesome! I ran a couple quick checks for pointing domains to a new server that we are transferring to and it worked great! One fix - the checkbox says 'spoffing' instead of 'spoofing'. ![image](https://github.com/ProxymanApp/Proxyman/assets/583705/aa908b5d-892e-4d36-b1bc-f7ca4349757f)
Author
Owner

@EeeMt commented on GitHub (Jul 1, 2023):

DNS Spoofing is great!!

But If I enable DNS spoofing along with SSL proxy, it hits the symptom that:

  1. Close all incognito tabs
  2. Open a chrome incognito tab
  3. Use [SwitchyOmega](chrome extension) to proxy all traffic to localhost:9091 where Proxyman listening
  4. Visit https://test.com
  5. Page stuck pending and then timeout in 30 seconds
  6. Proxyman captured no traffic

But, if I just enable DNS spoofing and disable SSL proxy, everything work fine, the sympton is:

  1. Close all incognito tabs
  2. Open a chrome incognito tab
  3. Use [SwitchyOmega](chrome extension) to proxy all traffic to localhost:9091 where Proxyman listening
  4. Visit https://test.com
  5. Page loaded
  6. Proxyman captured traffics.

Informations:

  • env:
    • Macbook pro 14 (apple M1 pro)
    • macOS 13.4 (22F66)
    • Proxyman Version 4.8.1 (48010)
    • Google Chrome Version 114.0.5735.198 (Official Build) (arm64)
  • config:
    • DNS spoofing: test.com -> 192.168.50.160
  • having tried:
    • enable DNS spoofing & SSL proxy Enable only for the domain: the bad symptom above
    • enable DNS spoofing & SSL proxy Enable all domain from "Google Chrome": the bad symptom above
    • enable DNS spoofing & disable SSL proxy: the good symptom above
    • disable DNS spoofing & enable SSL proxy: the bad symptom above, but it's expected, because the domain is fake
    • disable DNS spoofing & disable SSL proxy: he bad symptom above but time out shorten to 6s~10s, but it's expected, because the domain is fake
image

And the har (including bad case and good case): har.zip

<!-- gh-comment-id:1615463389 --> @EeeMt commented on GitHub (Jul 1, 2023): DNS Spoofing is great!! But If I enable `DNS spoofing` along with `SSL proxy`, it hits the symptom that: 1. Close all incognito tabs 2. Open a chrome incognito tab 3. Use [SwitchyOmega](chrome extension) to proxy all traffic to localhost:9091 where Proxyman listening 4. Visit https://test.com 5. Page stuck pending and then timeout in 30 seconds 6. Proxyman captured no traffic But, if I just enable `DNS spoofing` and **disable** `SSL proxy`, everything work fine, the sympton is: 1. Close all incognito tabs 2. Open a chrome incognito tab 3. Use [SwitchyOmega](chrome extension) to proxy all traffic to localhost:9091 where Proxyman listening 4. Visit https://test.com 5. Page loaded 6. Proxyman captured traffics. Informations: - env: - Macbook pro 14 (apple M1 pro) - macOS 13.4 (22F66) - Proxyman Version 4.8.1 (48010) - Google Chrome Version 114.0.5735.198 (Official Build) (arm64) - config: - DNS spoofing: test.com -> 192.168.50.160 - having tried: - enable DNS spoofing & SSL proxy Enable only for the domain: the bad symptom above ❗️ - enable DNS spoofing & SSL proxy Enable all domain from "Google Chrome": the bad symptom above ❗️ - enable DNS spoofing & disable SSL proxy: the good symptom above ✅ - disable DNS spoofing & enable SSL proxy: the bad symptom above, but it's expected, because the domain is fake - disable DNS spoofing & disable SSL proxy: he bad symptom above but time out shorten to 6s~10s, but it's expected, because the domain is fake <img width="841" alt="image" src="https://github.com/ProxymanApp/Proxyman/assets/21380583/50557aa5-882f-4ae9-827d-bdf230b0b2a4"> And the har (including bad case and good case): [har.zip](https://github.com/ProxymanApp/Proxyman/files/11924456/har.zip)
Author
Owner

@NghiaTranUIT commented on GitHub (Jul 2, 2023):

@EeeMt if you don't mind, please test with this Beta build v2: https://download.proxyman.io/beta/Proxyman_4.8.1_DNS_Spoofing_v2.dmg

Changelog

  • Proxyman nows use DNS Spoofing to fetch the server certificate

In your test scenario, I suspect that Proxyman could not fetch the server certificate (because https://test.com is a fake domain).

<!-- gh-comment-id:1616436670 --> @NghiaTranUIT commented on GitHub (Jul 2, 2023): @EeeMt if you don't mind, please test with this Beta build v2: https://download.proxyman.io/beta/Proxyman_4.8.1_DNS_Spoofing_v2.dmg ### Changelog - Proxyman nows use DNS Spoofing to fetch the server certificate In your test scenario, I suspect that Proxyman could not fetch the server certificate (because https://test.com is a fake domain).
Author
Owner

@EeeMt commented on GitHub (Jul 2, 2023):

@EeeMt if you don't mind, please test with this Beta build v2: https://download.proxyman.io/beta/Proxyman_4.8.1_DNS_Spoofing_v2.dmg

Changelog

  • Proxyman nows use DNS Spoofing to fetch the server certificate

In your test scenario, I suspect that Proxyman could not fetch the server certificate (because https://test.com is a fake domain).

Awesome, now it works great. Thank you!!!

<!-- gh-comment-id:1616446048 --> @EeeMt commented on GitHub (Jul 2, 2023): > @EeeMt if you don't mind, please test with this Beta build v2: https://download.proxyman.io/beta/Proxyman_4.8.1_DNS_Spoofing_v2.dmg > > ### Changelog > * Proxyman nows use DNS Spoofing to fetch the server certificate > > In your test scenario, I suspect that Proxyman could not fetch the server certificate (because https://test.com is a fake domain). Awesome, now it works great. Thank you!!!
Author
Owner

@NghiaTranUIT commented on GitHub (Jul 2, 2023):

Awesome, I will release this feature in the next update, and soon port it the iOS app 👍

<!-- gh-comment-id:1616612458 --> @NghiaTranUIT commented on GitHub (Jul 2, 2023): Awesome, I will release this feature in the next update, and soon port it the iOS app 👍
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Proxyman#851
No description provided.