Özetle, proxy'ler ağ hizmetlerine bağlanan bir dış katman olarak hizmet veren sunuculardır. Bir bilgisayar ve kullanıcının bilgi almak istediği site için aracı görevi görürler. Kullanıcının isteği, doğrudan ilgili siteye gönderilmek yerine, önce proxy'ye yönlendirilir ve daha sonra son sunucuya gönderilir. Dolayısıyla, proxy sunucusunun IP adresi, kullanıcınınki yerine sitenin kaydettiği IP adresidir.
Peki, neden proxy kullanalım?
Örneğin, kısıtlama veya engelleme korkusu olmadan bir siteden bilgi toplama ihtiyacı varsa. Proxy, gerçek kullanıcının IP adresini maskeleyerek gerçek dijital kimliğini değiştirmeye yardımcı olur.
Herhangi bir kısıtlamanın olmadığı belirli bir ülkeden bir proxy kullanılabilir. Bunun nedeni, belirli ülkelerde bazı programlara ve web sitelerine erişimin sınırlı veya engellenmiş olmasıdır.
Belirli bir siteye çok sayıda istek gönderilirse, sistemin yüklenme ihtimali vardır. Sonuç olarak, büyük bir engellenme riski vardır. Aynı anda birden fazla proxy kullanmak, kullanıcıların istekleri belirli bir siteye eşit olarak dağıtmasına ve böylece tıkanmayı önlemesine olanak tanır.
Requests, Python kullanarak HTTP istekleri göndermek için kullanılan bir kütüphanedir. GET ve POST istekleri yapmayı kolaylaştırır. Python Requests'i proxy olmadan kullanmak HTTP istekleri gönderebilir, ancak anonimlik sağlamaz veya kısıtlamaları atlamaz.
İstekleri yüklemek için aşağıdaki komutu terminale girmeniz yeterlidir:
pip install requests
Gerekli kütüphanenin düzgün bir şekilde kurulduğunu doğrulamak için Python geliştirme ortamını açmanız ve komutu çalıştırmanız gerekir:
import requests
print(requests.__version__)
Her şey doğru şekilde yapıldıysa, komut dosyası sürüm numarasını döndürecektir.
Requests kütüphanesini kurduktan sonra HTTP isteklerini çalıştırmaya başlayabiliriz. Bununla birlikte, bir proxy'yi dahil etmek için Python'da belirli yapılandırmalar yapılmalıdır.
Python'da istekler için doğru bir proxy yapılandırmak için izlenmesi gereken adımları inceleyelim. Python Requests ile SOCKS proxy yapılandırmalarını ayrı ayrı ele alacağız.
Bir proxy kurmak için Python kullanmak, requests kütüphanesini kullanan kullanıcılar için çok kolaydır. Proxy sunucu adresinin bir sözlükte geçirilmesini ve daha sonra HTTP istekleri yapılırken kullanılmasını gerektirir.
proxies = {
"http": "http://your-proxy-ip:port",
"https": "http://your-proxy-ip:port",
}
response = requests.get("http://example.com", proxies=proxies)
Python Requests kullanırken, proxy kimlik doğrulamasını ayarlamak kolaydır. Şimdi detaylara daha yakından bakalım.
proxies = {
"http": "http://username:password@your-proxy-ip:port",
"https": "http://username:password@your-proxy-ip:port",
}
response = requests.get("http://example.com", proxies=proxies)
Doldurulması gereken iki yeni alan şunlardır:
Daha yüksek düzeyde anonimlik isteyen kullanıcılar için veya çok kısıtlanmış sitelerle çalışıyorsanız, standart HTTP proxy'leri işe yaramayabilir. Bu durumda, SOCKS proxy'leri daha iyi olabilir.
SOCKS proxy desteğini etkinleştirmek için, aşağıda listelenen komut kullanılarak ek bir kütüphanenin yüklenmesi gerekir:
pip install requests[socks]
Kurulduktan sonra, Python Requests aşağıdaki örnekte gösterildiği gibi kullanılabilecek bir SOCKS proxy kurmanıza izin verir.
import requests
proxies = {
"http": "socks5h://your-proxy-ip:port",
"https": "socks5h://your-proxy-ip:port",
}
response = requests.get("http://example.com", proxies=proxies)
Proxy sunucusunun kimlik doğrulamasına ihtiyacı varsa, bunları aşağıda gösterildiği gibi ekleyin.
proxies = {
"http": "socks5h://username:password@your-proxy-ip:port",
"https": "socks5h://username:password@your-proxy-ip:port",
}
Tek bir proxy aracılığıyla birçok istek yaparken, her isteğe eklemek yerine, proxy ile Python Requests oturumlarını kullanmak çok daha verimli hale gelir.
Bu proxy kullanma yöntemi, ayarların tüm oturumlarda korunmasına yardımcı olur. Ayrıca kodu basitleştirir, performansı artırır ve en önemlisi uygulamayı çok daha kolay hale getirir.
Bir oturum oluşturmak çok kolaydır, sadece requests.Session() yazın.
Aşağıdaki örneği ele alalım:
import requests
# Oturum oluşturma
session = requests.Session()
session.proxies = {
"http": "http://username:password@your-proxy-ip:port",
"https": "http://username:password@your-proxy-ip:port",
}
# Oturum aracılığıyla talep
response = session.get("http://example.com")
Bu oturumdaki tüm Python Requests, herhangi bir ek yapılandırma olmaksızın varsayılan olarak ayarlanan proxy'yi kullanacaktır.
Bir web sitesiyle kazıma amacıyla veya otomasyon için aktif olarak etkileşim kurduğunuzda, aynı proxy'yi tekrar tekrar kullanmak hesabınızın engellenmesine neden olabilir. Birkaç farklı proxy sunucunuz varsa, bu durum proxy'leri döndürerek yönetilebilir.
Aşağıdaki örnekte, web sayfasıyla her etkileşim için proxy'leri döndüren bir döngünün uygulanması gösterilmektedir:
import requests
import random
proxies_list = [
"http://username:password@your-proxy-ip[1]:port",
"http://username:password@your-proxy-ip[2]:port",
"http://username:password@your-proxy-ip[3]:port",
]
session = requests.Session()
for _ in range(5):
proxy = random.choice(proxies_list) # Rastgele bir proxy seçin
session.proxies = {"http": proxy, "https": proxy}
response = session.get("http://example.com")
print(f"Used proxy: {proxy}")
print(response.status_code)
Özetle, proxy'leri daha iyi yönetmenize yardımcı olabilecek bazı öneriler:
Bu makalede, proxy sunucularının ne olduğuna, Python Requests proxy'nin nasıl düzgün kullanılacağına ve kodu basitleştirmek için oturumlar aracılığıyla proxy'lerin nasıl yönetileceğine değindik. Örnek ayrıca hem SOCKS hem de normal proxy'lerin kullanımını, kimlik doğrulamanın nasıl ele alındığını ve proxy yönetimini gösterir.
Yorumlar: 0