Socks5 Proxy Scheme with Remote DNS resolving

When using a Socks proxy, you must have written a string like socks5://127.0.0.1:8000 to represent the proxy protocol and address. Strings in this format are widely used in CURL based components such as Guzzle, pip, and urllib3. We often want these programs to use a Socks proxy to connect to the internet but get weird connection failures. An interesting part of these strange failures is that accessing some websites works fine, while others cannot. These failures persist even if you have confirmed that there is no failure of the proxy connection itself. At this time, I suggest you consider that these failures are caused by DNS issues, especially when you are in some special network environment, such as the network affected by DNS pollution, the Great Firewall of China or a public WIFI.

Continue reading