Python में प्रॉक्सियों को कैसे घुमाएं (requests और aiohttp)
रोटेशन उस स्क्रैपर के बीच का अंतर है जो एक IP को प्रतिबंधित करता है और एक जो कई पर लोड फैलाता है। यहां एक कार्यशील रोटेटर है जो समकालिक अनुरोधों और असिंक्रोनस aiohttp के लिए है, जिसमें स्वास्थ्य जांच और मृत निकासों की स्वचालित सेवानिवृत्ति शामिल है।
क्या रोटेशन वास्तव में हल करता है
साइट्स आईपी द्वारा दर-सीमा और प्रतिबंधित करती हैं। यदि हर अनुरोध एक ही पते से आता है, तो आप जल्दी ही सीमा तक पहुँच जाते हैं और एकल प्रतिबंध पूरे काम को रोक देता है। रोटेशन अनुरोधों को निकास के एक पूल में फैलाता है, ताकि प्रति आईपी लोड सीमा के नीचे रहे और एक मृत या अवरुद्ध निकास केवल आपको एक पुनः प्रयास की लागत देता है, न कि पूरे रन की। दो डिज़ाइन लगभग सब कुछ कवर करते हैं: राउंड-रॉबिन (क्रम में पूल के माध्यम से चक्रित, पूर्वानुमानित और समान) और यादृच्छिक (प्रत्येक अनुरोध के लिए चुनें, सरल और स्टेटलेस)।
The pool itself can come from two places. You can list several s4m endpoints and ports and rotate across them, or, for quick low-stakes tests, pull live entries from the free public proxy list — filtered by country, protocol and anonymity, though those third-party proxies are use-at-your-own-risk and die often. Production rotation should lean on authenticated datacenter proxies from s4m (SOCKS5 on 1080, HTTP on 3128, USER:PASS), which stay up and are metered so scaling the pool is cheap. This builds directly on scraping with requests.
अनुरोधों और aiohttp के लिए एक रोटेटर
एक पूल जो राउंड-रॉबिन करता है, विफलता पर पुनः प्रयास करता है, और उन निकासों को रिटायर करता है जो लगातार विफल होते हैं। समन्वयित और असामान्य संस्करण। USER:PASS को बदलें।
import asyncio, itertools, random
import requests, aiohttp
from aiohttp_socks import ProxyConnector # pip install aiohttp-socks
USER, PASS, HOST = "USER", "PASS", "proxy.s4m.online"
POOL = [
f"socks5h://{USER}:{PASS}@{HOST}:1080",
f"http://{USER}:{PASS}@{HOST}:3128",
# add more endpoints/ports here to widen the pool
]
# ---------- Synchronous: requests + round-robin + retirement ----------
class Rotator:
def __init__(self, pool):
self.alive = list(pool)
self.fails = {p: 0 for p in pool}
self._cycle = itertools.cycle(self.alive)
def pick(self):
return next(self._cycle)
def retire(self, proxy):
self.fails[proxy] += 1
if self.fails[proxy] >= 3 and proxy in self.alive:
self.alive.remove(proxy)
self._cycle = itertools.cycle(self.alive or POOL)
def get(url, rot, retries=4):
for _ in range(retries):
proxy = rot.pick()
try:
r = requests.get(url, proxies={"http": proxy, "https": proxy},
timeout=(5, 20))
r.raise_for_status()
return r
except requests.RequestException:
rot.retire(proxy)
raise SystemExit("pool exhausted")
rot = Rotator(POOL)
print(get("https://api.ipify.org", rot).text)
# ---------- Async: aiohttp, one connector per proxy ----------
async def fetch(url, proxy):
connector = ProxyConnector.from_url(proxy)
async with aiohttp.ClientSession(connector=connector) as s:
async with s.get(url, timeout=aiohttp.ClientTimeout(total=25)) as r:
return await r.text()
async def main():
tasks = [fetch("https://api.ipify.org", random.choice(POOL))
for _ in range(5)]
for ip in await asyncio.gather(*tasks, return_exceptions=True):
print(ip)
asyncio.run(main())महत्वपूर्ण डिज़ाइन विकल्प
वे नॉब्स जो तय करते हैं कि क्या रोटेशन मदद करता है या केवल चक्कर जोड़ता है।
राउंड-रॉबिन बनाम रैंडम
राउंड-रॉबिन लोड को समान रूप से फैलाता है और इसके बारे में सोचना आसान है; यादृच्छिक स्टेटलेस और सरल है। दोनों एकल निश्चित निकास को मात देते हैं - जब समान वितरण महत्वपूर्ण हो तो राउंड-रॉबिन चुनें।
मृत निकास को रिटायर करें
प्रत्येक प्रॉक्सी पर लगातार विफलताओं की गिनती करें और कुछ स्ट्राइक के बाद एक निकास को छोड़ दें, ताकि पूल स्वयं-स्वस्थ हो जाए बजाय इसके कि हमेशा एक मृत प्रॉक्सी पर पुनः प्रयास करें।
उपयोग से पहले स्वास्थ्य जांच
प्रत्येक प्रॉक्सी के माध्यम से एक IP-इको एंडपॉइंट को समय-समय पर हिट करें और केवल उन्हीं को रखें जो उत्तर देते हैं। जब पूल में अस्थिर मुफ्त सूची प्रविष्टियाँ शामिल होती हैं तो यह आवश्यक है।
पीछे हटें, दौड़ें नहीं
रोटेशन बाढ़ का लाइसेंस नहीं है। सीमाओं के तहत रहने के लिए प्रति-होस्ट देरी और गुणात्मक बैकऑफ जोड़ें, बजाय इसके कि कई IPs के बीच लड़ाई करें।
स्टिकी सत्र और ईमानदार सीमाएँ
Rotation is not always what you want. Some flows — a login, a cart, a multi-step form — need the same IP for the whole session, or the site sees a user teleporting between addresses and blocks it. That is a sticky session: rotate between jobs, stay fixed within one. When a workflow needs one guaranteed-stable address, add a dedicated personal IP instead of rotating.
छत के बारे में ईमानदार रहें। s4m प्रॉक्सी डेटासेंटर हैं, इसलिए उन्हें घुमाना दर सीमाओं और यहां तक कि लोड में मदद करता है लेकिन यह एंटी-बॉट सिस्टम से डेटासेंटर IP को छिपाने में मदद नहीं करेगा जो पूरे रेंज को ब्लॉक कर देता है। रोटेशन ब्राउज़र फिंगरप्रिंट या अनुरोध पैटर्न के बारे में भी कुछ नहीं करता है। इसका उपयोग एक परत के रूप में करें: इसे यथार्थवादी हेडर, बैकऑफ, और प्रत्येक साइट के नियमों का सम्मान करने के साथ जोड़ें। असिंक्रोनस टुकड़ों के लिए आपको SOCKS5 समर्थन के लिए aiohttp-socks की आवश्यकता होगी; उपकरणों के साथ निकास को मान्य करें और API के माध्यम से क्रेडेंशियल हैंडलिंग को स्वचालित करें।
प्रश्न, उत्तरित
मैं अनुरोधों के साथ प्रॉक्सियों को कैसे घुमाऊं?
प्रॉक्सी URLs की एक सूची रखें और प्रत्येक अनुरोध के लिए एक चुनें — राउंड-रॉबिन या यादृच्छिक — इसे प्रॉक्सीज़ तर्क के रूप में पास करें। कुछ लगातार विफलताओं के बाद एक निकासी को रिटायर करें ताकि पूल स्वयं-स्वस्थ हो सके। ऊपर का उदाहरण एक पूर्ण रोटेटर दिखाता है।
मैं aiohttp के साथ प्रॉक्सियों को कैसे घुमाऊं?
aiohttp HTTP के लिए प्रति अनुरोध प्रॉक्सी सेट करता है, लेकिन SOCKS5 के लिए आपको प्रति प्रॉक्सी एक ProxyConnector (aiohttp-socks से) बनाना होता है और इसके साथ एक सत्र बनाना होता है। asyncio.gather के साथ पूल में कार्यों को फैलाएं।
मुझे प्रॉक्स कब नहीं घुमाना चाहिए?
जब एक कार्यप्रवाह को एक सुसंगत पहचान की आवश्यकता होती है — लॉगिन, कार्ट, बहु-चरण फ़ॉर्म। सत्र के मध्य में IP बदलना संदिग्ध लगता है और ब्लॉक हो जाता है। उन प्रवाहों के लिए एक चिपचिपा सत्र या एक समर्पित IP का उपयोग करें।
क्या घुमाने वाली डाटासेंटर प्रॉक्सियाँ सभी ब्लॉकों से बचेंगी?
नहीं। रोटेशन लोड फैलाता है और प्रति-IP दर सीमाओं से बचता है, लेकिन डेटा सेंटर रेंज को आक्रामक एंटी-बॉट सिस्टम द्वारा समग्र रूप से चिह्नित किया जा सकता है, और रोटेशन आपके ब्राउज़र की फिंगरप्रिंट या व्यवहार को नहीं बदलता है।
वास्तविक निकास के बीच घुमाएँ
प्रॉक्सी.s4m.online पर प्रमाणित डेटा सेंटर SOCKS5 और HTTP प्रॉक्सियों के साथ अपने पूल को विस्तारित करें, मीटर किए गए ताकि स्केलिंग सस्ती हो। चिपचिपे सत्र के चरणों के लिए एक समर्पित IP जोड़ें।
लोगों ने इस पृष्ठ को खोजकर पाया
- Python में प्रॉक्सियों को कैसे घुमाएं (requests और aiohttp)
- सर्वश्रेष्ठ स्क्रैपिंग के लिए प्रॉक्सी 2026
- स्क्रैपिंग के लिए प्रॉक्सी मूल्य
- स्क्रैपिंग के लिए प्रॉक्सी
- http प्रॉक्सी क्या है
- ISP (स्थिर आवासीय) प्रॉक्सी क्या हैं
- Windows पर VPN किल स्विच
- socks5 प्रॉक्सी समझाया गया
- क्या मुफ्त प्रॉक्सी सूची सुरक्षित है
- HTTP 407 प्रॉक्सी प्रमाणीकरण आवश्यक
- मुफ्त प्रॉक्सी सूची बिना पंजीकरण के
- प्रॉक्सी प्रमाणीकरण
वास्तविक खोज वाक्यांश जिनका यह पृष्ठ उत्तर देता है — लिंक किए गए वाक्यांश उस पृष्ठ को खोलते हैं जो उन्हें गहराई से कवर करता है।