import requests
# API credentials
API_PUBLIC_KEY = "your_public_key"
API_PRIVATE_KEY = "your_private_key"
BASE_URL = "https://api.pingproxies.com/1.0/public"
# Headers for authentication
headers = {
"X-API-Public-Key": API_PUBLIC_KEY,
"X-API-Private-Key": API_PRIVATE_KEY,
"Content-Type": "application/json"
}
def create_proxy_restricted_proxy_user(user_id, password, proxy_ids, metadata=None):
"""
Create a proxy user with proxy-restricted access.
Args:
user_id: ID for the proxy user
password: Password for the proxy user
proxy_ids: List of proxy IDs to grant access to
metadata: Optional metadata dictionary
Returns:
Tuple of (proxy_user_data, acl_ids) or (None, None) if failed
"""
# Step 1: Create the proxy user with proxy_restricted access type
create_user_payload = {
"proxy_user_id": user_id,
"proxy_user_password": password,
"proxy_user_access_type": "proxy_restricted"
}
if metadata:
create_user_payload["proxy_user_metadata"] = metadata
response = requests.post(
f"{BASE_URL}/user/proxy_user/create",
json=create_user_payload,
headers=headers
)
if response.status_code != 201:
print(f"Error creating proxy user: {response.status_code}")
print(response.text)
return None, None
user_data = response.json()
print(f"Successfully created proxy user: {user_id}")
# Step 2: Create ACL entries for each proxy
acl_ids = []
for proxy_id in proxy_ids:
acl_payload = {
"proxy_user_id": user_id,
"proxy_id": proxy_id
}
acl_response = requests.post(
f"{BASE_URL}/user/proxy_user_acl/create",
json=acl_payload,
headers=headers
)
if acl_response.status_code != 201:
print(f"Error creating ACL for proxy {proxy_id}: {acl_response.status_code}")
print(acl_response.text)
continue
acl_data = acl_response.json()
acl_id = acl_data["created"][0]
acl_ids.append(acl_id)
print(f"Granted access to proxy: {proxy_id}")
return user_data, acl_ids
# Example usage
if __name__ == "__main__":
# Create a reseller customer with access to 3 specific proxies
USER_ID = "customer_001"
PASSWORD = "securepassword456"
PROXY_IDS = [
"550e8400-e29b-41d4-a716-446655440001",
"550e8400-e29b-41d4-a716-446655440002",
"550e8400-e29b-41d4-a716-446655440003"
]
METADATA = {
"customer_type": "reseller",
"plan": "premium",
"order_id": "ORD-12345"
}
user_data, acl_ids = create_proxy_restricted_proxy_user(
user_id=USER_ID,
password=PASSWORD,
proxy_ids=PROXY_IDS,
metadata=METADATA
)
if user_data:
print("\n=== Setup Complete ===")
print(f"Proxy User ID: {USER_ID}")
print(f"Password: {PASSWORD}")
print(f"Access Type: proxy_restricted")
print(f"Proxies Granted: {len(PROXY_IDS)}")
print(f"ACL Entries Created: {len(acl_ids)}")