Integrating Python Requests & curl_cffi with XProxy
Learn how to route Python Requests and TLS-impersonated curl_cffi scrapers through XProxy 4G/5G mobile proxies with automated IP rotation triggers on HTTP 429/403 rate limits.
Why use XProxy with Python Requests & curl_cffi?
Python Requests and curl_cffi (which mimics Chrome/Firefox TLS fingerprints at the socket level) are the most popular libraries for fast, lightweight web scraping. Routing your Python scripts through XProxy self-hosted 4G/5G mobile proxies lets you bypass Cloudflare TLS fingerprinting and IP rate limits with unlimited data throughput.
Prerequisites
- Python 3.8+ with
requestsandcurl_cffiinstalled (pip install requests curl_cffi). - XProxy server running with active 4G/5G USB dongles or Android phones.
- Proxy credentials (IP, Port, Username, Password, Rotation API Link) from XProxy Dashboard.
1. Standard Python Requests Example
Below is a complete script demonstrating automatic XProxy IP rotation when receiving HTTP 429 or 403 status codes:
import time
import requests
# --- XProxy Configuration ---
PROXIES = {
"http": "http://username:[email protected]:5001",
"https": "http://username:[email protected]:5001",
}
ROTATION_API_URL = "http://192.168.6.7:8081/api/v1/rotate_ip/position/1"
def rotate_xproxy_ip():
"""Trigger 4G/5G cellular reconnection on XProxy."""
print("🔄 Triggering XProxy IP rotation...")
try:
res = requests.get(ROTATION_API_URL, timeout=10)
if res.status_code == 200:
print("✅ IP rotation requested. Waiting 6 seconds for 4G reconnect...")
time.sleep(6)
return True
except Exception as e:
print(f"❌ Rotation error: {e}")
return False
def scrape_url(url):
for attempt in range(3):
try:
response = requests.get(url, proxies=PROXIES, timeout=15)
# Handle rate limits or anti-bot blocks
if response.status_code in (429, 403):
print(f"⚠️ Encountered HTTP {response.status_code}. Rotating IP...")
rotate_xproxy_ip()
continue
print(f"✅ Success ({response.status_code}): {response.text[:100]}")
return response
except requests.exceptions.RequestException as e:
print(f"❌ Request error: {e}. Retrying with new IP...")
rotate_xproxy_ip()
if __name__ == "__main__":
scrape_url("https://api.ipify.org?format=json")2. TLS Impersonation with `curl_cffi`
To bypass Cloudflare & Akamai TLS fingerprint checks while using XProxy 4G/5G mobile IPs, use curl_cffi to spoof real Chrome browser TLS signatures:
from curl_cffi import requests
# Configure SOCKS5 or HTTP proxy with Chrome TLS impersonation
proxy_url = "socks5://username:[email protected]:5001"
response = requests.get(
"https://tls.browserleaks.com/json",
proxies={"http": proxy_url, "https": proxy_url},
impersonate="chrome120", # Impersonate Chrome 120 TLS fingerprint
timeout=15
)
print("Status Code:", response.status_code)
print("TLS Response:", response.json())Frequently Asked Questions
- Q: Should I use HTTP or SOCKS5 with Python Requests?
A: Standardrequestsworks great with HTTP proxies. For SOCKS5 support in Python Requests, installrequests[socks](e.g.socks5h://user:[email protected]:5001).
Why High-Quality SOCKS5 UDP & Mobile Proxies Matter for Python Requests & Scrapers
Using cheap datacenter proxies or basic HTTP proxies in antidetect profiles leads to instant account suspensions on Facebook, Google, TikTok, and Amazon. Here is why XProxy's self-hosted 4G/5G mobile proxies deliver superior anonymity and trust:
- SOCKS5 with Full UDP Support: Unlike standard HTTP proxies that drop UDP packets, XProxy SOCKS5 proxies fully support UDP datagrams. This ensures WebRTC, DNS queries, and real-time audio/video sockets route securely through your proxy without revealing your real IP address.
- Instant REST API IP Rotation: Trigger cellular IP rotation on demand via simple HTTP GET requests (e.g.
http://192.168.6.7:8081/api/v1/rotate_ip/position/1). Reconnect 4G/5G USB modems in 3 to 8 seconds with zero proxy dropouts. - 100% WebRTC & DNS Leak Protection: Combined with XProxy's local LAN gateway and TCP OS Spoofing, your browser profiles maintain pristine anonymity scores on BrowserLeaks, Whoer, Pixelscan, and IPhey.
- Carrier-Grade NAT (CGNAT) Trust: Mobile carrier IPs are shared by thousands of active smartphone users. Major platforms never ban mobile IP ranges, granting your accounts maximum trust.

