DEV Community

Cover image for How to Route cURL Requests Through a Proxy Server
MarsProxies
MarsProxies

Posted on • Edited on

How to Route cURL Requests Through a Proxy Server

cURL is no doubt a powerful tool. While it can facilitate data transfer between internet servers in practically any protocol and operating system, it still can't get around the many restrictions web servers impose. At the same time, cURL is a garbage-in-garbage-out type of software—it can't differentiate between malware and secure traffic.

To get around such restrictions and enjoy better security when implementing cURL requests for various tasks, you must use a proxy server.

This blog will walk you through the process of using cURL with a proxy of your choice, whether HTTP, HTTPS, or SOCKS proxy. By the end, you will understand how to set up a cURL proxy and the syntax for sending HTTP and HTTPS requests. Scroll below for this and more information.

Understanding How cURL Works

cURL or client URL is a command line tool used to transfer data over the web using URLs. It's like a universal remote control for the internet because it can interact with any protocol and server. In fact, as an internet user, you probably interact with cURL every time you connect to the web.

Why?

cURL is a foundational internet tool. It is often embedded into the back end of websites and applications to manage data requests and responses. IoT devices, such as your internet router, also use cURL to communicate over the internet. And finally, even developers use cURL to build, test, and manage website APIs.

Given its versatility and support for many protocols, including HTTP, HTTPS, SOCKS, FTP, SMTP, and others, there are limitless ways to utilize cURL. For example, you can use cURL to upload and download files automatically via the command line. You can also use it to test and debug websites by checking HTTP status codes.

For further insights into how cURL works, we'll retrieve the HTML code from Google's official website:

Step 1: Open your computer's terminal and run the following command:

Image description

Step 2: This is what the console will display:

Image description

It basically means that Instagram has moved to a new address. Remember what we said about cURL being a 'garbage in, garbage out' tool? It can't follow redirects like your regular browser unless you explicitly tell it to.

Step 3: Run the following command on your computer's terminal:

Image description

Doing so will now retrieve Instagram's HTML code. The -L flag instructs cURL to follow any redirects from the target host server. It is part of cURL's command line options. Others include:

  • -I, --head: Show document info only.
  • -i, --include: Include the HTTP response headers in the output.
  • -o, --output : Write output to instead of stdout.
  • -O, --remote-name: Write output to a file named as the remote file.
  • -s, --silent: Silent mode (don't output anything).
  • -v, --verbose: Make the operation more talkative
  • -w, --write-out : Use output format after completion.

So you see, cURL's basic function is to transfer data using URLs across any protocol and operating system, which is why it is embedded at the heart of the web. So, then, why would you want to use cURL with proxy servers? First, let's see what a proxy server is and how it works.

What Is a Proxy Server?

A proxy server is like a special pass for your cURL traffic.

It can facilitate access to restricted websites, bypass geo-blocks, and even anonymize your cURL requests using a somewhat simple principle: rerouting your cURL requests through a different IP address configured to bypass blocks and provide better security.

So when you use cURL with proxy addresses (we'll show you how later), your requests travel from your device to the proxy server, which will reroute them via a new IP address. The proxy then sends this data to the target server, which processes and returns it to this new IP. The proxy then forwards the response to your original IP address.

The Benefits of Using cURL With Proxies

With that out of the way, here are the benefits you stand to gain when you use cURL with a proxy server:

Anonymity and Privacy

A cURL proxy forwards your requests via an alternate IP address, which effectively anonymizes your cURL requests. This extra layer of privacy is especially important when performing sensitive tasks. It also prevents websites from tracking your IP address.

Bypassing Geo-Restrictions

Using curl with proxy servers can also help you get around geo-blocks. It's when websites restrict access to their content based on IP location. cURL proxies can swap your IP address with one from a different location, allowing access to geo-restricted content.

Preventing IP Bans and Throttling

There are many websites that ban users' IPs arbitrarily, often with no warning or explanation. The likelihood of suffering this fate is high when using cURL to automate requests. To prevent IP bans, use a pool of rotating IP addresses that changes your IP after a certain number of requests to prevent the chances of detection.

Types of cURL Proxies

It's clear that cURL proxies can help you bypass restrictions and prevent IP bans when sending cURL requests. In that regard, there are different types of proxy servers you can use with cURL. They are listed below:

- HTTP Proxy

This is simply a proxy server configured to process HTTP traffic, which stands for hypertext transfer protocol, referring to the standards that govern how data is transmitted over the internet.

- HTTPS Proxy

HTTPS proxies can handle standard HTTP traffic and encrypted HTTPS data, making them more secure.

- SOCKS Proxy

A SOCKS proxy is more versatile compared to HTTP and HTTPS proxies because it handles not just standard HTTP(S) data, but all other protocols. SOCKS proxies are protocol-independent. You can opt for SOCKS4 servers, which offer IPV4 support with no authentication, or SOCKS5 proxies, which offer IPV4 and IPV6 support together with authentication.

As you can see, using a proxy with cURL presents unique advantages depending on the type you opt for. HTTP proxies are the most common and ideal for general web browsing, whereas HTTPS proxies are more attuned to more secure traffic since they encrypt data. Finally, SOCKS proxies are protocol-independent, making them ideal for bypassing firewalls and content filters.

How to Get Started With cURL and Proxies

You know what cURL is, how it works, and the various ways you can implement it. Using this tool with proxies can help you bypass restrictions and anonymize your requests.

However, knowing and appreciating these benefits is only one piece of the puzzle. You must learn how to install cURL in your device of choice and then configure proxy servers to reroute the requests.

We have listed the installation instructions for Windows, Mac, and Linux computers. Keep scrolling below.

Installing cURL on Windows Devices

Windows 10 and later releases include cURL as part of the operating system utilities. But there's a catch. The pre-installed tool is not the traditional cURL command line tool we have discussed above. It is an alias for the Invoke-WebRequest cmdlet in Windows.

If you've gotten confused when working with cURL in these systems, it's because the Invoke-WebRequests cmdlet is quite different from traditional cURL in syntax and capabilities. However, it performs pretty much the same function.

If you wish to use the traditional cURL command line tool, there are two ways you can override the Invoke-WebRequests alias, either temporarily or permanently.

Removing the cURL Windows 10 Alias Temporarily

Run the following command on your console:

Image description

Doing so will remove the cURL alias for your current PowerShell session.

If you want to permanently override cURL and interact with the traditional tool for all your PowerShell sessions, here's what you should do.

Permanently Overriding cURL

Run this command to open your profile file:

Image description

Then, add the following line to your profile file:

Image description

So you see, you don't have to worry about installing cURL on Windows 10 and later distributions since this package comes pre-installed, although as an alias. You can override this alias temporarily or permanently, as described above.

For users running earlier Windows distributions. Here is how to install the cURL command line tool on your device:

How to Install cURL on Windows Devices

Step 1: You must first download the cURL zip file from the official website:

Image description

Step 2: Choose your distribution and click download:

Image description

Step 3: Open the Zip file and navigate to "src" to find the cURL file. Copy and paste it to your local system.

Image description

Step 4: Open a new terminal session and run the following command. Replace "location" with the location where you placed the cURL file in your local system:

Image description

If you followed the steps above, your console should display the following:

Image description

Step 5: Use the following command to test whether the cURL command is working:

Image description

How to Install cURL on Linux Devices

You probably don't have to worry about installing cURL when running the Linux OS because most distributions come with this tool pre-installed. If your device doesn't have cURL, here is how you can configure it:

Step 1: Open your device terminal and run the following command:

Image description

Step 2: If prompted, add your security details. Your system will then install the cURL command line tool. That's it!

How to Install cURL on Mac Devices

As with the case with Linux OS, cURL also comes preinstalled on most Mac computers. Here is how you can configure the command line tool yourself:

Step 1: Press Command + Space to open the terminal.

Step 2: Start by installing a package manager like Homebrew. Run the following command and enter your security details if prompted:

Image description

Step 3: Enter the following prompt:

Image description

You can now run cURL requests on your Mac device.

By following the instructions for your device of choice, you will have successfully installed cURL. Remember, this was a two-part equation, and you only solved the first half. Now, you must use a cURL proxy server to reroute the cURL requests.

Setting up Your cURL Proxy Server

MarsProxies offers residential proxies that are ideal for running cURL commands. These affordable proxy servers offer unlimited concurrent sessions from real IP addresses, minimizing the chances of detection. Here's how you can purchase and configure your very own residential proxy settings from MarsProxies.

Step 1: Open your MarsProxies account if you don't have one and log in.

Image description

The dashboard should look like this:

Image description

Step 2: Click on your username in the top right corner and select Deposit from the menu:

Image description

Step 3: Select your preferred payment method and add the necessary info:

Image description

Step 4: Select residential proxies from the list and select Create a new order:

Image description

Step 5: Chose the plan you wish to purchase along with the bandwidth and click next when done:

Image description

Step 6: Pay using your balance or credit card in the next window:

Image description

Once your order is confirmed, you can now access and use your cURL residential proxies from the dashboard. From here, you can see the formatted proxy list, including the authentication details. You should copy the proxy details on this page and use them with cURL in the format that we will explain below.

Using Proxies With cURL

You've successfully configured the prerequisites needed to anonymize cURL requests and bypass restrictions. You are now set to begin running cURL requests with a proxy server.

Before we get into the specific proxy servers and their configuration, you must remember that the basic proxy settings syntax remains the same:

Image description

  • Proxy_IP: This is the proxy IP address from your proxy provider.
  • Port: This is the proxy port from your proxy provider.
  • URL: The target website to be accessed using a cURL proxy.

We are also using the L flag to steer clear of any redirect errors that may interrupt our illustration.

Proxy Authentication

Depending on the chosen proxy settings, your provider may assign a username and password to authenticate your proxies for security purposes. MarsProxies offers username/password authentication for all its proxy server packages. These details are provided within the proxy string once you purchase your desired MarsProxies subscription.

Here is the syntax to use when adding your username and password as part of the proxy string:

Image description

How to Use cURL With HTTP Proxy

Below is an HTTP proxy from MarsProxies. We will use it to reroute our Google request:

Image description

We'll use the L flag to instruct cURL to follow any redirects issued by the host. Here is the syntax for the cURL command to use:

Image description

Insert your proxy details and target URL like so:

Image description

Running this command in your terminal will return Google's web page information.

Image description

To confirm your proxy is working as it should be, use the HTTBin request to check its status. Add the following string to your cURL prompt:

Image description

Here is the response confirming the proxy server's IP:

Image description

How to Use Curl With HTTP(S) Proxy

Let's use the HTTPS proxy below to send a GET request to a different website, say MarsProxies.

Image description

Here is the syntax:

Image description

Inserting your HTTPS proxy:

Image description

Now run this command in your terminal. The console should display MarsProxies HTML code. To confirm that the MarsProxies server is interacting with the proxy server's IP address:

Image description

Here is the response:

Image description

How to Use cURL With a SOCKS4 Proxy Server

A SOCKS4 proxy server uses the SOCKS protocol and supports IPV4 with no authentication. Here is the SOCKS4 proxy we will use for our example:

Image description

Here is the syntax:

Image description

Inserting our proxy:

Image description

You should whitelist your proxies with your provider since SOCKS4 proxies don't support authentication.

How to Use SOCKS5 Proxy With cURL

As we mentioned earlier, cURL SOCKS proxy addresses are protocol-independent. SOCKS5 proxies support ipv4 and ipv6 as well as proxy authentication. Here is the MarsProxies SOCKS5 proxy we will be using for this illustration:

Image description

The syntax:

Image description

Inserting our proxy:

Image description

Running this command will return MarsProxies HTML code. And now, to confirm your cURL SOCKS proxy has successfully rerouted your IP:

Image description

Running this command should now return your proxy server's IP address.

As you can see, using a proxy with cURL is a relatively straightforward process. The basic syntax remains the same across most types of cURL proxy servers.

However, things get a bit different for SOCKS proxy servers because SOCKS4 doesn't support authentication, meaning you won't need the U flag to authenticate your IPs. Instead, whitelist your SOCKS4 proxies with your provider before using them with cURL.

Conclusion

cURL is like the circulatory system of the internet because it provides a means for web servers to communicate using URLs over any protocol and operating system. You can implement cURL to test websites and applications and download files automatically over web servers.

Despite being a versatile tool, it can't get around server restrictions or filter malicious traffic. For that reason, you're better off pairing cURL with a proxy server. Our article has introduced the various types of proxies and shown you how to use them to send cURL commands.

Have a cURLorful day!

Top comments (0)