How to Create Your Own Proxy Pool With Python and Bash

How to Create Your Own Proxy Pool With Python and Bash

“As the Nile flows quietly, yet carries the secrets of the land, so too must our data traverse the web, shielded by the current of anonymity.”


The Purpose and Power of Proxy Pools

In the sands of the ancient world, traders would use hidden routes to protect their caravans from prying eyes. Today, proxies serve a similar role—concealing your digital footsteps, distributing requests, and evading the ever-watchful gaze of rate-limiters and firewalls.

A proxy pool is a collection of proxy servers. By rotating requests through multiple proxies, you avoid detection, bans, and bottlenecks. Building your own proxy pool with Python and Bash gives you sovereignty, flexibility, and the wisdom of control—unlike relying on costly third-party solutions.


Table: Proxy Pool Approaches

Approach Pros Cons Example Use Cases
Third-Party APIs Easy setup, managed maintenance Expensive, less control, blacklisting Quick prototyping
DIY with Python Full control, cost-effective Requires maintenance, reliability Web scraping, automation
Bash Scripting Lightweight, easy integration Less scalable, manual management Quick tasks, health checks

Gathering Proxy Sources

“Do not drink from a well you do not know,” an elder once told me—choose your proxy sources wisely.

Free Public Proxies

Bash: Fetch and Parse Proxy List

curl -s https://www.sslproxies.org/ | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]+' > proxies.txt

Paid Proxy Services

For mission-critical tasks, consider providers like https://brightdata.com/ or https://www.oxylabs.io/. They offer higher reliability and better anonymity.


Validating Proxies

Ancient wisdom: “Test the stone before you build.”

Python: Check Proxy Availability

import requests

def is_proxy_working(proxy):
    try:
        response = requests.get('https://httpbin.org/ip', proxies={'http': proxy, 'https': proxy}, timeout=5)
        return response.status_code == 200
    except:
        return False

# Read proxies from file
with open('proxies.txt') as f:
    proxies = [line.strip() for line in f]

working_proxies = [p for p in proxies if is_proxy_working(p)]
with open('working_proxies.txt', 'w') as f:
    for p in working_proxies:
        f.write(f"{p}\n")

Rotating Proxies with Python

The secret of the caravan: never take the same route twice.

Simple Proxy Rotator

import random
import requests

with open('working_proxies.txt') as f:
    proxies = [line.strip() for line in f]

def get_random_proxy():
    return random.choice(proxies)

def fetch_with_proxy(url):
    proxy = get_random_proxy()
    try:
        resp = requests.get(url, proxies={'http': proxy, 'https': proxy}, timeout=10)
        print(f"Using {proxy}: {resp.status_code}")
        return resp.text
    except Exception as e:
        print(f"Proxy {proxy} failed: {e}")
        return None

# Example usage
html = fetch_with_proxy('https://httpbin.org/ip')

Bash: Quick Proxy Health Check

For those who favor the command line, as the artisans of old favored their tools:

while read proxy; do
    timeout 5 curl -s --proxy $proxy https://httpbin.org/ip >/dev/null && echo "$proxy is alive"
done < proxies.txt

Automating Proxy Pool Updates

Like the annual flooding of the Nile, proxies come and go—automation is key.

Bash: Scheduled Fetch and Validation

#!/bin/bash

# Fetch new proxies daily
curl -s https://free-proxy-list.net/ | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]+' > proxies.txt

# Validate proxies
> working_proxies.txt
while read proxy; do
    timeout 5 curl -s --proxy $proxy https://httpbin.org/ip >/dev/null && echo "$proxy" >> working_proxies.txt
done < proxies.txt

Schedule with cron:

0 2 * * * /path/to/your/script.sh

Advanced: Serving Proxies via API with Flask

In the Pharaoh’s court, access to resources was granted with a word. Provide an API for your pool:

from flask import Flask, jsonify
import random

app = Flask(__name__)

def get_proxies():
    with open('working_proxies.txt') as f:
        return [line.strip() for line in f]

@app.route('/get_proxy')
def get_proxy():
    proxies = get_proxies()
    return jsonify({'proxy': random.choice(proxies)})

if __name__ == '__main__':
    app.run(port=5000)

Security, Ethics, and Best Practices

  • Never use proxies for illegal or unethical purposes.
  • Rotate user agents as well as proxies (fake-useragent).
  • Monitor for IP bans and refresh your pool regularly.
  • Respect robots.txt and target site terms.

Key Resources


As the ancients guarded their trade secrets, so too should you guard your proxy pool—maintain it, rotate it, and wield it with wisdom.

Anwar El-Mahdy

Anwar El-Mahdy

Senior Proxy Analyst

Anwar El-Mahdy is a seasoned professional with over 30 years of experience in computing and network security. Born and raised in Cairo, Egypt, Anwar pursued his passion for technology at a young age, which led him to become a prominent figure in the digital security landscape. As a Senior Proxy Analyst at ProxyMist, he is responsible for curating and updating a comprehensive list of proxy servers, ensuring they meet the diverse needs of users seeking privacy and anonymity online. His expertise in SOCKS, HTTP, and elite proxy servers makes him an invaluable asset to the team.

Comments (0)

There are no comments here yet, you can be the first!

Leave a Reply

Your email address will not be published. Required fields are marked *