Python and selenium

صُممت أنظمة CAPTCHA لاكتشاف الأنماط التي تميز الروبوتات عن البشر، لكن يمكن خداعها. إن إضافة قدر من العشوائية والتصرفات الشبيهة بالبشر إلى أداة التجريف تربك النظام، مما يساعد على تجنب الحظر. Selenium هي مكتبة Python توفر API سهل الاستخدام للتحكم في المتصفحات. يعمل Selenium افتراضيا مع نافذة متصفح ظاهرة، لكن يمكن ضبطه ليعمل في وضع بلا واجهة. تتوفر بعض الإضافات التي تساعد على إخفاء الأتمتة، فتجعل المتصفح يبدو كمستخدم حقيقي وتقلل خطر اكتشافه.

في هذا الدليل، سنستعرض ونحلل بعض طرق تجاوز CAPTCHA، بما فيها Undetected ChromeDriver وتدوير البروكسي ومحاكاة السلوك البشري والخدمات الخارجية مثل CapSolver. سنتناول كل واحدة منها، وستتمكن من تحديد الأنسب لك. 

استخدام Undetected ChromeDriver

Undetected ChromeDriver: ما هو؟

يحاول المطورون استخدام متصفحات بلا واجهة مثل Selenium لتجاوز آليات مكافحة الروبوتات في مواقع الويب. يعد Selenium Undetected ChromeDriver إصدارا محسنا من ChromeDriver صُمم لتجنب الاكتشاف. على خلاف ChromeDriver القياسي الذي يكشف معلومات تستخدمها أنظمة مكافحة الروبوتات للتعرف على الروبوتات، يعالج Undetected ChromeDriver هذه التسريبات، مما يقلل احتمال أن تحظر أنظمة مثل DataDome وImperva وBotProtect.io روبوتك.

التحضير:

  • تأكد من استخدام Python 3.6 أو إصدار أحدث، وثبت Selenium.
  • نزّل Chrome وثبته.

الخطوات الأساسية:

1. ثبّت Selenium إذا لم تكن قد فعلت ذلك بعد.


pip3 install selenium
      
        

      

2. للمتابعة، ثبّت undetected-chromedriver وحدة عبر تشغيل الأمر التالي في الطرفية:


pip3 install undetected-chromedriver
      
        

      

سترى هذه الرسالة عند نجاح العملية:

3. نستخدم محرر VS Code في هذا الدليل. تتمثل الخطوة التالية في استيراد مكتبات Undetected ChromeDriver. بعد ذلك، اختر صفحة ويب ترغب في تجريف البيانات منها. التقط لقطة شاشة لصفحة الويب المستهدفة للتحقق من تحميلها بصورة صحيحة من دون CAPTCHA. نفذ الأوامر التالية:


import undetected_chromedriver as uc
import time

# Initialize Chrome with undetected ChromeDriver
browser = uc.Chrome(headless=True, use_subprocess=True)

# Navigate to the target page
browser.get("https://example.com")

# Wait a few seconds to ensure the page loads fully
time.sleep(3)

# Save a screenshot to verify page loading
browser.save_screenshot("screenshot.png")
print("Screenshot taken and saved as 'screenshot.png'")

# Close the browser after the task
browser.quit()
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

لقد نجحت. باستخدام Undetected ChromeDriver، لم تعد CAPTCHA مشكلة، ويمكنك الآن البدء في تجريف موقع الويب. هذه الطريقة هي الأفضل للمشاريع الصغيرة. والسبب الرئيسي لضعف فعاليتها في مشاريع التجريف واسعة النطاق هو أنها لا تمنع حظر عنوان IP الخاص بك. الاستراتيجية التالية بديل أكثر أمانا. 

استخدام تدوير البروكسي

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

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

ينبغي أن تنشئ مجموعة من البروكسيات، أو يمكنك تجربة استخدام بروكسي واحد. لفعل ذلك، استخدم ببساطة “your_single_proxy:port” بدلا من قائمة بروكسيات.

بالنسبة إلى “your_single_proxy:port” حدد المضيف والمنفذ. 

بالنسبة إلى driver.get(“https://example.com“) أدخل موقع الويب المطلوب. بعد تثبيت جميع المكتبات اللازمة، يمكنك تجربة هذه الشيفرة:


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

# List of DataImpulse proxies 
proxy_list = [ 
    "proxy1:port", 
    "proxy2:port", 
    "proxy3:port", 
    # Add more proxies from your DataImpulse pool 
]

def start_selenium_with_proxy(proxy):
    # Set up Chrome options
    chrome_options = Options()
    chrome_options.add_argument("--headless=new")

    # Add proxy to Chrome options
    chrome_options.add_argument(f'--proxy-server=http://{proxy}')

    # Initialize the Selenium browser with the proxy settings
    driver = webdriver.Chrome(options=chrome_options)
    return driver

# Example scraping function with using rotating proxies
def scrape_website():
    for proxy in proxy_list:
        driver = start_selenium_with_proxy(proxy)
        try:
            # Navigate to the target website
            driver.get("https://httpbin.io/ip")

            print(driver.find_element(By.TAG_NAME, "body").text)
            
        finally:
            driver.quit()

# Run the scraping function
scrape_website() 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

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

تصفح من دون ترك أثر

باستخدام البروكسيات، لن تشك مواقع الويب في أمرك، ولن تطلب منك إدخال CAPTCHA أو تحظرك. مع DataImpulse، تحصل على بيانات محدثة وعناوين IP غير مدرجة في القوائم السوداء ومعالجة CAPTCHA وواجهات API سهلة الاستخدام ودعم بشري محترف على مدار الساعة طوال الأسبوع. لدينا أحد أقل الأسعار في السوق: $1 فقط لكل GB. جرب الآن!

استخدام محاكاة السلوك البشري

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

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

أضف تأخيرات قصيرة بين الأفعال لمحاكاة السلوك البشري، ونوع مسار الماوس، واضبط مواضع النقر. لنستخدم 3 صفحات من https://www.scrapingcourse.com/ecommerce كأهداف. إليك مثال على الشيفرة:


import time
import random
import requests

# make a GET request to the given URL and print the status code
def make_request(url):
    response = requests.get(url)
    print(f"Request to {url} returned status code: {response.status_code}")

# list of URLs to request
urls = [
    "https://www.scrapingcourse.com/ecommerce/page/1/",
    "https://www.scrapingcourse.com/ecommerce/page/2/",
    "https://www.scrapingcourse.com/ecommerce/page/3/",
]

# range for random wait time (in seconds)
min_wait = 1
max_wait = 5

# iterate through each URL in the list
for url in urls:
    make_request(url)
    wait_time = random.uniform(min_wait, max_wait)
    print(f"Waiting for {wait_time:.2f} seconds before the next request...")
    time.sleep(wait_time)

print("All requests completed.") 
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

ستتمكن من رؤية استجابة مماثلة إذا نُفذ الأمر بصورة صحيحة:

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

استخدام الخدمات الخارجية (CapSolver)

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

سنحتاج إلى مفتاح API، ويمكنك العثور عليه في لوحة تحكم CapSolver.

فيما يلي مثال بلغة Python يوضح كيفية استخدام API الخاص بـ CapSolver للتعامل مع CAPTCHA. قبل تشغيل الشيفرة، استبدل YOUR_API_KEY وXXX وsite_url بالقيم الفعلية.


# pip3 install requests
import requests
import time

# TODO: Set your configuration
api_key = "YOUR_API_KEY"  # Your CapSolver API key
site_key = "XXX"  # The site key for the target CAPTCHA
site_url = ""  # URL of the page with the CAPTCHA

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }

    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    result = response.json()
    task_id = result.get("taskId")

    if not task_id:
        print("Failed to create task:", response.text)
        return

    print(f"Task ID received: {task_id} / Fetching result...")

    while True:
        time.sleep(3)  # Delay between checks

        payload = {"clientKey": api_key, "taskId": task_id}
        response = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        result = response.json()
        status = result.get("status")

        if status == "ready":
            return result.get("solution", {}).get('gRecaptchaResponse')

        if status == "failed" or result.get("errorId"):
            print("Solution retrieval failed! Response:", response.text)
            return

token = capsolver()
print(token)
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
      

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

خلاصة

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

تواصل معنا اليوم لمعرفة المزيد عن أدوات التجريف المتعددة وحلولنا المخصصة.

Share article: