WeProxy
Python

Language / SDK

WeProxy proxy setup for Python

The common way to use a proxy in Python is the requests library. Keep credentials out of source code and load them from environment variables. HTTP tunnel and SOCKS5 examples are below.

One of the most common ways to use a proxy in Python projects is the requests library. You can apply a proxy to a single request, a session, or all compatible requests through environment variables. This guide shows HTTP and SOCKS5 examples for a WeProxy connection.

WeProxy connection flow

Requirements

Install Python 3 and the Requests library:

python -m pip install requests

If you will use SOCKS5, install the extra dependencies:

python -m pip install "requests[socks]"

From the WeProxy panel, get the host, port, username, password, and the protocol your product supports.

Preparing Environment Variables

Keep credentials in the operating system’s environment variables instead of writing them into source code.

macOS/Linux:

export WEPROXY_HOST="PROXY_HOST"
export WEPROXY_PORT="PROXY_PORT"
export WEPROXY_USERNAME="PROXY_USERNAME"
export WEPROXY_PASSWORD="PROXY_PASSWORD"

PowerShell:

$env:WEPROXY_HOST="PROXY_HOST"
$env:WEPROXY_PORT="PROXY_PORT"
$env:WEPROXY_USERNAME="PROXY_USERNAME"
$env:WEPROXY_PASSWORD="PROXY_PASSWORD"

These variables are examples only. In production, use a secret manager and do not commit .env files to Git.

Using an HTTP Proxy with Requests

import os
from urllib.parse import quote

import requests

host = os.environ["WEPROXY_HOST"]
port = os.environ["WEPROXY_PORT"]
username = quote(os.environ["WEPROXY_USERNAME"], safe="")
password = quote(os.environ["WEPROXY_PASSWORD"], safe="")

proxy_url = f"http://{username}:{password}@{host}:{port}"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

response = requests.get(
    "https://api.ipify.org?format=json",
    proxies=proxies,
    timeout=30,
)
response.raise_for_status()
print(response.json())

A proxy URL that starts with http:// does not mean you cannot reach HTTPS destinations. Requests can tunnel HTTPS targets through an HTTP proxy. If your panel specifies a different scheme, follow the product details.

Using a Proxy with a Requests Session

To reuse the same setting across multiple requests, you can create a Session:

with requests.Session() as session:
    session.proxies.update(proxies)
    response = session.get("https://api.ipify.org?format=json", timeout=30)
    response.raise_for_status()
    print(response.json())

According to the Requests docs, proxy values in the system environment can override session.proxies. When you need a definite proxy choice, passing proxies=proxies directly on each request is more predictable.

Using a SOCKS5 Proxy

proxy_url = f"socks5h://{username}:{password}@{host}:{port}"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

response = requests.get(
    "https://api.ipify.org?format=json",
    proxies=proxies,
    timeout=30,
)
print(response.json())

With socks5h://, domain name resolution happens on the proxy side. With socks5://, DNS resolution happens on the client side.

Python Proxy Errors

407 Proxy Authentication Required

The username or password is wrong. Check that special characters were URL-encoded and that the product supports username/password authentication.

ProxyError or connection timeout

Verify the host, port, protocol, and package status. If the destination does not support IPv6, a connection with an IPv6 proxy may fail.

The real IP is visible

Confirm that the proxies dictionary was passed to the request. A NO_PROXY environment variable may be excluding the destination domain.

Source

Other integrations

Looking at another tool?

Get started

Connect with WeProxy now

Create an account, use 100 MB of free residential traffic right away, and follow the steps above in your own setup.