Skip to content
intermediate

Cara Menggunakan Proxy Residensial ProxyScrape untuk Pelacakan Peringkat SEO

Bangun pelacak peringkat Python kecil yang menarik SERP melalui kumpulan proxy residensial rotasi ProxyScrape, dengan percobaan ulang, pembatasan laju, catatan penargetan geografis, dan pencatatan IP keluar per permintaan.

Web Scraping Pemantauan SEO

Ikhtisar

Mesin pencari mengembalikan hasil berbeda tergantung pada IP yang meminta. Pelacakan peringkat SEO karena itu memerlukan permintaan yang terlihat seperti pengguna biasa dari lokasi yang tepat, yang disediakan oleh kumpulan proxy residensial berotasi. Kumpulan residensial ProxyScrape (97M+ IP) memberikan IP keluar baru per permintaan atau mempertahankan sesi sticky, dan proxy datacenternya adalah opsi lebih murah untuk endpoint bervolume tinggi yang tidak memblokir rentang hosting.

Tutorial ini membangun pelacak peringkat Python minimal yang membaca SERP melalui ProxyScrape. Hanya scrape halaman yang Anda diizinkan untuk mengakses, dan hormati ketentuan layanan serta arahan robots situs target.

Langkah-langkah

  1. Kumpulkan kredensial dan port. Di dasbor ProxyScrape, catat host gateway residensial, port HTTP dan SOCKS5-nya, serta nama pengguna/kata sandi Anda. Endpoint berotasi biasanya menerbitkan IP baru per permintaan; jika opsi sesi sticky tersedia di paket Anda, dasbor menunjukkan sintaksnya.

  2. Pasang dependensi.

    python -m venv .venv && source .venv/bin/activate
    pip install requests beautifulsoup4
    # tambahkan PySocks hanya jika Anda berniat menggunakan port SOCKS5:
    pip install "requests[socks]"
    
  3. Simpan kredensial sebagai variabel lingkungan agar tidak pernah masuk ke kontrol sumber Anda:

    export PS_HOST="your-host"
    export PS_PORT="your-http-port"
    export PS_USER="your-username"
    export PS_PASS="your-password"
    
  4. Buat kamus proxy. Untuk port 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}
    

    Untuk port SOCKS5, gunakan skema socks5h:// agar DNS diselesaikan di proxy:

    proxy_url = f"socks5h://{os.environ['PS_USER']}:{os.environ['PS_PASS']}@{os.environ['PS_HOST']}:{os.environ['PS_SOCKS_PORT']}"
    
  5. Tambahkan penargetan geo jika paket Anda mendukungnya. Beberapa paket residensial memungkinkan Anda menyematkan negara atau kota dengan menambahkan kode ke nama pengguna. Sintaks persisnya berbeda per paket, jadi gunakan format yang ditampilkan di dasbor ProxyScrape Anda daripada menebak.

  6. Ambil SERP dengan percobaan ulang. Rotasi IP, tunggu di antara permintaan, dan back off saat gagal:

    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. Batasi laju dan rotasi secara sengaja. Jaga konkurensi tetap rendah (2–5 worker), tambahkan penundaan acak 2–10 detik di antara kueri, dan gunakan permintaan baru per kata kunci sehingga setiap SERP berasal dari IP yang berbeda. Respons HTTP 429 atau 503 berarti Anda terlalu cepat — perlambat alih-alih mencoba ulang segera.

  8. Parsing dan simpan hasilnya.

    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"])
    

    Markup hasil berubah seiring waktu, jadi verifikasi selector Anda terhadap DOM langsung sebelum mengandalkannya. Tulis baris setiap eksekusi (kata kunci, posisi, URL, timestamp, IP keluar) ke file CSV atau basis data.

  9. Catat IP keluar untuk setiap permintaan sehingga Anda dapat membedakan perubahan peringkat asli dari perubahan lokasi:

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