Skip to content
Intermediate / 5 min read

Cara Menggunakan Proxy Residensial ProxyScrape dengan Scrapy di Python

Integrasikan proxy residensial ProxyScrape ke dalam spider Scrapy Anda untuk scraping web Python yang andal. Termasuk middleware rotasi, autentikasi, dan pengaturan SOCKS5.

SOCKS5 HTTP(S) Web Scraping

Ikhtisar

Scrapy adalah kerangka kerja Python yang kuat untuk scraping web, tetapi banyak situs memblokir permintaan dari satu IP. Menggunakan proxy dari ProxyScrape membantu Anda mendistribusikan permintaan, menghindari batas laju, dan mengakses konten yang dibatasi secara geografis. ProxyScrape menawarkan proxy residensial, pusat data, dan seluler dengan dukungan HTTP dan SOCKS5, penagihan bayar sesuai penggunaan atau bulanan tetap, dan kumpulan 97 juta+ IP yang dibangun untuk uptime jangka panjang.

Tutorial ini menunjukkan cara mengintegrasikan proxy ProxyScrape ke dalam proyek Scrapy. Anda akan belajar mengonfigurasi autentikasi, merotasi proxy per permintaan, dan menangani kesalahan umum. Pendekatan ini berfungsi di Windows, macOS, dan Linux.

Prasyarat

  • Python 3.8 atau lebih baru terinstal.
  • Scrapy terinstal (pip install scrapy).
  • Akun ProxyScrape dengan proxy residensial atau pusat data. Anda dapat mendaftar untuk paket atau menggunakan bayar sesuai penggunaan.
  • Kredensial proxy Anda: host, port, nama pengguna, dan kata sandi dari dasbor ProxyScrape.

Memahami Autentikasi Proxy di Scrapy

ProxyScrape menggunakan autentikasi nama pengguna/kata sandi. Di Scrapy, Anda meneruskan URL proxy di kunci meta permintaan proxy. Formatnya adalah:

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

Scrapy secara native mendukung proxy HTTP dan HTTPS. Untuk SOCKS5, Anda memerlukan paket tambahan seperti scrapy-socks.

Langkah 1: Instal Scrapy dan Buat Proyek

Buka terminal dan jalankan:

pip install scrapy
scrapy startproject proxyscrape_scrapy
cd proxyscrape_scrapy

Ini membuat proyek Scrapy baru dengan direktori spider default.

Langkah 2: Dapatkan Kredensial Proxy dari ProxyScrape

Masuk ke dasbor ProxyScrape Anda dan buat daftar proxy. Anda akan menerima host, port, nama pengguna, dan kata sandi. Untuk proxy residensial, Anda mungkin mendapatkan host gateway yang berotasi secara otomatis, atau daftar endpoint. Untuk proxy pusat data, Anda biasanya mendapatkan IP dan port tetap.

Contoh kredensial:

  • Host: proxy.proxyscrape.com
  • Port: 8080
  • Nama pengguna: user123
  • Kata sandi: pass456

URL proxy Anda menjadi: http://user123:[email protected]:8080

Jika kata sandi Anda mengandung karakter khusus, lakukan URL-encode (misalnya, @ menjadi %40).

Langkah 3: Konfigurasikan Proxy Dasar di Spider

Buat spider sederhana yang memeriksa alamat IP Anda melalui proxy. Di 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}

Jalankan spider:

scrapy crawl example -O output.json

Output menunjukkan alamat IP seperti yang terlihat oleh situs target. Jika cocok dengan IP proxy Anda, pengaturan berhasil.

Langkah 4: Terapkan Middleware Proxy Rotasi

Merotasi proxy per permintaan meningkatkan anonimitas dan mengurangi kemungkinan pemblokiran. Buat middleware di 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}')

Aktifkan middleware dan tentukan daftar proxy Anda di 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',
]

Sekarang setiap permintaan menggunakan proxy acak dari daftar. Anda dapat mengisi daftar dengan beberapa endpoint ProxyScrape atau menggunakan gateway rotasi mereka (satu endpoint yang berotasi secara otomatis).

Langkah 5: Tangani Proxy SOCKS5 (Opsional)

Scrapy tidak mendukung SOCKS5 secara native. Instal scrapy-socks:

pip install scrapy-socks

Tambahkan middleware SOCKS5 ke settings.py:

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

Kemudian atur proxy di meta permintaan sebagai socks5://user:pass@host:port. Perhatikan bahwa Anda tidak dapat menggunakan middleware rotasi dan scrapy-socks secara bersamaan tanpa logika khusus. Untuk sebagian besar kasus penggunaan, proxy HTTP lebih sederhana dan memadai.

Langkah 6: Uji dan Verifikasi Rotasi

Jalankan spider Anda dan periksa output:

scrapy crawl example -O output.json

Periksa output.json. Jika Anda melihat alamat IP yang berbeda di seluruh permintaan, rotasi berfungsi. Anda juga dapat menambahkan jeda antar permintaan agar sopan:

DOWNLOAD_DELAY = 2

Pemecahan Masalah

  • 407 Proxy Authentication Required: Periksa nama pengguna dan kata sandi Anda. Pastikan sudah di-URL-encode. Verifikasi bahwa paket ProxyScrape Anda aktif.
  • Koneksi ditolak atau timeout: Konfirmasi host dan port. Periksa firewall atau VPN Anda. Coba endpoint proxy yang berbeda.
  • Pemblokiran sering: Beralih ke proxy residensial, tingkatkan DOWNLOAD_DELAY, dan aktifkan rotasi. Proxy pusat data lebih mungkin diblokir di situs yang ketat.
  • Kesalahan SOCKS5: Pastikan scrapy-socks terinstal dan terkonfigurasi. Jika Anda mendapatkan kesalahan impor, instal ulang paket.
  • Kesalahan SSL: Tambahkan DOWNLOAD_HANDLERS atau gunakan https di URL proxy jika situs target memerlukannya.

Memilih Jenis Proxy yang Tepat untuk Scrapy

Jenis Proxy Terbaik Untuk Catatan
Residensial Scraping situs dengan perlindungan anti-bot Anonimitas tinggi, kumpulan besar, lebih lambat
Pusat Data Scraping berkecepatan tinggi untuk situs yang kurang terlindungi Lebih cepat, lebih murah, lebih mudah diblokir
Seluler Scraping konten atau aplikasi khusus seluler Jarang diblokir, biaya lebih tinggi

ProxyScrape menyediakan ketiga jenis dengan penagihan fleksibel. Mulailah dengan residensial untuk sebagian besar tugas scraping.

Ringkasan

Anda telah mempelajari cara mengintegrasikan proxy ProxyScrape ke dalam Scrapy: instal Scrapy, dapatkan kredensial, konfigurasikan proxy dasar, buat middleware rotasi, dan opsional gunakan SOCKS5. Uji pengaturan Anda dan sesuaikan rotasi dan jeda untuk menghindari pemblokiran. Proxy residensial dan pusat data ProxyScrape yang andal dengan 97 juta+ IP dan uptime jangka panjang menjadikannya pilihan yang solid untuk proyek scraping Python.