التناوب على مستوى القائمة
يدوّر ProxySale البروكسيات عبر القائمة نفسها. يفقد المجمّع العناوين المعطلة ويكسب عناوين جديدة طوال اليوم، وفي كل مرة يطلب فيها برنامجك رابط القائمة يحصل على المجموعة التي تعمل في تلك اللحظة. لا تضبط قواعد تناوب لدينا: أعد تحميل الرابط كل 8 إلى 10 دقائق وتبقى القائمة محدّثة.
بعد ذلك يختار برنامجك السطر لكل طلب. معظم برامج الكشط وأدوات SEO تختار بروكسي عشوائيًا لكل طلب أو تغيّره بعد خطأ، فيتوزع الحمل على آلاف العناوين.
لماذا يساعد البروكسي المتناوب برامج الكشط
تعدّ محركات البحث والأسواق ومواقع مقارنة الأسعار الطلبات لكل IP. العنوان الذي يرسل مئات الطلبات في الدقيقة يصطدم بكابتشا أو حظر. وزّع الحمل نفسه على قائمة بروكسي متناوب، فيرسل كل عنوان بضعة طلبات فقط، ويرى الهدف شيئًا قريبًا من الزوار العاديين.
التناوب يخفي الأسطر المعطلة أيضًا. الطلب الفاشل يخرج من جديد عبر عنوان آخر، وإعادة التحميل التالية للقائمة تستبعد السطر السيئ.
إعداد التناوب في برنامجك
- A-Parser وZennoPoster: أضف رابط القائمة مصدرًا للبروكسي مع إعادة تحميل كل 10 دقائق.
- Scrapy: حمّل القائمة في downloader middleware يختار سطرًا عشوائيًا لكل طلب.
- Python requests: احفظ القائمة في الذاكرة ومرّر سطرًا عشوائيًا في قاموس proxies.
- curl في bash: خذ سطرًا بالأمر
shuf -n 1قبل كل استدعاء.
اترك إعادة التحميل على 8 إلى 10 دقائق. نبطّئ الطلبات التي تأتي كل دقيقة، والمجمّع لا يتغير بهذه السرعة أصلًا.
استراتيجيات التناوب
- سطر عشوائي لكل طلب: أبسط مخطط وأكثرها توزيعًا للحمل.
- سطر واحد لسلسلة قصيرة: مفيد حين يتوقع الموقع بضعة طلبات مترابطة، مثل صفحة بحث ثم صفحة النتائج التالية.
- التبديل عند الخطأ: إبقاء السطر ما دام يجيب، واستبعاده بعد كابتشا أو انتهاء مهلة أو 403.
- فترة تبريد: بعد الحظر، إخراج العنوان من التناوب لمدة 10 إلى 15 دقيقة.
تجمع معظم برامج الكشط بين الأول والثالث: سطر عشوائي لكل طلب وتبديل فوري بعد الخطأ. راقب نسبة الكابتشا والطلبات الفاشلة. إذا ارتفعت فأضف عناوين أو أبطئ الوتيرة.
كم عنوانًا تحتاج
احسب الطلبات في الدقيقة إلى أصعب أهدافك، واقسمها على ما يستطيع عنوان واحد إرساله دون مشكلات. إذا كان الموقع يتحمل خمسة طلبات في الدقيقة من IP واحد وتحتاج 5,000، فخطط لـ 1,000 عنوان حي على الأقل، مع هامش لانخفاض الليل. المهام الأكبر في صفحة البروكسي بالجملة.
اختر المجمّع حسب الهدف: World MIX للمواقع العالمية، وبروكسيات أوروبا لمتاجر الاتحاد الأوروبي والبحث فيه، وبروكسيات رابطة الدول المستقلة لـ Yandex والأسواق الإقليمية، وبروكسيات الصين لـ Baidu.
مهام تحتاج عنوانًا ثابتًا
بعض الأعمال تحتاج إلى عنوان واحد لوقت طويل: تسجيل الدخول إلى الحسابات، والاحتفاظ بسلة التسوق، وتشغيل ملفات متصفحات مكافحة الكشف. القائمة الدوّارة للباقة لا تناسب ذلك، لأن العنوان قد يغادر المجمّع. لهذا العمل خذ البروكسي السكني من مجمّع Max: لكل سطر جلسته الخاصة بمدة من ثلاث دقائق إلى يوم ما دام الجهاز المنزلي متصلًا. صفحة بروكسي متصفحات مكافحة الكشف تشرح ضبط الملفات.
أما كل ما يقرأ صفحات عامة، فالتناوب أنسب له وأرخص لكل طلب.
ملف قائمة يتجدد كل 10 دقائق
بعض الأدوات لا تقرأ البروكسي إلا من ملف. أبقِ هذا الملف حديثًا بسكربت صغير ينزّل القائمة كل 10 دقائق. كل سكربت أدناه يكتب أولًا في ملف مؤقت ولا يستبدل الملف الرئيسي إلا بعد اكتمال التنزيل، فلا يقرأ برنامجك أبدًا قائمة نصف مكتوبة أو فارغة. ضع رابط القائمة من لوحة التحكم مكان YOUR_LIST_LINK.
Linux: سكربت shell مع cron
احفظ السكربت باسم /opt/proxies/update-proxies.sh، واجعله قابلًا للتنفيذ بالأمر chmod +x /opt/proxies/update-proxies.sh، وشغّله مرة يدويًا. يطبع عدد البروكسيات التي حفظها، أو خطأ إذا لم يستجب الرابط.
#!/bin/sh
LIST_URL="YOUR_LIST_LINK"
DEST="/opt/proxies/proxies.txt"
TMP="$DEST.tmp"
mkdir -p "$(dirname "$DEST")"
if curl -fsS --max-time 60 -o "$TMP" "$LIST_URL" && [ -s "$TMP" ]; then
mv "$TMP" "$DEST"
echo "$(date '+%F %T') saved $(wc -l < "$DEST") proxies"
else
rm -f "$TMP"
echo "$(date '+%F %T') download failed, kept the old list" >&2
exit 1
fiافتح الجدولة بالأمر crontab -e وأضف السطر أدناه. يشغّل cron السكربت كل 10 دقائق ويضيف رسائله إلى سجل. شغّله بصلاحيات root أو غيّر المسارين إلى مجلد في مجلدك الرئيسي.
*/10 * * * * /opt/proxies/update-proxies.sh >> /var/log/update-proxies.log 2>&1Windows: PowerShell مع برنامج جدولة المهام
احفظ السكربت باسم C:\proxies\update-proxies.ps1 وشغّله مرة في PowerShell لفحص الرابط.
$ListUrl = "YOUR_LIST_LINK"
$Dest = "C:\proxies\proxies.txt"
$Tmp = "$Dest.tmp"
New-Item -ItemType Directory -Force -Path (Split-Path $Dest) | Out-Null
try {
Invoke-WebRequest -Uri $ListUrl -OutFile $Tmp -UseBasicParsing -TimeoutSec 60
if ((Get-Item $Tmp).Length -eq 0) { throw "empty list" }
Move-Item -Force $Tmp $Dest
$count = (Get-Content $Dest | Measure-Object -Line).Lines
Write-Output "$(Get-Date -Format s) saved $count proxies"
} catch {
Remove-Item $Tmp -ErrorAction SilentlyContinue
Write-Output "$(Get-Date -Format s) download failed, kept the old list: $($_.Exception.Message)"
exit 1
}سجّل مهمة تشغّل السكربت كل 10 دقائق: الصق الأمر في موجه الأوامر أو PowerShell. تبقى المهمة بعد إعادة التشغيل وتظهر في برنامج جدولة المهام باسم UpdateProxies. تعمل ما دمت مسجلًا الدخول؛ ولتعمل دون جلسة، افتح موجه الأوامر كمسؤول وأضف /RU SYSTEM إلى الأمر.
schtasks /Create /TN "UpdateProxies" /SC MINUTE /MO 10 /F /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\proxies\update-proxies.ps1"تفضّل الفأرة؟ افتح «جدولة المهام» ثم اختر «إنشاء مهمة أساسية»، واختر مشغلًا يوميًا، ثم افتح خصائص المهمة واضبط تكرار المهمة كل 10 دقائق لمدة غير محددة. يشغّل الإجراء powershell.exe بالوسائط -NoProfile -ExecutionPolicy Bypass -File C:\proxies\update-proxies.ps1.
أي نظام: Python
نسخة Python تعمل في حلقة ولا تحتاج مُجدولًا. شغّلها في طرفية أو داخل screen أو tmux أو كخدمة. تحتاج Python 3 ولا حزم إضافية.
import time
import urllib.request
from pathlib import Path
LIST_URL = "YOUR_LIST_LINK"
DEST = Path("proxies.txt")
EVERY = 600
while True:
try:
data = urllib.request.urlopen(LIST_URL, timeout=60).read()
if not data.strip():
raise ValueError("empty list")
tmp = DEST.with_name(DEST.name + ".tmp")
tmp.write_bytes(data)
tmp.replace(DEST)
print(time.strftime("%Y-%m-%dT%H:%M:%S"), "saved", len(data.split()), "proxies", flush=True)
except Exception as error:
print(time.strftime("%Y-%m-%dT%H:%M:%S"), "download failed, kept the old list:", error, flush=True)
time.sleep(EVERY)وجّه برنامجك إلى الملف المحفوظ، فيقرأ دائمًا قائمة لا يتجاوز عمرها 10 دقائق. التزم بفاصل 10 دقائق: الطلبات الأكثر تكرارًا تُبطَّأ.
البروتوكولات والأسعار والاختبار
كل سطر دوّار في الباقة يعمل عبر SOCKS5 وSOCKS4 وHTTP وHTTPS على منفذ واحد، راجع بروكسي SOCKS5 وبروكسي HTTP. الأحجام والمدد في قائمة الأسعار، والساعة المجانية لأي باقة من صفحة الاتصال.
