لماذا تستخدم المحترفين في (بيثون)؟
(بيثون) يهيمن على مشهد استخراج البيانات المكتبات مثل الطلبات.. httpxو Scrapy اجعل شرطة (هيتيم) تتصل بـ (تريفيال) لكن بدون محترفين، نُصّكَ تُسقطُ حظراً في غضون دقائق استخدام محترفون في بيتسون دعك من تناوب عناوين IP، وتجاوز القيود الجيولوجية، ومقياس عمليات الخردة الخاصة بك بشكل موثوق.
في هذا الدليل، ستتعلم كيف تدمج العملاء في (بايتون) باستخدام ProxyHat Python SDK and the standard requests المكتبة كل قسم يتضمن رمزاً لقراءة النسخ يمكنك تشغيله على الفور
سواء كنت تبني خط أنابيب الخردة على شبكة الإنترنتالرصد SERP resultsويشمل هذا الدليل، أو جمع بيانات التسعير، التوثيق، والتناوب العميل، والهدف الجغرافي، ومناولة الأخطاء، والارتقاء بالإنتاج.
التركيب والإنشاء
Installing the ProxyHat SDK and requests
"إتركوا "بروكسيهات بيثون requests مكتبة تستخدم بيب:
pip install proxyhat requestsبالنسبة لتدفقات عمل الأسينك، أيضاً httpx و aiohttp:
pip install httpx aiohttpالحصول على وثائق تفويضك
وقع ProxyHat وإستعادة مفتاحك من لوحة التحكم سوف تحتاج اسم المستخدم و كلمة السر (أو مفتاح API) للتوثيق المحترف. وترد تفاصيل التوثيق الكامل في المرفق الأول وثائق الإثبات.
التوثيق والمفاوضة الأساسية
(بإستعمال (بروكسي هات SDK
تولّى (سي دي كي) التوثيق والتناوب وإدارة الاتصالات لك
from proxyhat import ProxyHat
client = ProxyHat(
api_key="your_api_key_here"
)
# Test the connection
info = client.get_account_info()
print(f"Traffic remaining: {info['traffic_remaining']} GB")استخدام وثائق تفويض بروسي راو مع الطلبات
إذا كنت تفضل استخدام requests مباشرةً، يَخْيّنُ الوكيلَ URL:
import requests
proxy_url = "http://username:password@gate.proxyhat.com:8080"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
response = requests.get(
"https://httpbin.org/ip",
proxies=proxies,
timeout=30
)
print(response.json())
# {"origin": "185.xxx.xxx.xxx"}بسيطة طلب مع الوكيل
وها هو مثال كامل يُرسل طلباً للحصول على نظام جي تي من خلال وكيل سكني تابع للشركة:
from proxyhat import ProxyHat
client = ProxyHat(api_key="your_api_key_here")
# Make a proxied GET request
response = client.get("https://httpbin.org/ip")
print(f"Status: {response.status_code}")
print(f"IP: {response.json()['origin']}")
print(f"Headers: {response.headers}")أو بالمعيار requests المكتبة:
import requests
proxies = {
"http": "http://user:pass@gate.proxyhat.com:8080",
"https": "http://user:pass@gate.proxyhat.com:8080",
}
response = requests.get(
"https://example.com/api/data",
proxies=proxies,
timeout=30,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
)
print(response.status_code)
print(response.text[:500])اختيار نوع الوكيل الصحيح
يقدم (بروكس هات) ثلاثة أنواع محترفة اختر بناء على قضية استخدامك. لمقارنة أعمق، قراءة دليلنا على مركز بيانات ضد شركات متنقلة.
| النوع | الأفضل | السرعة | مخاطر الكشف | التكلفة |
|---|---|---|---|---|
| السكن | (ج) الخردة على شبكة الإنترنت، تتبع نظام تخطيط الموارد المؤسسية | متوسطة | منخفض جدا | Per GB |
| مركز البيانات | المهام البالغة الأهمية والسرعة | بسرعة | أعلى | في الشهر |
| متنقلة | وسائل الإعلام الاجتماعية، اختبار التطبيق | متوسطة | منخفض | Per GB |
تغيير أنواع السلوك في القانون
from proxyhat import ProxyHat
client = ProxyHat(api_key="your_api_key_here")
# Residential proxy (default)
response = client.get(
"https://example.com",
proxy_type="residential"
)
# Datacenter proxy
response = client.get(
"https://example.com",
proxy_type="datacenter"
)
# Mobile proxy
response = client.get(
"https://example.com",
proxy_type="mobile"
)التناوب ضد الدورات المرنة
المحترفون المتناوبون يُعيّنُ a آي بي جديد كُلّ طلبِ، مثالي للخردةِ الواسعةِ حيث تَحتاجُ كحدّ أقصى هوية. جلسات صعبة (ب) أن تبقي على نفس البرنامج لفترة محددة، وهو أمر أساسي لتدفقات العمل المتعددة الخطوات مثل تسلسلات قطع الأشجار أو الملاحة المهددة.
Protating Proxies (New IP each Request)
from proxyhat import ProxyHat
client = ProxyHat(api_key="your_api_key_here")
urls = [
"https://httpbin.org/ip",
"https://httpbin.org/ip",
"https://httpbin.org/ip",
]
for url in urls:
response = client.get(url, session_type="rotating")
print(f"IP: {response.json()['origin']}")
# Each request uses a different IP:
# IP: 185.xxx.xxx.1
# IP: 92.xxx.xxx.47
# IP: 78.xxx.xxx.203جلسات صعبة (صفة IP for Duration)
from proxyhat import ProxyHat
client = ProxyHat(api_key="your_api_key_here")
# Create a sticky session (maintains IP for up to 30 minutes)
session = client.create_session(duration_minutes=30)
# All requests in this session use the same IP
for page in range(1, 6):
response = session.get(f"https://example.com/products?page={page}")
print(f"Page {page}: IP {response.headers.get('X-Proxy-IP')}")
# Same IP across all pages:
# Page 1: IP 185.xxx.xxx.42
# Page 2: IP 185.xxx.xxx.42
# Page 3: IP 185.xxx.xxx.42الطلبات ذات الأهداف الجغرافية
هل تحتاج إلى بيانات من بلد معين؟ ProxyHat supports الهدف الجغرافي عبر 195 موقعا +وهذا أمر بالغ الأهمية بالنسبة لحصر نظام تخطيط الموارد في المؤسسة، ورصد الأسعار، والتحقق من المحتوى.
from proxyhat import ProxyHat
client = ProxyHat(api_key="your_api_key_here")
# Target a specific country
response = client.get(
"https://www.google.com/search?q=best+restaurants",
country="US"
)
# Target a specific city
response = client.get(
"https://www.google.com/search?q=best+restaurants",
country="US",
city="New York"
)
# Using raw proxy URL with geo-targeting
# Format: username-country-US:password@gate.proxyhat.com:8080
import requests
proxies = {
"http": "http://user-country-DE:pass@gate.proxyhat.com:8080",
"https": "http://user-country-DE:pass@gate.proxyhat.com:8080",
}
response = requests.get("https://www.google.de", proxies=proxies, timeout=30)
print(f"Accessed from Germany: {response.status_code}")التعامل مع الأخطاء ومعالجتها
وتفشل طلبات الشبكة. وقت مستقطع الأهداف تمنعك الخطأ القوي مناولة الخردة الانتاجية تفصل عن نصوص اللعب
مركز ريتري الأساسي
import time
import requests
from requests.exceptions import ProxyError, Timeout, ConnectionError
def fetch_with_retry(url, proxies, max_retries=3, timeout=30):
"""Fetch a URL with automatic retry on failure."""
for attempt in range(max_retries):
try:
response = requests.get(
url,
proxies=proxies,
timeout=timeout,
headers={"User-Agent": "Mozilla/5.0"}
)
response.raise_for_status()
return response
except (ProxyError, Timeout, ConnectionError) as e:
wait = 2 ** attempt # Exponential backoff
print(f"Attempt {attempt + 1} failed: {e}. Retrying in {wait}s...")
time.sleep(wait)
except requests.exceptions.HTTPError as e:
if e.response.status_code == 429:
wait = 10 * (attempt + 1)
print(f"Rate limited. Waiting {wait}s...")
time.sleep(wait)
elif e.response.status_code >= 500:
time.sleep(2 ** attempt)
else:
raise
raise Exception(f"Failed to fetch {url} after {max_retries} attempts")
# Usage
proxies = {
"http": "http://user:pass@gate.proxyhat.com:8080",
"https": "http://user:pass@gate.proxyhat.com:8080",
}
response = fetch_with_retry("https://example.com/data", proxies)(بإستعمال بناء (س.د.ك
from proxyhat import ProxyHat
client = ProxyHat(
api_key="your_api_key_here",
max_retries=3,
timeout=30,
retry_on_status=[429, 500, 502, 503]
)
# The SDK handles retries automatically
response = client.get("https://example.com/data")
print(response.status_code)تسلل متزامن مع خيط
الطلبات المتسلسلة بطيئة "لأعباء الإنتاج، استخدموا "بايتون concurrent.futures لتوازي الطلبات من خلال العملاء.
from concurrent.futures import ThreadPoolExecutor, as_completed
from proxyhat import ProxyHat
client = ProxyHat(api_key="your_api_key_here")
urls = [
"https://example.com/product/1",
"https://example.com/product/2",
"https://example.com/product/3",
"https://example.com/product/4",
"https://example.com/product/5",
]
def scrape(url):
"""Scrape a single URL through the proxy."""
response = client.get(url, proxy_type="residential")
return {"url": url, "status": response.status_code, "length": len(response.text)}
# Run 5 concurrent requests
results = []
with ThreadPoolExecutor(max_workers=5) as executor:
futures = {executor.submit(scrape, url): url for url in urls}
for future in as_completed(futures):
try:
result = future.result()
results.append(result)
print(f"OK: {result['url']} ({result['length']} bytes)")
except Exception as e:
print(f"Error: {futures[future]} - {e}")
print(f"\nCompleted: {len(results)}/{len(urls)}")Async Scraping with asyncio and httpx
import asyncio
import httpx
async def scrape_urls(urls, proxy_url, max_concurrent=10):
"""Scrape multiple URLs concurrently using async proxies."""
semaphore = asyncio.Semaphore(max_concurrent)
async def fetch(client, url):
async with semaphore:
response = await client.get(url, timeout=30)
return {"url": url, "status": response.status_code}
async with httpx.AsyncClient(proxy=proxy_url) as client:
tasks = [fetch(client, url) for url in urls]
return await asyncio.gather(*tasks, return_exceptions=True)
# Usage
proxy_url = "http://user:pass@gate.proxyhat.com:8080"
urls = [f"https://example.com/page/{i}" for i in range(1, 51)]
results = asyncio.run(scrape_urls(urls, proxy_url))
successful = [r for r in results if not isinstance(r, Exception)]
print(f"Scraped {len(successful)}/{len(urls)} pages")التكامل مع المكتبات الشعبية
استخدام الطلبات (المنحة)
import requests
session = requests.Session()
session.proxies = {
"http": "http://user:pass@gate.proxyhat.com:8080",
"https": "http://user:pass@gate.proxyhat.com:8080",
}
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
})
# All requests in this session use the proxy
response = session.get("https://example.com/api/products")
print(response.json())استخدام مع الموقع الشبكي
import httpx
proxy_url = "http://user:pass@gate.proxyhat.com:8080"
# Synchronous
with httpx.Client(proxy=proxy_url) as client:
response = client.get("https://httpbin.org/ip")
print(response.json())
# Asynchronous
async with httpx.AsyncClient(proxy=proxy_url) as client:
response = await client.get("https://httpbin.org/ip")
print(response.json())استخدام مع aiohttp
import aiohttp
import asyncio
async def fetch_with_aiohttp():
proxy_url = "http://user:pass@gate.proxyhat.com:8080"
async with aiohttp.ClientSession() as session:
async with session.get(
"https://httpbin.org/ip",
proxy=proxy_url,
timeout=aiohttp.ClientTimeout(total=30)
) as response:
data = await response.json()
print(f"IP: {data['origin']}")
asyncio.run(fetch_with_aiohttp())تستخدم مع Scrapy
أضف (بروكسي هات) إلى عنكبوتك الخرقاء عن طريق تشكيل settings.py:
# settings.py
DOWNLOADER_MIDDLEWARES = {
"scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware": 110,
}
HTTP_PROXY = "http://user:pass@gate.proxyhat.com:8080"
# Or set per-request in your spider:
import scrapy
class ProductSpider(scrapy.Spider):
name = "products"
start_urls = ["https://example.com/products"]
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(
url,
meta={"proxy": "http://user:pass@gate.proxyhat.com:8080"},
callback=self.parse
)
def parse(self, response):
for product in response.css(".product-card"):
yield {
"name": product.css("h2::text").get(),
"price": product.css(".price::text").get(),
}الإنتاج
تجميع وتوقيت
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
session = requests.Session()
# Configure retry strategy
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504],
)
adapter = HTTPAdapter(
max_retries=retry_strategy,
pool_connections=10,
pool_maxsize=20
)
session.mount("http://", adapter)
session.mount("https://", adapter)
session.proxies = {
"http": "http://user:pass@gate.proxyhat.com:8080",
"https": "http://user:pass@gate.proxyhat.com:8080",
}
# Robust, production-ready request
response = session.get("https://example.com/data", timeout=(5, 30))
print(response.status_code)التسجيل والرصد
import logging
import time
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s")
logger = logging.getLogger("scraper")
def monitored_request(session, url):
"""Log request timing and status for monitoring."""
start = time.time()
try:
response = session.get(url, timeout=30)
elapsed = time.time() - start
logger.info(f"OK {response.status_code} {url} ({elapsed:.2f}s)")
return response
except Exception as e:
elapsed = time.time() - start
logger.error(f"FAIL {url} ({elapsed:.2f}s): {e}")
raiseالتغيرات البيئية في وثائق التفويض
لا توجد أوراق إعتماد متغيرات البيئة المستعملة:
import os
from proxyhat import ProxyHat
client = ProxyHat(
api_key=os.environ["PROXYHAT_API_KEY"]
)
# Or with raw proxy URL
proxy_url = os.environ.get(
"PROXY_URL",
"http://user:pass@gate.proxyhat.com:8080"
)لقائمة كاملة من الخطط البديلة وخيارات المرور الصفحة- للاطلاع على حالات الاستخدام المتقدمة والإشارة النهائية، انظر: وثائق APIيمكنك أيضا استكشاف دليلنا عن أفضل عملاء لخردة الإنترنت في عام 2026 لمقارنات مقدمي الخدمات.
المداخل الرئيسية
- في قيادة واحدة:
pip install proxyhat requestsيجعلك تبدأ على الفور- إستعملْ SDK للبساطةِ: ويتعامل مكتب المدعي العام (بيثون) مع التوثيق، وال retries، والتناوب تلقائياً.
- اختر من النوع المناسب سكني للخردة، مركز بيانات للسرعة، متنقل للمنصات الاجتماعية.
- تناوب ضد عصا: (ب) استخدام البركات الدوارة في الخردة السائبة وجلسات ملتصقة لتدفقات العمل المتعددة الخطوات.
- الهدف الجغرافي عند الحاجة: تحديد البلد والمدينة لجمع البيانات المحلية.
- الأخطاء اليدوية: تنفيذ منطق التخلف وإعادة التجفيف من أجل موثوقية الإنتاج.
- Scale with concurrency: الاستخدام
ThreadPoolExecutorأوasyncioلتوازي الطلبات.- أبداً وثائق تفويض الرمز الصلب: مفاتيح مسروقة في متغيرات البيئة
الأسئلة المتكررة
كيف أجهز عميلاً في طلبات (بيثون)؟
مرر proxies dictionary to any requests الطريقة: requests.get(url, proxies={"http": "http://user:pass@host:port", "https": "http://user:pass@host:port"})The ProxyHat SDK simplifies this further by handling proxy formation internally.
ما الفرق بين المحترفين الدوارين والزلاجاء في (بيثون)؟
وتُخصص شركات التبديل المتناوبة عنواناً جديداً لكل طلب، وهو مثال مثالي للخردة على نطاق واسع. وتحتفظ الشركات العميلة المريضة بنفس البرنامج لفترة محددة (على سبيل المثال، 10-30 دقيقة)، وهو ضروري لجلسات قطع الأشجار، أو لعربات التسوق، أو للتصفير المهبلي حيثما يكون الاتساق بين شركاء التنفيذ.
هل يمكن أن أستخدم "بروكسيهات" مع "أسينسيو" و "آيو" ؟
نعم يعمل وكيلو النيابة العامة مع أي عميل من شركة نمور تحرير تاميل إيلام التي تدعم التشكيلة البديلة، بما في ذلك aiohttp.. httpx (طريقة ملائكة) و asyncio-الأطر القائمة مرر العميل (يورل) proxy البارامترات في زبونك
كيف أتعامل مع الأخطاء المحترفة والتوقيت في (بيثون)؟
تلف طلباتك في المحاولات/المقاطعات التي تمسك ProxyError.. Timeoutو ConnectionError- تنفيذ عمليات التخلف المفاجئة (تضاعف فترة الانتظار بين ال retries) ووضع حد أقصى للإحصاء. The ProxyHat SDK includes built-in retry logical with configurable parameters.
أيّ مكتبة (بيثون) هي الأفضل لخدش الإنترنت مع العملاء؟
للمهام البسيطة requests مع (بروكسي هات إس دي كي) هو أسهل خيار من أجل التكريد العالي التكرار، استخدام httpx أو aiohttp- للزحف المعقّد بالربطة التالية واستخراج البيانات، Scrapy مع البرمجيات المتوسطة المحترفة هو الخيار الأقوى كُلّ يَعْملُ بدون رحمة مَع بروكسيهات محترفة.






