If you have been using our residential proxy network normally, today's update will not change anything for you.
Starting today, we are officially enforcing remote DNS resolution across all residential proxy endpoints. Traffic routed through our residential network must now let the proxy server handle hostname resolution. If your app or client setup does a local DNS lookup before sending traffic through a residential proxy, those requests will now fail.
(Note: This update applies strictly to our residential proxy pool. Datacenter and mobile proxies are not affected by this change.)
While this might break custom scripts that rely on pre-resolved IP addresses, it is a necessary move to protect privacy, enforce access rules, and keep our residential pool reliable.
Why We Made This Change
Most HTTP and SOCKS5 client libraries already handle DNS proxy-side by default, like using
socks5h://socks5://1. Stopping DNS Leaks
When your client resolves a domain name locally before tunneling traffic through a residential proxy, your machine sends a query straight to your local ISP or local DNS provider.
-
The Privacy Risk: Even if your actual HTTP or TCP traffic goes through an encrypted residential proxy, your ISP or local network admin can still see every domain you try to visit.
-
The Fix: Forcing DNS resolution on the remote residential proxy server keeps both the domain lookup and the actual data inside the encrypted tunnel, completely fixing local DNS leaks.
2. Protecting Security and Access Controls
Local DNS lookups can be abused to bypass security bounds. By resolving a hostname to a direct IP locally, bad actors can attempt to hit backend endpoints directly, stepping right around domain-based blocklists and web application firewalls.
Enforcing resolution at the proxy level gives our residential edge architecture a chance to check domain requests against security policies before a TCP connection even opens.
What You Need to Do
For most of our residential proxy users, you do not need to do anything.
If you run custom scripts, cURL commands, or low-level network libraries with residential endpoints, just double-check your connection flags to make sure you are passing domain names instead of pre-resolved IPs:
-
cURL users: Make sure you use the proxy protocol that delegates DNS, so use
instead ofsocks5h://socks5:// -
Python users (requests / httpx): Use standard proxy URLs with scheme formats like
orhttp://socks5h:// -
Custom Code: Pass raw hostnames directly in your host headers and socket connections instead of resolving hostnames locally before connecting.





