دليل شامل لبناء مجموعة البروكسي النفقي باستخدام ProxyCat
⏱️ وقت القراءة المقدر: 15 دقيقة
نظرة عامة
ProxyCat هو حل وسيط مبتكر يحول عناوين IP قصيرة المدى والفعالة من ناحية التكلفة إلى بروكسيات نفقية دائمة. يمكنه تحويل عناوين IP المتاحة لمدة 1-60 دقيقة إلى مجموعة بروكسي مستقرة، مما يوفر حلاً فعالاً جداً لإدارة IP من ناحية التكلفة.
بينما تكلف البروكسيات النفقية التقليدية 3-6 دولارات يومياً، تكلف عناوين IP قصيرة المدى بضعة سنتات فقط، بمتوسط 0.03-0.50 دولار يومياً للتشغيل.
الميزات الأساسية لـ ProxyCat
1. دعم البروتوكولات المتعددة
- بروتوكول HTTP: دعم متصفحات الويب وعملاء HTTP
- بروتوكول SOCKS5: التوافق مع التطبيقات المتنوعة
2. إدارة البروكسي المرنة
- النمط التسلسلي: استخدام البروكسيات بالترتيب
- النمط العشوائي: اختيار البروكسي العشوائي لمنع الأنماط
- النمط المخصص: اختيار البروكسي حسب المتطلبات المحددة
3. إدارة البروكسي الذكية
- الحصول الديناميكي على البروكسي: جمع البروكسي في الوقت الفعلي عبر استدعاءات API
- التحقق التلقائي: إزالة تلقائية للبروكسيات غير النشطة عند البدء
- التبديل التلقائي عند الفشل: التبديل الفوري إلى بروكسي احتياطي عند الفشل
4. الأمان والمصادقة
- مصادقة المستخدم: مصادقة قائمة على اسم المستخدم/كلمة المرور
- القائمة البيضاء/السوداء لـ IP: إدارة التحكم في الوصول
- المراقبة في الوقت الفعلي: تتبع حالة البروكسي وتوقيت التبديل
5. واجهة إدارة سهلة الاستخدام
- واجهة الويب: واجهة إدارة ويب بديهية
- التكوين الديناميكي: تغييرات التكوين بدون إعادة تشغيل الخدمة
- دعم متعدد اللغات: واجهة كورية وإنجليزية
التثبيت والتكوين
1. متطلبات النظام
# المتطلبات الدنيا
- Python 3.7 أو أحدث
- الذاكرة: 512MB RAM
- التخزين: 100MB
- الشبكة: اتصال إنترنت مطلوب
# المتطلبات الموصى بها
- Python 3.9 أو أحدث
- الذاكرة: 1GB RAM
- التخزين: 1GB
- المعالج: نواتان أو أكثر
2. استنساخ المستودع والإعداد الأساسي
# استنساخ المستودع
git clone https://github.com/honmashironeko/ProxyCat.git
cd ProxyCat
# إنشاء بيئة Python الافتراضية (موصى به)
python3 -m venv proxycat_env
source proxycat_env/bin/activate # macOS/Linux
# proxycat_env\Scripts\activate # Windows
# تثبيت الحزم المطلوبة
pip install -r requirements.txt
3. إعداد ملف التكوين
يتم إدارة الإعدادات الأساسية لـ ProxyCat في ملف config/config.ini
:
[GLOBAL]
# إعداد اللغة الافتراضية (ko/en/ar)
language = ar
[PROXY_POOL]
# نمط اختيار البروكسي (sequential/random/custom)
mode = random
# قائمة البروكسي (تنسيق: protocol://ip:port أو protocol://username:password@ip:port)
proxies = http://proxy1.example.com:8080
http://user:pass@proxy2.example.com:8080
socks5://proxy3.example.com:1080
[SERVER]
# إعدادات الخادم المحلي
listen_host = 0.0.0.0
listen_port = 8888
protocol = http # http أو socks5
# إعدادات المصادقة (اختيارية)
auth_enabled = false
username = admin
password = password
[WHITELIST]
# القائمة البيضاء لـ IP (اختيارية)
enabled = false
ips = 127.0.0.1,192.168.1.0/24
[API]
# API للحصول الديناميكي على البروكسي (اختياري)
enabled = false
endpoint = https://api.proxyservice.com/get
headers = Authorization: Bearer YOUR_TOKEN
4. النشر باستخدام Docker
يدعم ProxyCat النشر السهل عبر Docker:
# النشر باستخدام Docker Compose
docker-compose up -d
# أو تشغيل Docker مباشرة
docker build -t proxycat .
docker run -d \
--name proxycat \
-p 8888:8888 \
-p 5000:5000 \
-v $(pwd)/config:/app/config \
-v $(pwd)/logs:/app/logs \
proxycat
5. تنفيذ الخدمة
# التشغيل في وضع CLI
python ProxyCat.py
# التشغيل مع واجهة الويب
python app.py
# التشغيل في الخلفية
nohup python app.py > proxycat.log 2>&1 &
حالات الاستخدام العملية
1. استخراج الويب وجمع البيانات
ProxyCat فعال جداً لتجاوز حظر IP في عمليات استخراج الويب واسعة النطاق:
import requests
import time
from itertools import cycle
# تكوين بروكسي ProxyCat
proxycat_proxy = {
'http': 'http://localhost:8888',
'https': 'http://localhost:8888'
}
# مثال على جمع البيانات واسع النطاق
def scrape_with_proxycat(urls):
session = requests.Session()
session.proxies = proxycat_proxy
results = []
for url in urls:
try:
response = session.get(url, timeout=10)
if response.status_code == 200:
results.append(response.text)
print(f"✅ نجح: {url}")
else:
print(f"❌ فشل: {url} (الحالة: {response.status_code})")
except Exception as e:
print(f"🔄 تبديل البروكسي: {e}")
time.sleep(1) # ProxyCat يبدل البروكسي تلقائياً
return results
# مثال على الاستخدام العملي
target_urls = [
'https://example1.com/api/data',
'https://example2.com/products',
'https://example3.com/listings'
]
scraped_data = scrape_with_proxycat(target_urls)
2. تجاوز حدود معدل API
تفرض العديد من خدمات API حدوداً للطلبات لكل IP. يمكن لـ ProxyCat تجاوز هذه القيود بفعالية:
import requests
import json
import time
class APIClient:
def __init__(self, proxycat_host="localhost", proxycat_port=8888):
self.session = requests.Session()
self.session.proxies = {
'http': f'http://{proxycat_host}:{proxycat_port}',
'https': f'http://{proxycat_host}:{proxycat_port}'
}
def bulk_api_requests(self, endpoints):
results = []
for endpoint in endpoints:
try:
response = self.session.get(endpoint, timeout=15)
if response.status_code == 200:
results.append(response.json())
elif response.status_code == 429: # حد المعدل
print("🔄 تم اكتشاف حد المعدل، انتظار تبديل البروكسي...")
time.sleep(2)
# ProxyCat يبدل تلقائياً إلى بروكسي جديد
response = self.session.get(endpoint, timeout=15)
results.append(response.json())
except Exception as e:
print(f"❌ فشل الطلب: {endpoint}، الخطأ: {e}")
time.sleep(1)
return results
# مثال على الاستخدام
api_client = APIClient()
api_endpoints = [
'https://api.service.com/v1/users',
'https://api.service.com/v1/products',
'https://api.service.com/v1/orders'
]
data = api_client.bulk_api_requests(api_endpoints)
3. اختبار الأمان واختبار الاختراق
يستخدم متخصصو الأمان ProxyCat لإخفاء عناوين IP ومحاكاة الوصول من مناطق مختلفة أثناء الاختبار:
# مسح الشبكة مع Nmap
proxychains4 -f /etc/proxychains4.conf nmap -sT target.example.com
# التكامل مع proxychains
echo "socks5 127.0.0.1 8888" >> /etc/proxychains4.conf
# تكامل Burp Suite
# Burp Suite → Proxy → Options → Upstream Proxy Servers
# Host: localhost, Port: 8888, Type: HTTP
4. أتمتة وسائل التواصل الاجتماعي
تنويع IP ضروري لإدارة الحسابات المتعددة أو أتمتة المحتوى على منصات وسائل التواصل الاجتماعي:
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def setup_browser_with_proxy():
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://localhost:8888')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome(options=chrome_options)
return driver
# مثال على إدارة الحسابات المتعددة
def manage_multiple_accounts(accounts):
for account in accounts:
driver = setup_browser_with_proxy()
try:
# الوصول بـ IP مختلف لكل حساب
driver.get('https://platform.example.com/login')
# تنفيذ تسجيل الدخول والمهام
print(f"✅ اكتملت مهام الحساب {account['username']}")
finally:
driver.quit()
time.sleep(5) # انتظار تبديل البروكسي
accounts = [
{'username': 'account1', 'password': 'pass1'},
{'username': 'account2', 'password': 'pass2'}
]
manage_multiple_accounts(accounts)
5. الوصول للمحتوى المقيد جغرافياً
مفيد للوصول للمحتوى المقيد جغرافياً أو تحليل نتائج البحث الإقليمية:
import requests
import json
class GeoContentAnalyzer:
def __init__(self):
self.proxycat_proxy = {
'http': 'http://localhost:8888',
'https': 'http://localhost:8888'
}
def check_geo_content(self, url):
"""فحص تغييرات المحتوى الإقليمي"""
session = requests.Session()
session.proxies = self.proxycat_proxy
try:
response = session.get(url, timeout=10)
# فحص معلومات IP
ip_info = session.get('https://ipapi.co/json/', timeout=5).json()
return {
'country': ip_info.get('country_name'),
'city': ip_info.get('city'),
'content_length': len(response.text),
'status_code': response.status_code
}
except Exception as e:
return {'error': str(e)}
def analyze_multiple_regions(self, url, samples=10):
"""تحليل المحتوى من مناطق متعددة"""
results = []
for i in range(samples):
result = self.check_geo_content(url)
results.append(result)
print(f"العينة {i+1}: {result}")
time.sleep(2) # انتظار تبديل البروكسي
return results
# مثال على الاستخدام
analyzer = GeoContentAnalyzer()
geo_results = analyzer.analyze_multiple_regions('https://news.example.com')
واجهة إدارة الويب
واجهة الويب لـ ProxyCat متاحة على http://localhost:5000
وتوفر الميزات التالية:
1. ميزات لوحة التحكم
- حالة البروكسي في الوقت الفعلي: نظرة عامة على البروكسيات النشطة/غير النشطة
- إحصائيات الترافيك: عدد الطلبات، معدل النجاح، وقت الاستجابة
- تاريخ تبديل البروكسي: تتبع متى ولماذا تم تبديل البروكسيات
2. إدارة البروكسي
- إضافة/حذف البروكسيات: إدارة ديناميكية لمجموعة البروكسي
- تبديل البروكسي اليدوي: فرض التبديل لبروكسي محدد
- اختبار البروكسي: فحص حالة اتصال البروكسي الفردي
3. إدارة التكوين
- تغييرات التكوين في الوقت الفعلي: تحديث الإعدادات بدون إعادة تشغيل الخدمة
- إعدادات المصادقة: إدارة مصادقة المستخدم والقائمة البيضاء لـ IP
- تعديل مستوى السجل: تعديل مستويات السجل للتصحيح
المراقبة وإدارة السجلات
1. تحليل السجلات
يوفر ProxyCat سجلات مفصلة لاستكشاف الأخطاء وتحليل الأداء:
# مراقبة السجل في الوقت الفعلي
tail -f logs/proxycat.log
# تصفية سجلات الأخطاء فقط
grep "ERROR" logs/proxycat.log
# تتبع أحداث تبديل البروكسي
grep "PROXY_SWITCH" logs/proxycat.log
2. مقاييس الأداء
# تحليل معدل نجاح الطلبات
grep -c "SUCCESS" logs/proxycat.log
grep -c "FAILED" logs/proxycat.log
# حساب متوسط وقت الاستجابة
grep "RESPONSE_TIME" logs/proxycat.log | awk '{sum+=$NF} END {print sum/NR}'
التكوين المتقدم والتحسين
1. تحسين مجموعة البروكسي
[PROXY_POOL]
# فترة فحص صحة البروكسي (بالثواني)
health_check_interval = 300
# عدد إعادة المحاولة للبروكسي الفاشل
max_retry_count = 3
# مهلة استجابة البروكسي (بالثواني)
proxy_timeout = 10
# الحد الأقصى للاتصالات المتزامنة
max_concurrent_connections = 100
2. استراتيجية توزيع الأحمال
[LOAD_BALANCING]
# طريقة توزيع الأحمال (round_robin/least_connections/weighted)
strategy = round_robin
# اختيار البروكسي المرجح (IP:الوزن)
weighted_proxies = proxy1.com:10,proxy2.com:5,proxy3.com:1
3. التخزين المؤقت وضبط الأداء
[PERFORMANCE]
# حجم مجموعة الاتصالات
connection_pool_size = 50
# وقت الحفاظ على الاتصال (بالثواني)
connection_keep_alive = 60
# مدة تخزين DNS المؤقت (بالثواني)
dns_cache_ttl = 3600
دليل استكشاف الأخطاء
1. المشاكل الشائعة
المشكلة: فشل اتصال البروكسي
# الحلول:
1. فحص حالة خادم البروكسي
2. التحقق من اتصال الشبكة
3. فحص إعدادات جدار الحماية
4. مراجعة إعدادات config.ini
المشكلة: عدم إمكانية الوصول لواجهة الويب
# الحلول:
1. فحص استخدام المنفذ 5000: netstat -tulpn | grep 5000
2. فتح منفذ جدار الحماية: sudo ufw allow 5000
3. إعادة تشغيل الخدمة: python app.py
المشكلة: استخدام ذاكرة عالي
# الحلول:
1. تعديل حجم مجموعة الاتصالات
2. خفض مستوى السجل
3. تنظيف البروكسيات غير النشطة
4. مراقبة موارد النظام
2. وضع التصحيح
# التشغيل في وضع التصحيح
DEBUG=true python ProxyCat.py
# تمكين السجل المفصل
export PROXYCAT_LOG_LEVEL=DEBUG
python ProxyCat.py
اعتبارات الأمان
1. أمان الشبكة
- تشفير SSL/TLS: يُنصح باستخدام بروكسي HTTPS
- تعزيز المصادقة: إعدادات اسم مستخدم/كلمة مرور قوية
- التحكم في الوصول: استخدام القائمة البيضاء لـ IP
2. أمان السجل
- إخفاء البيانات الحساسة: استبعاد كلمات المرور ومفاتيح API من السجلات
- دوران السجل: تنظيف ملفات السجل بانتظام
- أذونات الوصول: تقييد أذونات قراءة ملف السجل
معايير الأداء
مقاييس أداء ProxyCat في بيئة اختبار فعلية:
البيئة: Ubuntu 20.04, 4GB RAM, 2CPU
عدد البروكسيات: 50
الاتصالات المتزامنة: 100
مدة الاختبار: 24 ساعة
النتائج:
- متوسط وقت الاستجابة: 1.2 ثانية
- معدل النجاح: 98.5%
- استخدام الذاكرة: متوسط 256MB
- استخدام المعالج: متوسط 15%
- تبديلات البروكسي: متوسط 150/ساعة
الخلاصة
ProxyCat هو حل فعال من ناحية التكلفة لإدارة مجموعة البروكسي يعمل كأداة قوية عبر مجالات مختلفة. يمكن تطبيقه لاستخراج الويب، وتجاوز حدود معدل API، واختبار الأمان، والوصول للمحتوى المقيد جغرافياً، وأكثر، مع فوائد إضافية من إدارة واجهة الويب المريحة والنشر البسيط عبر Docker.
ملحوظ بشكل خاص هو انخفاض التكلفة بنسبة 90%+ مقارنة بالبروكسيات النفقية التقليدية مع الحفاظ على خدمة مستقرة، مما يجعله قيماً جداً للمشاريع التي تتطلب جمع بيانات واسع النطاق أو اختبار الأمان.
الخطوات التالية
- فحص مستودع GitHub: مستودع ProxyCat
- المشاركة في المجتمع: الإبلاغ عن المشاكل وطلبات الميزات
- استكشاف التوسعات: وحدات BabyCat، خارطة طريق دعم بروتوكول الآلة
اختبر إدارة بروكسي أكثر كفاءة واقتصادية مع ProxyCat!