Skip to content
Intermediate / 2 min read

نحوه استفاده از پروکسی‌های مسکونی ProxyScrape با Scrapy در پایتون

پروکسی‌های مسکونی ProxyScrape را برای وب‌اسکرپینگ پایدار پایتون در اسپایدرهای Scrapy خود ادغام کنید. شامل میان‌افزار چرخش، احراز هویت و راه‌اندازی SOCKS5.

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

مرور کلی

Scrapy یک چارچوب قدرتمند پایتون برای وب‌اسکرپینگ است، اما بسیاری از سایت‌ها درخواست‌های ارسال‌شده از یک IP واحد را مسدود می‌کنند. استفاده از پروکسی‌های ProxyScrape به شما کمک می‌کند درخواست‌ها را توزیع کنید، از محدودیت‌های نرخ (rate limit) دوری کنید و به محتوای محدودشده جغرافیایی دسترسی پیدا کنید. ProxyScrape پروکسی‌های مسکونی، دیتاسنتری و موبایل را با پشتیبانی HTTP و SOCKS5، صورتحساب پرداخت به‌ازای مصرف یا ماهانه ثابت، و استخری از بیش از ۹۷ میلیون IP که برای آپ‌تایم طولانی‌مدت ساخته شده، ارائه می‌دهد.

این آموزش به شما نشان می‌دهد چگونه پروکسی‌های ProxyScrape را در یک پروژه Scrapy ادغام کنید. یاد می‌گیرید احراز هویت را پیکربندی کنید، پروکسی‌ها را برای هر درخواست بچرخانید و خطاهای رایج را مدیریت کنید. این روش روی Windows، macOS و Linux کار می‌کند.

پیش‌نیازها

  • پایتون نسخه ۳٫۸ یا جدیدتر نصب شده باشد.
  • Scrapy نصب شده باشد (pip install scrapy).
  • یک حساب ProxyScrape با پروکسی‌های مسکونی یا دیتاسنتری. می‌توانید در یک پلن ثبت‌نام کنید یا از پرداخت به‌ازای مصرف استفاده کنید.
  • اطلاعات ورود پروکسی شما: هاست، پورت، نام کاربری و رمز عبور از داشبورد ProxyScrape.

درک احراز هویت پروکسی در Scrapy

ProxyScrape از احراز هویت با نام کاربری/رمز عبور استفاده می‌کند. در Scrapy، آدرس پروکسی را در کلید متای درخواست proxy قرار می‌دهید. قالب به این صورت است:

  • HTTP/HTTPS: http://username:password@host:port
  • SOCKS5: socks5://username:password@host:port

Scrapy به‌صورت بومی از پروکسی‌های HTTP و HTTPS پشتیبانی می‌کند. برای SOCKS5 به یک پکیج اضافی مانند scrapy-socks نیاز دارید.

گام ۱: نصب Scrapy و ایجاد یک پروژه

یک ترمینال باز کنید و اجرا کنید:

pip install scrapy
scrapy startproject proxyscrape_scrapy
cd proxyscrape_scrapy

این کار یک پروژه جدید Scrapy با یک پوشه اسپایدر پیش‌فرض ایجاد می‌کند.

گام ۲: دریافت اطلاعات ورود پروکسی از ProxyScrape

وارد داشبورد ProxyScrape خود شوید و یک لیست پروکسی بسازید. یک هاست، پورت، نام کاربری و رمز عبور دریافت خواهید کرد. برای پروکسی‌های مسکونی ممکن است یک هاست دروازه (gateway) که به‌صورت خودکار می‌چرخد، یا فهرستی از endpointها دریافت کنید. برای پروکسی‌های دیتاسنتری معمولاً یک IP و پورت ثابت می‌گیرید.

نمونه اطلاعات ورود:

  • هاست: proxy.proxyscrape.com
  • پورت: 8080
  • نام کاربری: user123
  • رمز عبور: pass456

آدرس پروکسی شما می‌شود: http://user123:[email protected]:8080

اگر رمز عبور شما شامل کاراکترهای خاص است، آن‌ها را URL-encode کنید (مثلاً @ به %40 تبدیل می‌شود).

گام ۳: پیکربندی یک پروکسی پایه در یک اسپایدر

یک اسپایدر ساده بسازید که آدرس IP شما را از طریق پروکسی بررسی کند. در proxyscrape_scrapy/spiders/example.py:

import scrapy

class ExampleSpider(scrapy.Spider):
    name = 'example'
    start_urls = ['https://httpbin.org/ip']

    def start_requests(self):
        proxy = 'http://user123:[email protected]:8080'
        for url in self.start_urls:
            yield scrapy.Request(
                url,
                meta={'proxy': proxy},
                callback=self.parse
            )

    def parse(self, response):
        yield {'ip': response.text}

اسپایدر را اجرا کنید:

scrapy crawl example -O output.json

خروجی آدرس IP را همان‌طور که سایت هدف می‌بیند نشان می‌دهد. اگر با IP پروکسی شما مطابقت داشته باشد، پیکربندی درست کار می‌کند.

گام ۴: پیاده‌سازی یک میان‌افزار پروکسی چرخشی

چرخش پروکسی‌ها برای هر درخواست، ناشناس‌بودن را افزایش می‌دهد و احتمال مسدود شدن را کاهش می‌دهد. یک میان‌افزار در proxyscrape_scrapy/middlewares.py بسازید:

import random
from scrapy import signals

class ProxyRotationMiddleware:
    def __init__(self, proxies):
        self.proxies = proxies

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.settings.getlist('PROXY_LIST'))

    def process_request(self, request, spider):
        proxy = random.choice(self.proxies)
        request.meta['proxy'] = proxy
        spider.logger.debug(f'Using proxy: {proxy}')

میان‌افزار را فعال کنید و لیست پروکسی خود را در settings.py تعریف کنید:

DOWNLOADER_MIDDLEWARES = {
    'proxyscrape_scrapy.middlewares.ProxyRotationMiddleware': 543,
}

PROXY_LIST = [
    'http://user1:pass1@host1:port1',
    'http://user2:pass2@host2:port2',
    'http://user3:pass3@host3:port3',
]

اکنون هر درخواست از یک پروکسی تصادفی از لیست استفاده می‌کند. می‌توانید لیست را با چندین endpoint از ProxyScrape پر کنید یا از دروازه چرخشی آن‌ها استفاده کنید (یک endpoint که به‌صورت خودکار می‌چرخد).

گام ۵: کار با پروکسی‌های SOCKS5 (اختیاری)

Scrapy به‌صورت بومی از SOCKS5 پشتیبانی نمی‌کند. scrapy-socks را نصب کنید:

pip install scrapy-socks

میان‌افزار SOCKS5 را به settings.py اضافه کنید:

DOWNLOADER_MIDDLEWARES = {
    'scrapy_socks.Socks5DownloaderMiddleware': 543,
}

سپس پروکسی را در متای درخواست به‌صورت socks5://user:pass@host:port تنظیم کنید. توجه داشته باشید که نمی‌توانید همزمان از میان‌افزار چرخش و scrapy-socks بدون منطق سفارشی استفاده کنید. برای اکثر موارد، پروکسی‌های HTTP ساده‌تر و کافی هستند.

گام ۶: آزمایش و بررسی چرخش

اسپایدر خود را اجرا کنید و خروجی را بررسی کنید:

scrapy crawl example -O output.json

فایل output.json را بررسی کنید. اگر آدرس‌های IP متفاوتی در درخواست‌ها می‌بینید، چرخش کار می‌کند. همچنین می‌توانید برای رعایت ادب، تأخیری بین درخواست‌ها اضافه کنید:

DOWNLOAD_DELAY = 2

عیب‌یابی

  • 407 Proxy Authentication Required: نام کاربری و رمز عبور خود را بررسی کنید. مطمئن شوید که URL-encode شده‌اند. تأیید کنید که پلن ProxyScrape شما فعال است.
  • Connection refused یا timeout: هاست و پورت را تأیید کنید. فایروال یا VPN خود را بررسی کنید. یک endpoint پروکسی دیگر را امتحان کنید.
  • مسدود شدن‌های مکرر: به پروکسی‌های مسکونی روی بیاورید، DOWNLOAD_DELAY را افزایش دهید و چرخش را فعال کنید. پروکسی‌های دیتاسنتری در سایت‌های سخت‌گیر بیشتر احتمال دارد مسدود شوند.
  • خطاهای SOCKS5: مطمئن شوید scrapy-socks نصب و پیکربندی شده است. اگر خطای import می‌گیرید، پکیج را دوباره نصب کنید.
  • خطاهای SSL: اگر سایت هدف نیاز دارد، DOWNLOAD_HANDLERS را اضافه کنید یا از https در آدرس پروکسی استفاده کنید.

انتخاب نوع پروکسی مناسب برای Scrapy

نوع پروکسی بهترین برای نکات
مسکونی اسکرپ سایت‌هایی با محافظت ضدربات ناشناسی بالا، استخر بزرگ، کندتر
دیتاسنتری اسکرپ پرسرعت سایت‌های کم‌محافظت‌تر سریع‌تر، ارزان‌تر، راحت‌تر مسدود می‌شود
موبایل اسکرپ محتوای مخصوص موبایل یا اپلیکیشن‌ها به‌ندرت مسدود می‌شود، هزینه بالاتر

ProxyScrape هر سه نوع را با صورتحساب انعطاف‌پذیر ارائه می‌دهد. برای بیشتر کارهای اسکرپ با پروکسی مسکونی شروع کنید.

خلاصه

شما آموختید چگونه پروکسی‌های ProxyScrape را در Scrapy ادغام کنید: نصب Scrapy، دریافت اطلاعات ورود، پیکربندی یک پروکسی پایه، ساخت میان‌افزار چرخش و استفاده اختیاری از SOCKS5. پیکربندی خود را آزمایش کنید و چرخش و تأخیرها را برای جلوگیری از مسدود شدن تنظیم کنید. پروکسی‌های مسکونی و دیتاسنتری قابل اعتماد ProxyScrape با بیش از ۹۷ میلیون IP و آپ‌تایم طولانی‌مدت، انتخابی محکم برای پروژه‌های اسکرپ پایتون هستند.