कम success rate के कारण का निदान कैसे करें: चरण-दर-चरण गाइड
Success rate कुल प्रयासों की संख्या से सफल अनुरोधों का प्रतिशत है। जब यह संकेतक सामान्य से नीचे गिरता है, तो पैसा, समय और डेटा खो जाता है। लेकिन कारण दर्जनों हो सकते हैं: गलत कॉन्फ़िगरेशन से लेकर लक्ष्य सर्वर के ब्लॉकिंग तक। इस लेख में हम निदान के लिए एक व्यवस्थित दृष्टिकोण देखेंगे और समाधान खोजेंगे।
Success rate क्या है और सामान्य मानदंड क्या हैं
Success rate (SR) = (सफल अनुरोध / कुल अनुरोध) × 100%
सामान्य मान कार्य के प्रकार पर निर्भर करते हैं:
| कार्य | सामान्य SR | गंभीर स्तर |
|---|---|---|
| सार्वजनिक डेटा पार्सिंग | 95–99% | 85% से कम |
| SMM-स्वचालन | 90–97% | 80% से कम |
| विज्ञापन सत्यापन | 98–99.5% | 95% से कम |
| API एकीकरण | 99–99.9% | 98% से कम |
यदि SR आपकी बेसलाइन से 5–10% गिरता है — यह निदान के लिए एक संकेत है। यदि 20%+ गिरता है — तुरंत कार्रवाई की आवश्यकता है।
निदान के पहले कदम
चरण 1: लॉग और मेट्रिक्स की जांच करें
पिछले 24–72 घंटों के डेटा एकत्र करें:
- SR कब गिरा? (सटीक समय)
- कितने प्रतिशत अनुरोध 407 त्रुटि (Proxy Authentication Required) देते हैं?
- कितने प्रतिशत — 429 (बहुत सारे अनुरोध)?
- कितने प्रतिशत — टाइमआउट (connection timeout)?
- क्या लोड बदल गया है (RPS — प्रति सेकंड अनुरोध)?
चरण 2: अलग से परीक्षण करें
अपने एप्लिकेशन के बिना प्रॉक्सी की जांच के लिए एक सरल स्क्रिप्ट का उपयोग करें:
import requests
import time
proxy = "http://proxy_ip:port"
proxies = {"http": proxy, "https": proxy}
target_url = "https://httpbin.org/ip"
success = 0
failed = 0
for i in range(100):
try:
response = requests.get(
target_url,
proxies=proxies,
timeout=10,
verify=False
)
if response.status_code == 200:
success += 1
print(f"✓ प्रयास {i+1}: सफल")
else:
failed += 1
print(f"✗ प्रयास {i+1}: स्थिति {response.status_code}")
except Exception as e:
failed += 1
print(f"✗ प्रयास {i+1}: {str(e)}")
time.sleep(0.5)
sr = (success / (success + failed)) * 100
print(f"\nSuccess Rate: {sr:.1f}%")
print(f"सफल: {success}, त्रुटियां: {failed}")
यदि यह परीक्षण सामान्य SR दिखाता है — समस्या आपके कोड या कॉन्फ़िगरेशन में है। यदि SR यहां भी कम है — समस्या प्रॉक्सी या लक्ष्य सर्वर में है।
प्रॉक्सी की ओर से समस्याएं
त्रुटि 407: Proxy Authentication Required
कारण:
- गलत क्रेडेंशियल (लॉगिन/पासवर्ड)
- खाते की वैधता समाप्त हो गई
- IP पता व्हाइटलिस्ट में नहीं है (यदि आवश्यक हो)
- IP रोटेशन काम नहीं कर रहा या अक्षम है
समाधान:
import requests
# आवासीय प्रॉक्सी के लिए सही प्रारूप
proxy = "http://login:password@proxy-host:port"
proxies = {"http": proxy, "https": proxy}
# परीक्षण
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print(response.text)
प्रॉक्सी सर्वर का अधिभार
यदि सेवा के सभी उपयोगकर्ता एक साथ बड़ी संख्या में अनुरोध भेज रहे हैं, तो RPS (प्रति सेकंड अनुरोध) में सीमा हो सकती है। यह दुर्लभ है, लेकिन होता है।
जांचें:
- आपकी वर्तमान पीक RPS
- आपकी टैरिफ की सीमाएं
- क्या लॉग में 429 त्रुटियां हैं
समाधान: अनुरोधों के बीच देरी जोड़ें या अपनी टैरिफ अपग्रेड करें।
IP पते की गुणवत्ता
आवासीय प्रॉक्सी के लिए कम SR का मतलब हो सकता है कि आपको ब्लॉक किए गए पते दिए जा रहे हैं। जांचें:
- कितने प्रतिशत IP पते 403 Forbidden देते हैं?
- क्या एक ही पते दोहराए जाते हैं?
- क्या कोई पैटर्न है — एक देश/क्षेत्र काम करता है, दूसरा नहीं?
लक्ष्य सर्वर के ब्लॉकिंग और फ़िल्टर
त्रुटि 429: बहुत सारे अनुरोध
लक्ष्य सर्वर एक IP से या कुल मिलाकर बहुत सारे अनुरोध देख रहा है। समाधान:
- देरी जोड़ें: `time.sleep(random.uniform(1, 3))`
- IP रोटेशन का उपयोग करें: प्रत्येक अनुरोध — नया IP
- RPS कम करें: अनुरोध क्रमिक रूप से भेजें, समानांतर में नहीं
- यथार्थवादी हेडर जोड़ें: User-Agent, Referer, Accept-Language
त्रुटि 403 Forbidden
सर्वर ने आपके IP (या प्रॉक्सी IP) को ब्लॉक कर दिया है। यह हो सकता है:
- भौगोलिक स्थान द्वारा फ़िल्टर
- प्रॉक्सी सेवाओं की ब्लैकलिस्ट
- बॉट डिटेक्टर (JavaScript, CAPTCHA)
समाधान: मोबाइल प्रॉक्सी या आवासीय प्रॉक्सी रोटेशन के साथ उपयोग करें। वे ब्लॉकिंग के लिए अधिक कठिन हैं।
त्रुटि 403: User-Agent जांच
कुछ सेवाएं संदिग्ध User-Agent के साथ अनुरोधों को अस्वीकार करती हैं:
import requests
import random
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15"
]
headers = {
"User-Agent": random.choice(user_agents),
"Accept-Language": "en-US,en;q=0.9",
"Accept": "text/html,application/xhtml+xml",
"Referer": "https://google.com"
}
response = requests.get(
"https://target-site.com",
headers=headers,
proxies={"http": proxy, "https": proxy},
timeout=10
)
print(response.status_code)
क्लाइंट कोड में त्रुटियां
अपवाद हैंडलिंग में त्रुटि
सामान्य त्रुटि: कोड कनेक्शन त्रुटि को विफल अनुरोध मानता है, लेकिन पुनः कनेक्ट करने का प्रयास नहीं करता:
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# पुनः प्रयास के साथ सही तरीका
session = requests.Session()
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["GET", "POST"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("http://", adapter)
session.mount("https://", adapter)
try:
response = session.get(url, proxies=proxies, timeout=10)
except requests.exceptions.RequestException as e:
print(f"त्रुटि: {e}")
# लॉग करें और अगले अनुरोध पर जाएं
गलत टाइमआउट
यदि टाइमआउट बहुत कम है (1–2 सेकंड), तो धीमे प्रॉक्सी को अस्वीकार कर दिया जाएगा:
- सामान्य पार्सिंग के लिए: 10–30 सेकंड
- मोबाइल प्रॉक्सी के लिए: 15–45 सेकंड
- API के लिए: 5–10 सेकंड
SSL/TLS त्रुटियां
यदि आप `verify=False` का उपयोग करते हैं, तो यह वास्तविक समस्याओं को छिपा सकता है। सर्टिफिकेट अपडेट करना बेहतर है:
import requests
import certifi
# सही तरीका
response = requests.get(
url,
proxies=proxies,
verify=certifi.where(), # verify=False की जगह
timeout=15
)
नेटवर्क समस्याएं और टाइमआउट
Connection timeout बनाम Read timeout
अंतर महत्वपूर्ण है:
- Connection timeout: प्रॉक्सी प्रतिक्रिया नहीं दे रहा (प्रॉक्सी या नेटवर्क में समस्या)
- Read timeout: लक्ष्य सर्वर धीरे डेटा भेज रहा है (लक्ष्य सर्वर में समस्या)
import requests
# timeout = (connection_timeout, read_timeout)
try:
response = requests.get(
url,
proxies=proxies,
timeout=(5, 15) # कनेक्शन के लिए 5 सेक, पढ़ने के लिए 15
)
except requests.exceptions.ConnectTimeout:
print("प्रॉक्सी प्रतिक्रिया नहीं दे रहा")
except requests.exceptions.ReadTimeout:
print("लक्ष्य सर्वर धीमा है")
DNS समस्याएं
यदि लक्ष्य सर्वर रिज़ॉल्व नहीं होता है, तो यह प्रॉक्सी त्रुटि नहीं है:
import socket
# प्रॉक्सी के बिना DNS की जांच करें
try:
ip = socket.gethostbyname("target-site.com")
print(f"रिज़ॉल्व होता है: {ip}")
except socket.gaierror:
print("DNS त्रुटि — साइट नहीं मिली")
कम SR के निदान की चेकलिस्ट
- बेसलाइन स्थापित करें: पहले SR क्या सामान्य था?
- अलग परीक्षण चलाएं (ऊपर स्क्रिप्ट) 100 अनुरोधों के साथ
- लॉग की जांच करें: कौन से HTTP कोड प्रमुख हैं? (407, 429, 403, टाइमआउट?)
- यदि 407: लॉगिन/पासवर्ड और IP व्हाइटलिस्ट की जांच करें
- यदि 429: अनुरोधों के बीच देरी जोड़ें, IP रोटेशन का उपयोग करें
- यदि 403: User-Agent, Referer की जांच करें, यथार्थवादी हेडर जोड़ें
- यदि टाइमआउट: टाइमआउट बढ़ाएं, RPS की जांच करें, retry-लॉजिक का उपयोग करें
- अपने कोड की जांच करें: सही अपवाद हैंडलिंग, सही टाइमआउट
- लक्ष्य सर्वर की जांच करें: क्या यह सीधे उपलब्ध है (प्रॉक्सी के बिना)?
- यदि कुछ भी काम नहीं करता: प्रॉक्सी का एक अलग प्रकार या अलग प्रदाता आजमाएं
तेजी से निदान तालिका
| HTTP कोड | संभावित कारण | समाधान |
|---|---|---|
| 407 | प्रॉक्सी क्रेडेंशियल गलत हैं | लॉगिन/पासवर्ड, IP व्हाइटलिस्ट की जांच करें |
| 429 | बहुत सारे अनुरोध | देरी जोड़ें, IP रोटेशन का उपयोग करें |
| 403 | IP ब्लॉक या बॉट डिटेक्टर | यथार्थवादी हेडर जोड़ें, मोबाइल प्रॉक्सी का उपयोग करें |
| Timeout | प्रॉक्सी धीमा या लक्ष्य सर्वर अधिभारित | टाइमआउट बढ़ाएं, RPS की जांच करें |
| Connection refused | प्रॉक्सी सर्वर उपलब्ध नहीं | IP:port की जांच करें, प्रॉक्सी स्थिति की जांच करें |
निष्कर्ष
कम success rate एक लक्षण है, बीमारी नहीं। कारण कई हो सकते हैं: कोड में टाइपो से लेकर लक्ष्य सर्वर द्वारा ब्लॉकिंग तक। व्यवस्थित निदान समाधान की कुंजी है:
- मेट्रिक्स और लॉग की जांच करें
- समस्या को अलग करें (प्रॉक्सी बनाम लक्ष्य सर्वर बनाम आपका कोड)
- त्रुटि का प्रकार निर्धारित करें (407, 429, 403, टाइमआउट)
- उपयुक्त समाधान लागू करें
उच्च SR और विश्वसनीयता की आवश्यकता वाले कार्यों के लिए, IP रोटेशन के साथ आवासीय प्रॉक्सी की सिफारिश की जाती है। वे पहचान के लिए अधिक कठिन हैं और अधिक स्थिर हैं। proxycove.com पर एक मुफ्त परीक्षण आजमाएं और अपने कार्य पर परीक्षण करें।