Selenium proxy kurulumu, web trafiğini belirli bir proxy sunucusu üzerinden yönlendirmek için tarayıcı seçeneklerinin veya capability'lerinin yapılandırılmasını içerir; böylece coğrafi engel aşma, anonimlik ve ağ trafiği incelemesi gibi işler mümkün olur. Bu yapılandırma; coğrafi kısıtlamaları aşmayı, bir web sitesinin farklı ağ konumlarından nasıl davrandığını test etmeyi veya test ve veri çıkarma sırasında ağ trafiğini yönetmeyi gerektiren otomasyonlar için gereklidir.
Selenium ile proxy kullanmak, tüm tarayıcı trafiğini bir aracı sunucu üzerinden yönlendirmenizi sağlar. Bu yetenek şunlar için kritiktir:
* Coğrafi içerik kısıtlamalarını aşmak.
* Otomatik web etkileşimleri sırasında anonimliği korumak.
* Bir web sitesinin farklı ağ noktalarından erişildiğinde nasıl çalıştığını veya davrandığını test etmek.
* Ağ isteklerini ve yanıtlarını izlemek veya hata ayıklamak.
* Dahili ya da kısıtlı ağlara erişmek.
Genel proxy kavramları
Selenium'u yapılandırmadan önce temel proxy kavramlarını anlamak çok önemlidir.
Proxy türleri
- HTTP/HTTPS proxy'ler: Bu proxy'ler uygulama katmanında (Layer 7) çalışır. HTTP proxy'ler şifrelenmemiş HTTP trafiğini, HTTPS proxy'ler ise şifrelenmiş HTTPS trafiğini işler. Birçok HTTPS proxy SSL araya girme (Man-in-the-Middle) yapar: trafiği çözer, inceler ve iletmeden önce yeniden şifreler. Proxy'nin sertifikası tarayıcı tarafından güvenilir sayılmıyorsa bu bazen SSL sertifika hatalarına yol açabilir.
- SOCKS proxy'ler (SOCKS4, SOCKS5): SOCKS (Socket Secure) proxy'ler daha alt bir seviyede (Layer 5) çalışır. Protokolden bağımsızdırlar; yani yalnızca HTTP/HTTPS değil, her türlü TCP/UDP trafiğini işleyebilirler. SOCKS5 daha yaygın sürümdür; kimlik doğrulamayı ve UDP trafiğini destekler, bu da onu web taramanın ötesindeki çeşitli uygulamalar için çok yönlü kılar.
Proxy kimlik doğrulaması
Birçok proxy sunucusu erişim vermek için kimlik doğrulama (kullanıcı adı ve parola) ister. Selenium, temel kimlik doğrulamayı kimlik bilgilerini doğrudan proxy dizesine, genellikle username:password@host:port biçiminde gömerek yönetir.
Tarayıcı seçenekleri/capability'leri
Selenium, web tarayıcılarıyla belirli sürücü çalıştırılabilirleri üzerinden etkileşime girer (örneğin Chrome için ChromeDriver, Firefox için GeckoDriver). Bu sürücüler, proxy ayarlarının tanımlandığı bir Options nesnesi (örneğin ChromeOptions, FirefoxOptions) kabul eder. Bu ayarlar tarayıcıya başlatılırken aktarılır ve o tarayıcı örneğinden gelen tüm trafiğin belirtilen proxy üzerinden yönlendirilmesini sağlar.
Selenium proxy kurulumu: dile özgü örnekler
Aşağıdaki bölümlerde Python, Java ve C# kullanılarak Chrome ve Firefox için proxy'lerin nasıl yapılandırılacağı ayrıntılı olarak anlatılıyor. Aynı ilkeler, ilgili Options nesneleri kullanılarak Edge veya Safari gibi Selenium'un desteklediği diğer tarayıcılara da uygulanabilir.
Python
Python, tarayıcı seçenekleri içinde proxy yapılandırmalarını tanımlamak için selenium.webdriver.Proxy ve ProxyType kullanır.
Temel HTTP/HTTPS proxy
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
# Proxy ayarları
PROXY_HOST = "your_proxy_host"
PROXY_PORT = 8080 # Veya HTTPS için 443
# --- Chrome örneği ---
chrome_options = ChromeOptions()
chrome_options.add_argument(f'--proxy-server={PROXY_HOST}:{PROXY_PORT}')
# İsteğe bağlı: proxy sorun çıkarıyorsa SSL sertifika denetimlerini devre dışı bırakın (dikkatli kullanın)
# chrome_options.add_argument('--ignore-certificate-errors')
driver_chrome = webdriver.Chrome(options=chrome_options)
driver_chrome.get("http://www.example.com")
# ... işlemleri yapın ...
driver_chrome.quit()
# --- Firefox örneği ---
firefox_options = FirefoxOptions()
firefox_options.set_preference("network.proxy.type", 1) # Elle proxy yapılandırması
firefox_options.set_preference("network.proxy.http", PROXY_HOST)
firefox_options.set_preference("network.proxy.http_port", PROXY_PORT)
firefox_options.set_preference("network.proxy.ssl", PROXY_HOST)
firefox_options.set_preference("network.proxy.ssl_port", PROXY_PORT)
firefox_options.set_preference("network.proxy.no_proxies_on", "") # Proxy'nin tüm host'lar için kullanılmasını sağlar
driver_firefox = webdriver.Firefox(options=firefox_options)
driver_firefox.get("http://www.example.com")
# ... işlemleri yapın ...
driver_firefox.quit()
Kimlik doğrulamalı HTTP/HTTPS proxy
Kimlik doğrulamalı HTTP/HTTPS proxy'ler için kimlik bilgilerini doğrudan proxy dizesine gömün.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
PROXY_HOST = "your_proxy_host"
PROXY_PORT = 8080
PROXY_USER = "your_username"
PROXY_PASS = "your_password"
# --- Chrome örneği ---
# Biçim: user:pass@host:port
authenticated_proxy = f"{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
chrome_options = ChromeOptions()
chrome_options.add_argument(f'--proxy-server={authenticated_proxy}')
driver_chrome = webdriver.Chrome(options=chrome_options)
driver_chrome.get("http://www.example.com")
driver_chrome.quit()
# --- Firefox örneği ---
# Firefox'un yerel tercihleri, HTTP/HTTPS için proxy dizesinde kullanıcı adı/parolayı
# doğrudan desteklemez. Yaygın bir geçici çözüm, bir tarayıcı uzantısı veya proxy yöneticisi kullanmaktır.
# Bununla birlikte, capability'ler üzerinden "direct" proxy seçeneği kullanılırsa (Chrome'un --proxy-server
# argümanına kıyasla Firefox'ta daha az yaygındır), işe yarayabilir.
# Firefox'ta sağlam bir kimlik doğrulamalı proxy için bir proxy uzantısı ya da SOCKS5 proxy kullanmayı düşünün.
# Aşağıdaki, Firefox'ta tüm kimlik doğrulamalı HTTP/HTTPS proxy'ler için doğrudan işe yaramayabilecek genel bir yaklaşımdır.
# Basitlik ve tarayıcılar arası tutarlılık için, kimlik doğrulama şartsa SOCKS5 kullanmayı düşünün.
# Standart Firefox tercihleri, HTTP/HTTPS için user:pass gömmeyi doğrudan desteklemez.
# Firefox'ta kimlik doğrulamalı HTTP/HTTPS proxy'lerde tarayıcı genellikle kimlik bilgilerini sorar.
# WebDriver, tarayıcının bu yerel kimlik doğrulama istemleriyle doğrudan etkileşime giremez.
# Yaygın bir çözüm, kimlik doğrulamayı URL üzerinden destekleyen bir proxy kullanmak (bazı SOCKS5 proxy'ler gibi)
# ya da proxy kimlik doğrulamasını yöneten bir tarayıcı uzantısı kullanmaktır.
# Bu örnekte, karmaşıklığı ve tarayıcının yerel kimlik doğrulama istemleri için WebDriver'ın doğrudan
# desteği olmaması nedeniyle Firefox'ta doğrudan kimlik doğrulamalı HTTP/HTTPS proxy kurulumunu atlıyoruz.
SOCKS proxy
SOCKS proxy'ler SOCKS sürümünün belirtilmesini gerektirir. Özellikleri nedeniyle genellikle SOCKS5 tercih edilir.
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
PROXY_HOST = "your_socks_proxy_host"
PROXY_PORT = 1080 # Yaygın SOCKS portu
PROXY_USER = "your_username" # SOCKS5 için isteğe bağlı
PROXY_PASS = "your_password" # SOCKS5 için isteğe bağlı
# --- Chrome örneği ---
chrome_options = ChromeOptions()
# Kimlik doğrulamalı SOCKS5 için biçim: socks5://user:pass@host:port
# Kimlik doğrulamasız SOCKS5 için biçim: socks5://host:port
# SOCKS4 için socks4://host:port kullanın
socks_proxy_string = f"socks5://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}" if PROXY_USER else f"socks5://{PROXY_HOST}:{PROXY_PORT}"
chrome_options.add_argument(f'--proxy-server={socks_proxy_string}')
driver_chrome = webdriver.Chrome(options=chrome_options)
driver_chrome.get("http://www.example.com")
driver_chrome.quit()
# --- Firefox örneği ---
firefox_options = FirefoxOptions()
firefox_options.set_preference("network.proxy.type", 1) # Elle proxy yapılandırması
firefox_options.set_preference("network.proxy.socks", PROXY_HOST)
firefox_options.set_preference("network.proxy.socks_port", PROXY_PORT)
firefox_options.set_preference("network.proxy.socks_version", 5) # SOCKS5 için
firefox_options.set_preference("network.proxy.socks_username", PROXY_USER) # Kimlik doğrulamalı SOCKS5 için
firefox_options.set_preference("network.proxy.socks_password", PROXY_PASS) # Kimlik doğrulamalı SOCKS5 için
firefox_options.set_preference("network.proxy.no_proxies_on", "")
driver_firefox = webdriver.Firefox(options=firefox_options)
driver_firefox.get("http://www.example.com")
driver_firefox.quit()
Java
Java, org.openqa.selenium.Proxy sınıfını kullanır ve bunu tarayıcı sürücüsünün capability'leri içinde ayarlar.
Temel HTTP/HTTPS proxy
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
public class SeleniumProxySetup {
public static void main(String[] args) {
String PROXY_HOST = "your_proxy_host";
int PROXY_PORT = 8080;
// --- Chrome örneği ---
ChromeOptions chromeOptions = new ChromeOptions();
Proxy proxyChrome = new Proxy();
proxyChrome.setHttpProxy(PROXY_HOST + ":" + PROXY_PORT);
proxyChrome.setSslProxy(PROXY_HOST + ":" + PROXY_PORT); // HTTPS için de ayarlayın
chromeOptions.setCapability("proxy", proxyChrome);
WebDriver driverChrome = new ChromeDriver(chromeOptions);
driverChrome.get("http://www.example.com");
// ... işlemleri yapın ...
driverChrome.quit();
// --- Firefox örneği ---
FirefoxOptions firefoxOptions = new FirefoxOptions();
Proxy proxyFirefox = new Proxy();
proxyFirefox.setHttpProxy(PROXY_HOST + ":" + PROXY_PORT);
proxyFirefox.setSslProxy(PROXY_HOST + ":" + PROXY_PORT); // HTTPS için de ayarlayın
firefoxOptions.setCapability("proxy", proxyFirefox);
WebDriver driverFirefox = new FirefoxDriver(firefoxOptions);
driverFirefox.get("http://www.example.com");
// ... işlemleri yapın ...
driverFirefox.quit();
}
}
Kimlik doğrulamalı HTTP/HTTPS proxy
Python'a benzer şekilde, temel HTTP/HTTPS kimlik doğrulamasında kimlik bilgileri proxy dizesine gömülür.
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
// Kimlik doğrulamalı HTTP/HTTPS için Firefox örneği, yerel istemler nedeniyle karmaşıktır.
// Firefox kimlik doğrulaması için SOCKS5 ya da bir tarayıcı uzantısı düşünün.
public class SeleniumAuthenticatedProxySetup {
public static void main(String[] args) {
String PROXY_HOST = "your_proxy_host";
int PROXY_PORT = 8080;
String PROXY_USER = "your_username";
String PROXY_PASS = "your_password";
// --- Chrome örneği ---
ChromeOptions chromeOptions = new ChromeOptions();
Proxy proxyChrome = new Proxy();
// Biçim: user:pass@host:port
String authenticatedProxyString = PROXY_USER + ":" + PROXY_PASS + "@" + PROXY_HOST + ":" + PROXY_PORT;
proxyChrome.setHttpProxy(authenticatedProxyString);
proxyChrome.setSslProxy(authenticatedProxyString); // HTTPS için de ayarlayın
chromeOptions.setCapability("proxy", proxyChrome);
WebDriver driverChrome = new ChromeDriver(chromeOptions);
driverChrome.get("http://www.example.com");
driverChrome.quit();
// --- Firefox örneği ---
// Python'da belirtildiği gibi, Firefox'un yerel tercihleri, bir tarayıcı uzantısı olmadan
// WebDriver capability'leri üzerinden HTTP/HTTPS proxy'ler için kullanıcı adı/parola gömmeyi
// doğrudan desteklemez. Tarayıcı genellikle kimlik bilgilerini sorar.
// Firefox'ta sağlam bir kimlik doğrulamalı proxy için SOCKS5 proxy ya da bir proxy uzantısı kullanmayı düşünün.
}
}
SOCKS proxy
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
public class SeleniumSocksProxySetup {
public static void main(String[] args) {
String PROXY_HOST = "your_socks_proxy_host";
int PROXY_PORT = 1080; // Yaygın SOCKS portu
String PROXY_USER = "your_username"; // SOCKS5 için isteğe bağlı
String PROXY_PASS = "your_password"; // SOCKS5 için isteğe bağlı
// --- Chrome örneği ---
ChromeOptions chromeOptions = new ChromeOptions();
Proxy proxyChrome = new Proxy();
// Kimlik doğrulamalı SOCKS5 için biçim: socks5://user:pass@host:port
// Kimlik doğrulamasız SOCKS5 için biçim: socks5://host:port
String socksProxyString = PROXY_USER != null && !PROXY_USER.isEmpty()
? "socks5://" + PROXY_USER + ":" + PROXY_PASS + "@" + PROXY_HOST + ":" + PROXY_PORT
: "socks5://" + PROXY_HOST + ":" + PROXY_PORT;
chromeOptions.addArguments("--proxy-server=" + socksProxyString); // Chrome, SOCKS için --proxy-server argümanını kullanır
WebDriver driverChrome = new ChromeDriver(chromeOptions);
driverChrome.get("http://www.example.com");
driverChrome.quit();
// --- Firefox örneği ---
FirefoxOptions firefoxOptions = new FirefoxOptions();
Proxy proxyFirefox = new Proxy();
proxyFirefox.setSocksProxy(PROXY_HOST + ":" + PROXY_PORT);
proxyFirefox.setSocksVersion(5); // SOCKS5 için
// SOCKS kimlik doğrulaması için Firefox tercihleri
firefoxOptions.setPreference("network.proxy.socks_username", PROXY_USER);
firefoxOptions.setPreference("network.proxy.socks_password", PROXY_PASS);
firefoxOptions.setCapability("proxy", proxyFirefox);
WebDriver driverFirefox = new FirefoxDriver(firefoxOptions);
driverFirefox.get("http://www.example.com");
driverFirefox.quit();
}
}
C
C#, OpenQA.Selenium.Proxy sınıfını kullanır ve bunu tarayıcı seçenekleri içinde ayarlar.
Temel HTTP/HTTPS proxy
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
public class SeleniumProxySetup
{
public static void Main(string[] args)
{
string PROXY_HOST = "your_proxy_host";
int PROXY_PORT = 8080;
// --- Chrome örneği ---
ChromeOptions chromeOptions = new ChromeOptions();
Proxy proxyChrome = new Proxy();
proxyChrome.HttpProxy = $"{PROXY_HOST}:{PROXY_PORT}";
proxyChrome.SslProxy = $"{PROXY_HOST}:{PROXY_PORT}"; // HTTPS için de ayarlayın
chromeOptions.Proxy = proxyChrome;
IWebDriver driverChrome = new ChromeDriver(chromeOptions);
driverChrome.Navigate().GoToUrl("http://www.example.com");
// ... işlemleri yapın ...
driverChrome.Quit();
// --- Firefox örneği ---
FirefoxOptions firefoxOptions = new FirefoxOptions();
Proxy proxyFirefox = new Proxy();
proxyFirefox.HttpProxy = $"{PROXY_HOST}:{PROXY_PORT}";
proxyFirefox.SslProxy = $"{PROXY_HOST}:{PROXY_PORT}"; // HTTPS için de ayarlayın
firefoxOptions.Proxy = proxyFirefox;
IWebDriver driverFirefox = new FirefoxDriver(firefoxOptions);
driverFirefox.Navigate().GoToUrl("http://www.example.com");
// ... işlemleri yapın ...
driverFirefox.Quit();
}
}
Kimlik doğrulamalı HTTP/HTTPS proxy
Temel kimlik doğrulama için kimlik bilgilerini proxy dizesine gömün.
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
// Kimlik doğrulamalı HTTP/HTTPS için Firefox örneği, yerel istemler nedeniyle karmaşıktır.
// Firefox kimlik doğrulaması için SOCKS5 ya da bir tarayıcı uzantısı düşünün.
public class SeleniumAuthenticatedProxySetup
{
public static void Main(string[] args)
{
string PROXY_HOST = "your_proxy_host";
int PROXY_PORT = 8080;
string PROXY_USER = "your_username";
string PROXY_PASS = "your_password";
// --- Chrome örneği ---
ChromeOptions chromeOptions = new ChromeOptions();
Proxy proxyChrome = new Proxy();
// Biçim: user:pass@host:port
string authenticatedProxyString = $"{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}";
proxyChrome.HttpProxy = authenticatedProxyString;
proxyChrome.SslProxy = authenticatedProxyString; // HTTPS için de ayarlayın
chromeOptions.Proxy = proxyChrome;
IWebDriver driverChrome = new ChromeDriver(chromeOptions);
driverChrome.Navigate().GoToUrl("http://www.example.com");
driverChrome.Quit();
// --- Firefox örneği ---
// Python ve Java'da belirtildiği gibi, Firefox'un yerel tercihleri, bir tarayıcı uzantısı olmadan
// WebDriver capability'leri üzerinden HTTP/HTTPS proxy'ler için kullanıcı adı/parola gömmeyi
// doğrudan desteklemez. Tarayıcı genellikle kimlik bilgilerini sorar.
// Firefox'ta sağlam bir kimlik doğrulamalı proxy için SOCKS5 proxy ya da bir proxy uzantısı kullanmayı düşünün.
}
}
SOCKS proxy
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
public class SeleniumSocksProxySetup
{
public static void Main(string[] args)
{
string PROXY_HOST = "your_socks_proxy_host";
int PROXY_PORT = 1080; // Yaygın SOCKS portu
string PROXY_USER = "your_username"; // SOCKS5 için isteğe bağlı
string PROXY_PASS = "your_password"; // SOCKS5 için isteğe bağlı
// --- Chrome örneği ---
ChromeOptions chromeOptions = new ChromeOptions();
// Chrome, SOCKS için --proxy-server argümanını kullanır.
// Kimlik doğrulamalı SOCKS5 için biçim: socks5://user:pass@host:port
// Kimlik doğrulamasız SOCKS5 için biçim: socks5://host:port
string socksProxyString = string.IsNullOrEmpty(PROXY_USER)
? $"socks5://{PROXY_HOST}:{PROXY_PORT}"
: $"socks5://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}";
chromeOptions.AddArgument($"--proxy-server={socksProxyString}");
IWebDriver driverChrome = new ChromeDriver(chromeOptions);
driverChrome.Navigate().GoToUrl("http://www.example.com");
driverChrome.Quit();
// --- Firefox örneği ---
FirefoxOptions firefoxOptions = new FirefoxOptions();
Proxy proxyFirefox = new Proxy();
proxyFirefox.SocksProxy = $"{PROXY_HOST}:{PROXY_PORT}";
proxyFirefox.SocksVersion = 5; // SOCKS5 için
// SOCKS kimlik doğrulaması için Firefox tercihleri
firefoxOptions.SetPreference("network.proxy.socks_username", PROXY_USER);
firefoxOptions.SetPreference("network.proxy.socks_password", PROXY_PASS);
firefoxOptions.Proxy = proxyFirefox;
IWebDriver driverFirefox = new FirefoxDriver(firefoxOptions);
driverFirefox.Navigate().GoToUrl("http://www.example.com");
driverFirefox.Quit();
}
}
Proxy türlerinin karşılaştırması
| Özellik | HTTP proxy | HTTPS proxy | SOCKS proxy (SOCKS5) |
|---|---|---|---|
| Protokol katmanı | Uygulama (Layer 7) | Uygulama (Layer 7) | Oturum (Layer 5) |
| İşlenen trafik | Yalnızca HTTP trafiği | Yalnızca şifreli HTTP (HTTPS) trafiği | Her türlü TCP/UDP trafiği |
| Şifreleme | Yok (istemci-proxy arası) | İstemci-proxy arası (yeniden şifreleyebilir) | Yok (istemci-proxy arası), uygulama düzeyindeki şifreleme yine çalışır |
| Anonimlik | Başlıklarda özgün IP'yi açığa çıkarabilir | Daha iyi, ama yine de bir proxy | Yüksek, protokolden daha bağımsız, daha az başlık manipülasyonu |
| Kimlik doğrulama | Basic, Digest (başlıklar üzerinden) | Basic, Digest (başlıklar üzerinden) | Kullanıcı adı/parola, GSS-API |
| Kullanım alanı | Basit web tarama, önbellekleme, içerik filtreleme | Güvenli web tarama, hassas veriler, SSL denetimi | Genel amaçlı, P2P, oyun, VPN benzeri işlevsellik |
| Performans | HTTP için genellikle daha hızlı | Şifreleme/şifre çözme kaynaklı ek yük | Alt seviyede işlem yaptığı için daha yavaş olabilir |
Sık karşılaşılan sorunlar ve giderme yolları
- Proxy çalışmıyor: Proxy host'unu ve portunu doğrulayın. Proxy sunucusunun çevrimiçi ve Selenium'un çalıştığı makineden erişilebilir olduğundan emin olun. Güvenlik duvarı kuralları proxy'ye giden bağlantıları engelliyor olabilir.
- Kimlik doğrulama hatası: Kullanıcı adını ve parolayı tekrar kontrol edin. Proxy'nin, Selenium'un kullandığı kimlik doğrulama yöntemini (genellikle URL'ye gömülü temel kimlik doğrulama) desteklediğini doğrulayın.
- SSL sertifika hataları: Bir HTTPS proxy SSL araya girme yapıyorsa, tarayıcı proxy'nin dinamik olarak ürettiği sertifikaya güvenmediği için sertifika uyarıları verebilir. Seçenekler:
- Sertifika doğrulamasını devre dışı bırakmak (örneğin Chrome için
--ignore-certificate-errors), ancak bu bir güvenlik riskidir ve üretimde önerilmez. - Proxy'nin kök sertifikasını tarayıcının güven deposuna yüklemek.
- Sertifika doğrulamasını devre dışı bırakmak (örneğin Chrome için
- Zaman aşımı hataları: Proxy sunucusu yavaş, aşırı yüklü olabilir ya da ağ sorunları yaşıyor olabilir. Selenium'un örtük veya açık bekleme sürelerini artırın ya da başka bir proxy ile test edin.
- Tarayıcıya özgü tuhaflıklar: Genel yaklaşım tutarlı olsa da, her tarayıcı sürücüsünün proxy ayarlarını ele alışında küçük farklar vardır. Beklenmeyen bir davranışla karşılaşırsanız tarayıcıya özgü belgelere bakın.
En iyi uygulamalar
- Kimlik bilgileri için ortam değişkenleri: Hassas proxy kullanıcı adlarını ve parolalarını doğrudan betiğe sabit olarak yazmaktan kaçının. Bunun yerine ortam değişkenlerinden veya güvenli bir yapılandırma yönetimi sisteminden alın.
- Adanmış proxy yöneticisi: Proxy rotasyonu, büyük proxy listelerinin yönetimi veya gelişmiş proxy mantığı gibi karmaşık senaryolarda, adanmış bir proxy yöneticisi kütüphanesi ya da ticari bir proxy servisinin SDK'sını kullanmayı düşünün.
- Hata yönetimi: Proxy bağlantı hatalarını, kimlik doğrulama hatalarını veya ağ zaman aşımlarını düzgün biçimde ele almak için sağlam
try-catchblokları uygulayın. - Headless mod uyumluluğu: Proxy yapılandırmaları headless tarayıcı modlarıyla sorunsuz çalışır; bu da sunucu tarafı otomasyon için avantajlıdır.
