SeleniumBase, Selenium’i bir test ortamında çalıştırmak için tasarlanmış bir araçtır ve kimlik doğrulamalı proxy’leri destekler. Bu özellik, web kazıma işlemlerinde kısıtlamaları aşmanıza ve başarı oranınızı artırmanıza yardımcı olur.
Selenium’da Proxy Kullanımıyla İlgili Sorunlar
Selenium, proxy desteği konusunda sınırlıdır. Özellikle kimlik doğrulamalı proxy’leri desteklemez. Daha önce, proxy’lerle çalışmak için yaygın olarak kullanılan SeleniumWire aracı, bir yıldan uzun süredir güncellenmemiştir ve artık önerilmemektedir.
Başlarken
Öncelikle, SeleniumBase’i kurmamız ve bir test vakası yazmamız gerekir. Test vakası, Selenium’u kontrol eder ve webdriver örneğimizi çalıştırır.
Kurulum
SeleniumBase’i aşağıdaki komutla kurabilirsiniz:
pip install seleniumbase
Test edelim
Aşağıda basit bir test sonucu bulunmaktadır. Bu kod, IPinfo API’sine bir istek gönderir ve alınan JSON yanıtını ayrıştırarak içeriğini konsola yazdırır.
from seleniumbase import BaseCase
from selenium.webdriver.common.by import By
import json
class ProxyTest(BaseCase):
def test_proxy(self):
# Siteye git
self.driver.get("https://ipinfo.io/json")
# JSON yanıtını yükle
location_info = json.loads(self.driver.find_element(By.TAG_NAME, "body").text)
# Sözlük içeriğini yazdır
for k, v in location_info.items():
print(f"{k}: {v}")
Testi Başlatalım
Kodumuzu çalıştırmak için pytest kullanacağız. Testinizi proxy kullanmadan çalıştırmak isterseniz, aşağıdaki komutu kullanabilirsiniz:
Proxy olmadan çalıştırma
pytest proxy_test.py -s
Bu komut, IP adresi ve konum bilgilerinizi konsola yazdıracaktır.
Proxy ile çalıştırma:
Bir proxy kullanarak testi çalıştırmak için aşağıdaki komutu kullanabilirsiniz:
pytest proxy_test.py --username:poassword@proxy.proxynet.io:8000 -s
Bu komut, trafiğinizi belirtilen proxy üzerinden yönlendirir ve IP adresinizin değiştiğini konsolda görebilirsiniz.
=================================================== test session starts ===================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/nultinator/clients/bright-data/seleniumbase-proxies
plugins: html-4.0.2, metadata-3.1.1, anyio-4.0.0, seleniumbase-4.34.6, ordering-0.6, rerunfailures-15.0, xdist-3.6.1
collected 1 item
proxy_test.py ip: 144.202.4.246
hostname: 144-202-4-246.lum-int.io
city: Piscataway
region: New Jersey
country: US
loc: 40.4993,-74.3990
org: AS20473 The Constant Company, LLC
postal: 08854
timezone: America/New_York
readme: https://ipinfo.io/missingauth
.
==================================================== 1 passed in 3.25s ====================================================
Bu komut, trafiğinizi bir proxy üzerinden yönlendirir ve IP adresinizin farklı bir lokasyonda olduğunu konsolda görebilirsiniz.
Proxy Döndürme
Python’un temel özelliklerini kullanarak etkili bir proxy döndürme sistemi oluşturabilirsiniz. Aşağıdaki kod, belirli ülke kodlarını kullanarak proxy’leri döndürür:
import subprocess
# Ülke kodları listesi
countries = [
"us", # Amerika Birleşik Devletleri
"es", # İspanya
"il", # İsrail
"gb", # Büyük Britanya
]
# Ülkeler arasında döngü yap ve her biri için bir komut oluştur
for country in countries:
command = f"pytest proxy_test.py --proxy=brd-customer-<KULLANICI_ADINIZ>-<BÖLGE_ADINIZ>-country-{country}:<ŞİFRENİZ>@brd.superproxy.io:33335 -s"
# Komutu çalıştır
subprocess.run(command, shell=True)
Ayrıca geçmişte yazdığımız Pyhton ile Proxy Döndürme makalemize buradan da göz atabilirsiniz.
Bu kod, belirtilen ülkelerdeki proxy’leri kullanarak testi sırayla çalıştırır ve her seferinde farklı bir IP adresi kullanmanızı sağlar.
Sonuç
Bu rehberde, SeleniumBase ile proxy kullanımını, konum kontrolünü ve proxy döndürmeyi öğrendiniz. Bu araçlar, web kazıma işlemlerinizde karşılaşabileceğiniz engelleri aşmanıza yardımcı olacaktır.
Selenium tabanlı kazıma işlemlerinizde Bright Data’nın endüstri lideri proxy hizmetleriyle tam potansiyelinizi ortaya çıkarın. Bugün ücretsiz denemenizi başlatın ve sorunsuz, güvenilir veri toplamanın keyfini çıkarın!
SeleniumBase’de başlıca hangi proxy server ürünlerimizi kullanabilirsiniz?