Skip to content
intermediate

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

یک ردیاب رتبه کوچک با پایتون بسازید که SERPها را از طریق استخر چرخشی مسکونی ProxyScrape استخراج می‌کند، همراه با تلاش مجدد، محدودسازی نرخ، نکات هدف‌گذاری جغرافیایی، و ثبت IP خروجی هر درخواست.

وب اسکرپینگ پایش سئو

نمای کلی

موتورهای جستجو بسته به IP ای که درخواست می‌کند نتایج متفاوتی برمی‌گردانند. بنابراین ردیابی رتبه سئو به درخواست‌هایی نیاز دارد که شبیه کاربران عادی از موقعیت مکانی درست به نظر برسند؛ چیزی که یک استخر مسکونی چرخشی فراهم می‌کند. استخر مسکونی ProxyScrape (بیش از ۹۷ میلیون IP) برای هر درخواست یک IP خروجی جدید ارائه می‌دهد یا یک نشست چسبنده نگه می‌دارد، و پروکسی‌های دیتاسنتر آن گزینه ارزان‌تری برای اندپوینت‌های پرحجمی هستند که محدوده‌های هاستینگ را مسدود نمی‌کنند.

این آموزش یک ردیاب رتبه مینیمال با پایتون می‌سازد که SERPها را از طریق ProxyScrape می‌خواند. فقط صفحاتی را استخراج کنید که مجاز به دسترسی به آن‌ها هستید، و به شرایط استفاده و دستورالعمل‌های robots سایت هدف احترام بگذارید.

مراحل

  1. اطلاعات ورود و پورت‌ها را جمع‌آوری کنید. در داشبورد ProxyScrape، میزبان دروازه مسکونی، پورت‌های HTTP و SOCKS5 آن، و نام کاربری/رمز عبور خود را یادداشت کنید. اندپوینت‌های چرخشی معمولاً برای هر درخواست یک IP جدید ارائه می‌دهند؛ اگر گزینه نشست چسبنده در پلن شما وجود دارد، داشبورد نحو آن را نشان می‌دهد.

  2. وابستگی‌ها را نصب کنید.

    python -m venv .venv && source .venv/bin/activate
    pip install requests beautifulsoup4
    # add PySocks only if you intend to use the SOCKS5 port:
    pip install "requests[socks]"
    
  3. اطلاعات ورود را به‌صورت متغیرهای محیطی ذخیره کنید تا هرگز به کنترل سورس شما نرسند:

    export PS_HOST="your-host"
    export PS_PORT="your-http-port"
    export PS_USER="your-username"
    export PS_PASS="your-password"
    
  4. یک دیکشنری پروکسی بسازید. برای پورت HTTP:

    import os
    proxy_url = f"http://{os.environ['PS_USER']}:{os.environ['PS_PASS']}@{os.environ['PS_HOST']}:{os.environ['PS_PORT']}"
    proxies = {"http": proxy_url, "https": proxy_url}
    

    برای پورت SOCKS5، از طرح socks5h:// استفاده کنید تا DNS در پروکسی resolve شود:

    proxy_url = f"socks5h://{os.environ['PS_USER']}:{os.environ['PS_PASS']}@{os.environ['PS_HOST']}:{os.environ['PS_SOCKS_PORT']}"
    
  5. اگر پلن شما پشتیبانی می‌کند، هدف‌گذاری جغرافیایی اضافه کنید. برخی پلن‌های مسکونی به شما اجازه می‌دهند با افزودن یک کد به نام کاربری، کشور یا شهر را پین کنید. نحو دقیق در هر پلن متفاوت است، بنابراین به‌جای حدس زدن از قالبی که در داشبورد ProxyScrape نشان داده شده استفاده کنید.

  6. یک SERP را با تلاش مجدد دریافت کنید. IP را بچرخانید، بین درخواست‌ها صبر کنید، و در صورت شکست عقب‌نشینی کنید:

    import random, time, requests
    
    HEADERS = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36",
        "Accept-Language": "en-US,en;q=0.9",
    }
    
    def fetch_serp(keyword, num=20, attempts=3):
        for attempt in range(attempts):
            try:
                r = requests.get(
                    "https://www.google.com/search",
                    params={"q": keyword, "num": num, "hl": "en"},
                    headers=HEADERS, proxies=proxies, timeout=20,
                )
                if r.status_code == 200:
                    return r.text
            except requests.RequestException:
                pass
            time.sleep(2 ** attempt + random.random())
        return None
    
  7. عمداً محدودسازی نرخ و چرخش را اعمال کنید. همزمانی را پایین نگه دارید (۲ تا ۵ ورکر)، بین کوئری‌ها یک تأخیر تصادفی ۲ تا ۱۰ ثانیه‌ای اضافه کنید، و برای هر کلمه کلیدی یک درخواست تازه استفاده کنید تا هر SERP از یک IP متفاوت بیاید. پاسخ‌های HTTP 429 یا 503 یعنی سرعت شما زیاد است — به‌جای تلاش مجدد فوری، سرعت را کم کنید.

  8. نتیجه را تجزیه و ذخیره کنید.

    from bs4 import BeautifulSoup
    html = fetch_serp("proxy comparison")
    soup = BeautifulSoup(html, "html.parser")
    for i, a in enumerate(soup.select("a[href^=http]"), start=1):
        print(i, a.get_text(" ", strip=True)[:80], a["href"])
    

    نشانه‌گذاری نتایج در طول زمان تغییر می‌کند، بنابراین قبل از اتکا به آن‌ها، سلکتورهای خود را با DOM زنده بررسی کنید. سطرهای هر اجرا (کلمه کلیدی، موقعیت، URL، مهر زمان، IP خروجی) را در یک فایل CSV یا پایگاه داده بنویسید.

  9. IP خروجی را برای هر درخواست ثبت کنید تا بتوانید یک تغییر واقعی رتبه را از تغییر موقعیت مکانی تشخیص دهید:

    curl -x "http://USER:PASS@HOST:PORT" https://ipinfo.io/json