Skip to content
Intermediate / 2 min read

چگونه از پروکسی‌های دیتاسنتر IPRoyal برای وب‌اسکرپینگ حجم بالا در لینوکس استفاده کنیم

راه‌اندازی پروکسی‌های دیتاسنتر IPRoyal در لینوکس برای وب‌اسکرپینگ سریع و پرحجم. این راهنما پیکربندی HTTP و SOCKS5، چرخش، همزمانی و عیب‌یابی را پوشش می‌دهد.

لینوکس SOCKS5 HTTP(S) وب اسکرپینگ

مرور کلی

پروکسی‌های دیتاسنتر برای وب‌اسکرپینگ پرحجم، سرعت، پایداری و صرفه اقتصادی را فراهم می‌کنند، زمانی که اهداف از دفاعیات تهاجمی ضد ربات استفاده نمی‌کنند. IPRoyal پروکسی‌های دیتاسنتر با پشتیبانی HTTP و SOCKS5 ارائه می‌دهد که به‌صورت پرداخت به‌ازای مصرف یا صورتحساب ماهانه ثابت در دسترس هستند. این آموزش نشان می‌دهد چگونه پروکسی‌های دیتاسنتر IPRoyal را در لینوکس پیکربندی کنید، آن‌ها را با curl تست کنید و در یک گردش کار اسکرپینگ پایتون با چرخش و همزمانی ادغام کنید.

پیش‌نیازها

  • یک ماشین لینوکس (اوبونتو، دبیان یا سنت‌اواس توصیه می‌شود)
  • پایتون ۳.۸ یا جدیدتر همراه با pip
  • یک حساب IPRoyal با پروکسی‌های دیتاسنتر فعال
  • آشنایی مقدماتی با ترمینال و پایتون

مراحل

  1. دریافت اطلاعات ورود پروکسی دیتاسنتر IPRoyal خود

    به داشبورد IPRoyal خود وارد شوید و به بخش پروکسی‌های دیتاسنتر بروید. نقاط پایانی پروکسی (میزبان و پورت) و جزئیات احراز هویت خود را یادداشت کنید. IPRoyal معمولاً از احراز هویت با نام کاربری/رمز عبور یا لیست سفید IP پشتیبانی می‌کند. اگر لیست سفید IP را انتخاب می‌کنید، IP عمومی سرور لینوکس خود را در داشبورد اضافه کنید.

  2. راه‌اندازی احراز هویت از طریق متغیرهای محیطی

    ذخیره اطلاعات ورود در متغیرهای محیطی آن‌ها را از اسکریپت‌های شما دور نگه می‌دارد. دستور زیر را در ترمینال خود اجرا کنید و جای‌نگهدارها را با مقادیر واقعی خود جایگزین کنید:

    export PROXY_HOST="your-proxy-host"
    export PROXY_PORT="your-proxy-port"
    export PROXY_USER="your-username"
    export PROXY_PASS="your-password"
    
  3. تست یک درخواست واحد با curl

    تأیید کنید که پروکسی شما برای هر دو HTTP و SOCKS5 کار می‌کند. از curl برای ارسال درخواست به یک سرویس بازتاب IP استفاده کنید.

    برای HTTP:

    curl -x "http://$PROXY_USER:$PROXY_PASS@$PROXY_HOST:$PROXY_PORT" https://httpbin.org/ip
    

    برای SOCKS5:

    curl --socks5 "$PROXY_HOST:$PROXY_PORT" --proxy-user "$PROXY_USER:$PROXY_PASS" https://httpbin.org/ip
    

    پاسخ باید آدرس IP پروکسی را نشان دهد، نه IP سرور شما را.

  4. پیکربندی پایتون برای اسکرپینگ

    کتابخانه requests را نصب کنید:

    pip install requests
    

    یک اسکریپت پایتون ایجاد کنید که از پروکسی استفاده می‌کند:

    import os
    import requests
    
    proxy_host = os.getenv("PROXY_HOST")
    proxy_port = os.getenv("PROXY_PORT")
    proxy_user = os.getenv("PROXY_USER")
    proxy_pass = os.getenv("PROXY_PASS")
    
    proxies = {
        "http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
        "https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
    }
    
    response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
    print(response.json())
    
  5. پیاده‌سازی چرخش و همزمانی

    برای اسکرپینگ پرحجم، بین چندین پروکسی دیتاسنتر بچرخید تا درخواست‌ها توزیع شوند و از محدودیت نرخ جلوگیری شود. از یک لیست پروکسی استفاده کنید و به‌صورت چرخشی آن‌ها را به کار ببرید. برای همزمانی، از concurrent.futures یا asyncio همراه با aiohttp استفاده کنید.

    مثال با concurrent.futures:

    import concurrent.futures
    import requests
    
    proxy_list = [
        "http://user:pass@host1:port1",
        "http://user:pass@host2:port2",
        # Add more proxies from your IPRoyal dashboard
    ]
    
    def fetch(url, proxy):
        try:
            response = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=10)
            return response.status_code
        except Exception as e:
            return str(e)
    
    urls = ["https://example.com"] * 10
    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        futures = [executor.submit(fetch, url, proxy_list[i % len(proxy_list)]) for i, url in enumerate(urls)]
        for future in concurrent.futures.as_completed(futures):
            print(future.result())
    
  6. مدیریت مسدودسازی‌ها و تلاش‌های مجدد

    IPهای دیتاسنتر بیشتر از پروکسی‌های مسکونی یا ISP احتمال مسدود شدن دارند. برای بهبود نرخ موفقیت:

    • هدرهای user-agent را بچرخانید.
    • بین درخواست‌ها تأخیر ایجاد کنید.
    • عقب‌نشینی نمایی را در صورت شکست پیاده‌سازی کنید.
    • برای اهداف سخت‌تر، تغییر به پروکسی‌های مسکونی یا ISP IPRoyal را در نظر بگیرید.

    مثال منطق تلاش مجدد با عقب‌نشینی نمایی:

    import time
    import requests
    
    def fetch_with_retry(url, proxy, max_retries=3):
        for attempt in range(max_retries):
            try:
                response = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=10)
                if response.status_code == 200:
                    return response.text
            except requests.RequestException:
                pass
            time.sleep(2 ** attempt)
        raise Exception("Max retries exceeded")
    

عیب‌یابی

  • 407 Proxy Authentication Required: نام کاربری و رمز عبور خود را بررسی کنید. اگر حاوی کاراکترهای خاص هستند، مطمئن شوید که URL-encoded شده‌اند.

  • Connection timeout: میزبان و پورت پروکسی را تأیید کنید. تنظیمات فایروال خود را بررسی کنید و یک مکان دیتاسنتر IPRoyal متفاوت را امتحان کنید.

  • 403 Forbidden: ممکن است IP پروکسی شما توسط سایت هدف مسدود شده باشد. به یک پروکسی جدید بچرخانید یا به پروکسی‌های مسکونی IPRoyal سوئیچ کنید.

  • Slow performance: پروکسی‌های دیتاسنتر عموماً سریع هستند. اگر کندی تجربه می‌کنید، یک نقطه پایانی پروکسی متفاوت را تست کنید یا اتصال شبکه خود را بررسی کنید.

  • SOCKS5 issues: پشتیبانی SOCKS را برای requests نصب کنید:

    pip install requests[socks]
    

    سپس از قالب پروکسی زیر استفاده کنید:

    proxies = {
        "http": f"socks5://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
        "https": f"socks5://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
    }
    

خلاصه

شما پروکسی‌های دیتاسنتر IPRoyal را در لینوکس برای وب‌اسکرپینگ پرحجم پیکربندی کرده‌اید. با یک تست پروکسی واحد شروع کنید، سپس با استفاده از چرخش و همزمانی مقیاس دهید. به یاد داشته باشید که پروکسی‌های دیتاسنتر در سرعت و صرفه اقتصادی عالی هستند، در حالی که پروکسی‌های مسکونی و ISP IPRoyal برای اهدافی با اقدامات سخت‌گیرانه ضد ربات بهتر هستند. همیشه به شرایط خدمات و robots.txt سایت‌های هدف احترام بگذارید.