Shared Proxy Setup Workflow
FreshComplete workflow for creating and distributing shared proxies to clients.
Overview
Step 1: Plan Your Configuration
| Factor | UserAuth | IPAuth |
|---|---|---|
| Client has static IP | Either | Recommended |
| Client has dynamic IP | Recommended | Not suitable |
| Higher security | Good | Better |
| Easier for client | Yes | No (IP changes) |
Step 2: Create the Proxy
Option A: UserAuth HTTP Proxy
bash
curl -H "Authorization: Token YOUR_API_TOKEN" \
"http://YOUR_SERVER_IP/api/shared_proxy/add?\
index=1&\
proxy_type=HTTP&\
auth_type=UserAuth&\
user=client_acme&\
password=SecurePass123&\
comment=ACME_Corp_Main"Option B: IPAuth SOCKS Proxy
bash
curl -H "Authorization: Token YOUR_API_TOKEN" \
"http://YOUR_SERVER_IP/api/shared_proxy/add?\
index=1&\
proxy_type=SOCKS&\
auth_type=IPAuth&\
IP=203.0.113.50,203.0.113.51&\
comment=Partner_Office"Step 3: Add Limits (Optional)
Traffic-Limited Proxy for Resale
bash
curl -H "Authorization: Token YOUR_API_TOKEN" \
"http://YOUR_SERVER_IP/api/shared_proxy/add?\
index=2&\
proxy_type=HTTP&\
auth_type=UserAuth&\
user=reseller_client&\
password=ClientPass456&\
traffic_limit_amount=50000&\
traffic_limit_duration=month&\
bandwidth=100"Time-Limited Trial Proxy
bash
curl -H "Authorization: Token YOUR_API_TOKEN" \
"http://YOUR_SERVER_IP/api/shared_proxy/add?\
index=3&\
proxy_type=HTTP&\
auth_type=UserAuth&\
user=trial_user&\
password=TrialPass789&\
expire_date=2025-02-01&\
traffic_limit_amount=5000&\
traffic_limit_duration=week"Domain-Restricted Proxy
bash
curl -H "Authorization: Token YOUR_API_TOKEN" \
"http://YOUR_SERVER_IP/api/shared_proxy/add?\
index=4&\
proxy_type=HTTP&\
auth_type=UserAuth&\
user=restricted_user&\
password=RestrictPass&\
whitelist=example.com,api.example.com&\
blacklist=facebook.com,twitter.com"Step 4: Test the Proxy
Get Proxy Details
bash
curl -H "Authorization: Token YOUR_API_TOKEN" \
http://YOUR_SERVER_IP/api/shared_proxy/Test with cURL
bash
# Test HTTP proxy
curl -x http://client_acme:SecurePass123@YOUR_SERVER_IP:PORT \
https://httpbin.org/ip
# Test SOCKS proxy
curl --socks5 YOUR_SERVER_IP:PORT \
https://httpbin.org/ipStep 5: Client Distribution Template
Send this to your client:
PROXY CREDENTIALS
================
Type: HTTP/SOCKS5
Host: YOUR_SERVER_IP
Port: [PORT_FROM_API]
Username: [USERNAME]
Password: [PASSWORD]
CONFIGURATION EXAMPLES
=====================
Browser (Chrome):
Settings > System > Proxy settings
Manual proxy: YOUR_SERVER_IP:[PORT]
cURL:
curl -x http://[USER]:[PASS]@YOUR_SERVER_IP:[PORT] https://example.com
Python requests:
proxies = {
"http": "http://[USER]:[PASS]@YOUR_SERVER_IP:[PORT]",
"https": "http://[USER]:[PASS]@YOUR_SERVER_IP:[PORT]"
}
requests.get("https://example.com", proxies=proxies)
ROTATION
========
To rotate IP, visit:
http://YOUR_SERVER_IP/api/sproxy/rotate?proxy_port=[PORT]&proxy_pass=[PASSWORD]Step 6: Automation Script
Create multiple proxies programmatically:
python
import requests
class ProxyManager:
def __init__(self, server_ip, api_token):
self.base_url = f"http://{server_ip}"
self.headers = {"Authorization": f"Token {api_token}"}
def create_proxy(self, modem_index, username, password, **options):
params = {
"index": modem_index,
"proxy_type": options.get("proxy_type", "HTTP"),
"auth_type": "UserAuth",
"user": username,
"password": password,
**{k: v for k, v in options.items() if v is not None}
}
response = requests.get(
f"{self.base_url}/api/shared_proxy/add",
params=params,
headers=self.headers
)
return response.ok
def delete_proxy(self, port):
response = requests.get(
f"{self.base_url}/api/shared_proxy/delete",
params={"port": port},
headers=self.headers
)
return response.ok
def list_proxies(self):
response = requests.get(
f"{self.base_url}/api/shared_proxy/",
headers=self.headers
)
return response.json()
# Usage
manager = ProxyManager("192.168.1.100", "your_token")
# Create proxies for multiple clients
clients = [
{"username": "client1", "password": "pass1", "modem": 1},
{"username": "client2", "password": "pass2", "modem": 2},
{"username": "client3", "password": "pass3", "modem": 3},
]
for client in clients:
manager.create_proxy(
client["modem"],
client["username"],
client["password"],
traffic_limit_amount=10000,
traffic_limit_duration="month"
)Monitoring Checklist
- [ ] Proxy accessible from client network
- [ ] Authentication working
- [ ] Traffic limits enforced
- [ ] Bandwidth limits applied
- [ ] Expiration dates set correctly