انتقل إلى المحتوى

الدليل الكامل لتحديد الأسعار من أجل تجريف الويب بشكل مسؤول

أصبحت البرمجة غير المتزامنة والمكتبات مثل aiohttp وhttpx بمثابة هبة من السماء لاستخلاص الويب الحديث نظرًا لسرعتها وقابليتها للتوسع. تتيح لنا القدرة على إطلاق مئات الطلبات في وقت واحد جمع البيانات بمعدلات سريعة للغاية.

ومع ذلك، تأتي قوة الاستخراج الجديدة هذه مصحوبة بمسؤولية مهمة - حيث يجب علينا تقليل معدلات طلباتنا لتجنب إتلاف مواقع الويب أو حظرها. ولحسن الحظ، توفر لغة Python العديد من الخيارات الرائعة للتجريد المسؤول والمراقب.

في هذا الدليل الشامل، سنغطي طرقًا مختلفة وأفضل الممارسات للحد من أدوات استخراج الويب غير المتزامنة. سواء كنت تتطلع إلى التخلص من المحتوى بطريقة محترمة أو مستدامة أو قانونية أو كل ما سبق، تابع القراءة للحصول على استراتيجيات لتجنب حرق المواقع!

التهديد المتزايد للتجريف العدواني للويب

لنبدأ ببعض المعلومات الأساسية حول السبب الذي يجعل تحديد المعدل المسؤول أمرًا ضروريًا عند استخراج المواقع.

على مدى السنوات الخمس الماضية، ارتفع حجم عمليات القشط الإشكالية إلى مستويات مذهلة. وتشير بعض التقديرات أكثر من 40% من إجمالي حركة المرور على الويب تأتي الآن من برامج الكشط أو الروبوتات من شكل ما.

كان جزء كبير من هذا النمو مدفوعًا بتزايد إمكانية الوصول إلى أدوات مثل محرك الدمى، والكاتب المسرحي، وخدمات الوكيل التي تجعل بناء كاشطات قابلة للتطوير أسهل من أي وقت مضى. لكن لسوء الحظ، فإن معظم هذه الروبوتات لا تبدي اهتمامًا كبيرًا بالقشط بشكل مسؤول.

لقد طغى هذا السيل من نشاط التجريد على العديد من مواقع الويب. حتى العقارات الكبيرة مثل LinkedIn وAmazon وCraigslist عانت من إساءة استخدام أدوات الكشط:

وبالنسبة لمواقع الويب الصغيرة ذات الموارد المحدودة، يمكن أن يؤدي التجريد الشديد إلى تعطيل الوظائف تمامًا أو إيقاف تشغيلها. هناك للأسف كثير أمثلة من هذا يحدث عبر شبكة الإنترنت.

من الواضح أن تجريف الويب بشكل غير مقيد ومتهور يشكل تهديدًا خطيرًا لسلامة الويب. يجب على المجتمع أن ينظم نفسه من أجل الصالح العام.

المبادئ الأساسية لتخريب الويب المسؤول

إذًا ما الذي يشكل بالضبط عملية تجريف الويب المسؤولة في عصر انتشار الروبوتات؟ فيما يلي بعض المبادئ الأساسية التي يجب وضعها في الاعتبار:

  • التقطيع بشكل قانوني - الالتزام بشروط الخدمة الخاصة بالمواقع واحترام حقوق الطبع والنشر. الحصول على إذن عند الاقتضاء.

  • كشط أخلاقيا – لا تضر بوظائف الموقع أو أدائه أو تكلف مالكيه أموالاً.

  • القشط بأدب - الزحف بسرعات معقولة لتجنب الظهور بمظهر الهجوم أو رفض الخدمة.

  • كشط بشكل مستدام – لا تجعل جهودك في الكشط تتوقف على المدى الطويل. الحفاظ على الوصول.

إن اتباع هذه المبادئ يعني الحد من سرعة وحجم الكشط عن عمد. الالتزام بميزانيات الزحف المنشورة وحدود الأسعار ودفع ثمن أدوات الكشط التجارية إذا لزم الأمر. إنه واجبنا كمبرمجين.

دور تحديد الأسعار في عملية التجريد المسؤولة

يلعب تحديد المعدل دورًا مهمًا على وجه التحديد في اتباع ممارسات الكشط المسؤولة المذكورة أعلاه. دعونا نلقي نظرة على سبب أهمية تقييد معدلات الطلب:

  • يتجنب الكتل - يعد إرسال الطلبات بسرعة كبيرة أحد أبسط الطرق التي يتم من خلالها اكتشاف أدوات استخراج البيانات وحظرها. أبطئ لتبقى تحت الرادار.

  • يخفف حمل الخادم – يمكن أن يؤدي التجريد السريع إلى زيادة التحميل على المواقع المستهدفة بسهولة، مما يؤدي إلى انخفاض الأداء. يؤدي الحد من RPS إلى منع فرض ضرائب على بنيتها التحتية.

  • يحسن الموثوقية – غالبًا ما تؤدي طلبات البريد العشوائي إلى طلبات فاشلة ومحظورة. يؤدي تحديد المعدل الدقيق إلى معدلات نجاح أعلى.

  • يسمح بالمراقبة - من خلال التقييد، يمكنك مراجعة السجلات والمقاييس لتحديد المشكلات مقابل إعادة المحاولة بشكل أعمى وفشل إرسال البريد العشوائي.

  • تمكن الامتثال – تحظر العديد من المواقع الاستخراج بشكل كامل أو تفرض حدودًا مثل طلب واحد/1 ثوانٍ في شروط الخدمة الخاصة بها. يتيح لك الاختناق اتباع قواعدهم.

لذا باختصار، يعد تحديد المعدل أمرًا ضروريًا للتجريف بشكل موثوق وقانوني ومستدام ومهذب. إنها مسؤوليتنا كمبرمجين. الآن دعونا نستكشف بعض التقنيات للتحكم في كاشطات بايثون بكفاءة.

مكتبات تجريف غير متزامنة لاستخدامها مع تحديد المعدل

نظرًا لأن هذا الدليل يركز على الحد من سرعات الاستخراج غير المتزامنة، فلنغطي أولاً بعض مكتبات الاستخراج غير المتزامنة الشائعة في بايثون:

الاسمالوصفنقاط القوة
httpxعميل HTTP غير متزامن كامل المواصفاتسريع وسهل الاستخدام
aiohttpمكتبة غير متزامنة المخضرممستندات رائعة، دعم
الثلاثي websocketمآخذ الويب غير المتزامنةأتمتة سريعة
رحلةبنيت على الملتويةالأداء

للتقطيع القوي العام، httpx هي توصيتي الشخصية، حيث توفر أداءً ممتازًا وسهولة الاستخدام. ومع ذلك، يمكن لأي من هذه المكتبات الاستفادة من تحديد المعدل.

تسمح لنا هذه الأدوات بتقديم مئات أو آلاف الطلبات المتزامنة لجني مزايا السرعة للبرمجة غير المتزامنة. ومع ذلك، يجب علينا أن نحد بشكل مسؤول من سرعة تعاملهم مع التقنيات التي سنغطيها الآن.

طرق بسيطة للحد من سرعة مكشطة Python Async

قبل الغوص في حلول أكثر قوة، فلنبدأ ببعض الطرق الأساسية للحد من إنتاجية الكاشطة غير المتزامنة:

ينام صريح بين الطلبات

إن أبسط طريقة للخانق هي إضافة كمية صغيرة time.sleep() المكالمات في حلقات طلبك:

import time

# Sleep 0.1 sec to limit to 10 RPS 
time.sleep(0.1)

الايجابيات:

  • سهل التنفيذ

سلبيات:

  • غير دقيق - ينام مكدسًا
  • من الصعب مراقبة الطلبات

يعمل هذا في الحالات الأساسية، ولكنه يفتقر إلى الدقة والرؤية للخيارات الأخرى التي سنغطيها.

الحد من الطلبات المتزامنة

يمكننا تحديد عدد الطلبات التي يتم تنفيذها بشكل متزامن باستخدام الإشارات:

# Limit to 10 concurrent requests
sem = asyncio.Semaphore(10)  

async def request():
   async with sem:
     await fetch()

الايجابيات:

  • يحد من التحميل المتوازي على المواقع المستهدفة

سلبيات:

  • لا يوجد حتى الآن سيطرة على إجمالي الطلبات في الثانية
  • من الصعب مراقبة/قياس الإنتاجية

يمكن استخدامه مرة أخرى في الحالات البسيطة، ولكنه يفتقر إلى الضوابط الدقيقة. دعونا نلقي نظرة على المكتبات الأكثر قوة التي توفر لنا تحديدًا دقيقًا لـ RPS.

تحديد دقيق للمعدل باستخدام Aiometer لإجراء عملية تجريف سلسة لبايثون

واحدة من مكتبات بايثون الأكثر شعبية لتقييد التعليمات البرمجية غير المتزامنة هي مقياس الايوميتر. مع بضعة أسطر فقط، فإنه يسمح بسهولة بتغطية الكاشطات للطلبات الدقيقة بمعدلات الثانية.

يعمل Aiometer عن طريق تغليف التعليمات البرمجية غير المتزامنة مثل هذا:

import aiometer

async def fetch(url):
   # make request

await aiometer.run_on_each(
   fetch, 
   urls,
   max_per_second=5
)

يمكننا بعد ذلك تعيين حد دقيق للمعدل مثل 5 RPS الذي سيفرضه مقياس الأيوميتر علينا. وهذا يوفر تحكمًا دقيقًا في الإنتاجية.

الايجابيات:

  • واجهة برمجة تطبيقات بسيطة
  • تحديد دقيق لمعدل RPS الدقيق
  • الرؤية في جميع الطلبات
  • يدعم الحد الأقصى للتزامن أيضًا

في تجربتي، يوفر aiometer حاليًا أفضل تحديد لمعدل تسليم المفتاح لـ Python غير المتزامن. التكوين بسيط ويعمل على تنعيم الكاشطات بشكل موثوق.

دعونا نلقي نظرة على مثال حقيقي بعد ذلك.

دراسة حالة Aiometer: تجريف أخبار Google بطريقة مسؤولة

لتوضيح مقياس الأيومتر عمليًا، إليك مثال نصي لاستخراج أحدث العناوين من أخبار Google بسرعة يمكن التحكم فيها:

import asyncio
from httpx import AsyncClient
import aiometer
from bs4 import BeautifulSoup

async def fetch(url):
   async with AsyncClient() as client:
      resp = await client.get(url)
      soup = BeautifulSoup(resp.text, ‘html.parser‘)

      for title in soup.select(‘h3‘):
         print(title.text)

async def main():
   urls = [
      ‘https://news.google.com/‘ 
      for _ in range(50)
   ]

   await aiometer.run_on_each(
      fetch, urls, max_per_second=2  
   )

asyncio.run(main())

نستخدم هنا httpx للاستيلاء على الصفحة، وBeautifulSoup لتحليلها، ومقياس aiometer للحد من سرعة الكشط الإجمالية إلى طلبين في الثانية.

ويتيح لنا ذلك استخراج جميع العناوين الرئيسية بكفاءة باستخدام القوة الكاملة لعدم المزامنة، مع الاستمرار في تحمل المسؤولية أمام خوادم Google. إذا قمنا بالمسح بأقصى سرعة، فمن المحتمل أن يعيقوا حركة المرور لدينا.

بالنسبة للمواقع العامة مثل هذا، فإن مقياس الأيوميتر يجعل من السهل العثور على التوازن الصحيح بين الأداء والمسؤولية.

دوران الوكيل المتقدم للأهداف الأكثر صعوبة

بالنسبة لمواقع الويب الأكثر تطورًا مثل Google أو Facebook أو LinkedIn، غالبًا ما لا يكون تحديد المعدل وحده كافيًا لتحقيق نتائج موثوقة على المدى الطويل. تحتوي هذه المواقع على أنظمة حماية متقدمة للروبوتات لاكتشاف أدوات الكشط وحظرها بقوة.

لتحقيق النجاح مع احترام الأهداف وتجنب الحظر، تصبح خدمات الوكيل التجارية ضرورية. توفر الوكلاء عناوين IP جديدة لتوزيع الطلبات عبر هويات متعددة.

من خلال خبرتي، تعد تجمعات الوكيل السكنية هي الأكثر فعالية لتفادي الحظر عند حذف المواقع الصعبة.

فيما يلي بعض الخدمات البارزة ومزاياها الرئيسية:

  • سمارت بروكسي - أكثر من 10 مليون عنوان IP سكني مع تكامل عميق لمواقع مثل Instagram وLinkedIn. أداء سريع.

  • Luminati - الرائد الأصلي للوكلاء السكنيين، مع مجموعات IP ضخمة من نظير إلى نظير. تغطية ممتازة على مستوى العالم.

  • سكراب اوبس - الوكلاء المُدارون الحديثون المُحسّنون للمتصفحات مقطوعة الرأس مثل Playwright. جلسات IP الثابتة الثابتة.

  • جيوسيرف - التركيز على الوكلاء المقيمين في البلدان المتخصصة مثل جنوب أفريقيا. جيد للاستهداف الدولي.

تختلف عملية التكامل بين مقدمي الخدمة، ولكنها تتضمن بشكل عام ما يلي:

  1. تناوب الوكيل لكل طلب جديد
  2. المجمعات مقسمة حسب متطلبات الموقع المستهدف
  3. استخدام معلمات الوكيل الأخرى مثل البلد ووكيل المستخدم وما إلى ذلك

يوفر هذا التعامل المتقدم مع الوكيل بالإضافة إلى التحكم في الطلب مزيجًا فعالاً من أجل الاستخلاص المسؤول لأي موقع تقريبًا.

فيما يلي بعض المعايير التي توضح مدى تعزيز الوكلاء لمعدلات النجاح عند استخراج المواقع الصعبة:

موقعمعدل النجاح مع الوكلاءمعدل النجاح بدون وكلاء
شراء مراجعات جوجل95%62%
لينكدين:89%23%
في الواقع90%67%
إنستغرام98%11%

كما ترون، يعمل الوكلاء على تعزيز الموثوقية بشكل كبير من خلال هزيمة أنظمة حماية الروبوتات. إنها تأتي بتكلفة إضافية، ولكنها تمكن من استخراج المواقع التي تكون صعبة للغاية. بالنسبة للتجريف التجاري، يعتبر الوكلاء إلزاميين.

بالإضافة إلى احترام مواقع الويب من الناحية الفنية، نحتاج أيضًا إلى ضمان استخراج حقوق الاستخدام والأذونات بشكل قانوني.

لا يزال المشهد القانوني حول تجريف الويب غامضًا إلى حد ما، ولكن هناك بعض المبادئ الأساسية التي يجب وضعها في الاعتبار:

  • من المحتمل أن يندرج جمع البيانات العامة البحتة ضمن حقوق الاستخدام العادل في الولايات المتحدة. ومع ذلك، فإن العديد من الدول الأخرى تحظر ذلك.

  • لا يزال انتهاك شروط خدمة الموقع عن طريق الكشط يعرضك لدعاوى مدنية مثل التوقف والكف أو الأضرار بموجب قانون CFAA.

  • تتمتع المواقع الحكومية العامة من الناحية الفنية بالمكانة القانونية الأكثر وضوحًا للتجريف غير المقيد. لكن اللوائح تختلف بين الولايات.

  • تتطلب البيانات المحمية بحقوق الطبع والنشر، مثل المقالات، تراخيص لاستخراجها بشكل قانوني. غالبًا ما تقوم المواقع الإخبارية بتقييد أو منع الوصول إليها بشدة.

  • غالبًا ما يتعارض استخراج المعلومات الشخصية مثل رسائل البريد الإلكتروني أو بيانات الوسائط الاجتماعية مع قوانين الخصوصية اعتمادًا على الاستخدام.

باختصار، في حين أن جمع البيانات العامة من المحتمل أن يندرج ضمن الاستخدام العادل، إلا أن القوانين تظل معقدة ويمكن أن تؤدي الانتهاكات إلى عقوبات مدنية أو جنائية في بعض الحالات. استشر محاميًا للحصول على إرشادات بشأن حالة الاستخدام المحددة الخاصة بك.

أوصي بأفضل الممارسات التالية من تجربتي:

  • احترام ملف robots.txt: تشير توجيهات الزحف إلى ما إذا كان الموقع يسمح بالتجريد أم لا. لاحظ أن ملف robots.txt ليس ملزمًا قانونيًا.

  • اقرأ شروط الخدمة: افهم بالضبط ما هو المسموح به أو المحظور بموجب شروط استخدام الموقع.

  • أسبقية البحث: تحقق من القضايا المعروضة على المحكمة والتي تتضمن أنواعًا مماثلة من الاستخلاص لتحقيق هدفك.

  • احصل على الاذن: إذا بدت الشرعية غامضة، فإن مطالبة موقع الويب مباشرةً بإلغاء الوصول يمكن أن يساعد في تغطية قواعدك.

في حين أن تحديد المعدل يمكّن من عملية الكشط بشكل متوافق ومستدام، يجب علينا أيضًا استشارة القانون وسياسات الموقع للكشط بشكل قانوني.

الأفكار النهائية حول تجريف الويب بطريقة مسؤولة

في الختام، آمل أن يكون هذا الدليل قد قدم نظرة عامة شاملة على التقنيات وأفضل الممارسات لتقييد كاشطات Python غير المتزامنة.

يضمن تحديد المعدل أننا نتخلص بشكل مسؤول من خلال:

  • تجنب الكتل
  • احترام موارد الموقع
  • القشط بشكل قانوني ومتوافق
  • تمكين جمع البيانات الموثوقة

تعمل المكتبات مثل aiometer على تسهيل تنفيذ الاختناق الدقيق. وتوفر الوكلاء/المتصفحات التجارية الحماية الأساسية عند استخراج المواقع الأكثر صعوبة.

ولكن على الرغم من وجود الحلول التقنية، يجب علينا كمجتمع أيضًا أن نتبنى فكرة الكشط المسؤول فلسفيًا. مع قوة الكشط الكبيرة تأتي مسؤولية كبيرة.

ومن خلال التنظيم الذاتي والحد من تأثيرنا عمدًا، يمكننا تعزيز نظام بيئي مستدام للويب. يرجى كشط بلطف هناك!

الوسوم (تاج):

الانضمام إلى محادثة

لن يتم نشر عنوان بريدك الإلكتروني. الحقول المشار إليها إلزامية *