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.
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-socksterinstal dan terkonfigurasi. Jika Anda mendapatkan kesalahan impor, instal ulang paket. - Kesalahan SSL: Tambahkan
DOWNLOAD_HANDLERSatau gunakanhttpsdi 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.