443 Engeli Nasıl Aşılır?

Python’u henüz yeni öğreniyorum.
Bir proje üzerinden ilerliyorum.
Bir fiyat takip programı hazırlamayı deniyorum.
Bunun için bir e ticaret sitesindeki sayfalara giderek fiyatları kontrol ediyor ve eskisi ile karşılaştırıyorum.
Ancak henüz birkaç bağlantıyı kontrol ettikten sonra 443 hatası veriyor.
Hata şu şekilde:
Hata: HTTPSConnectionPool(host=‘xxx’, port=443): Max retries exceeded with url: / (Caused by ProtocolError(‘Connection aborted.’, RemoteDisconnected(‘Remote end closed connection without response’)))

Aşmak için önerisi olan varsa ve paylaşırsa çok memnun olurum.

bkz: Soru Sorarken Sıkça Düşülen Hatalar #8

xxx’teki sunucu baglantiyi kapatmis. Muhtemelen HTTPS sunucusu degil.

Sitede https kullanılmakta.

İlgili kod alanı şu şekilde. İp adresi değiştirme noktasında hatalarım olabileceğini düşünüyorum ama çözüm ne olur bilemedim.

IP adresi havuzu

ip_pool = [
‘109.228.28.57’,
‘109.210.96.208’,
‘164.36.82.226’,
‘20.250.7.174’,
‘145.247.44.76’,
‘168.52.187.193’,
‘39.31.165.211’,
‘85.182.31.33’,
‘2.8.10.158’,
‘202.236.215.107’,
‘92.87.142.248’,
‘150.241.177.242’,
‘12.11.102.82’,

]

IP adresini değiştirme işlevi

def change_ip():
# Rastgele bir IP adresi seç
new_ip = random.choice(ip_pool)
# Proxies parametresini güncelle
proxies = {
‘http’: new_ip,
‘https’: new_ip
}
# Yeni bir oturum (session) oluştur
session = requests.Session()
# Bağlantı havuzu sınırını istediğiniz sayıda (örneğin 10) olarak ayarlayın
session.mount(‘http://’, requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10))
session.mount(‘https://’, requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10))
session.proxies.update(proxies)
# Oluşturulan oturumu requests kütüphanesi üzerinden kullanın
requests.adapters.DEFAULT_RETRIES = 10
requests_session = session

Fiyat kontrolü ve bildirim gönderme işlevini güncelleyin

async def check_price(url, previous_price, df):
try:
# IP adresini değiştir
change_ip()

    response = requests_session.get(url, timeout=10)  # Oluşturulan oturumu kullanın
    content = response.content
    soup = BeautifulSoup(content, 'html.parser')

            product_name_element = soup.find('h1', class_='pr-new-br')
    if product_name_element:
        product_name = product_name_element.text.strip()
    else:
        product_name = 'Ürün adı bulunamadı'

    return product_name
except Exception as e:
    print(f"Hata: {e}")
    raise
    return None

O zaman hedef sunucu yerine baglanilan proxy baglantiyi kapatmis. Maksimum retry sayisini geciyorsa havuzdan cikartilabilir.

Bu konuda nasıl ilerleyebilirim? Bir öneriniz ya da araştırma yapabilmek için bir anahtar kelimeniz var mıdır?

Proxy calismiyorsa musteri hizmetlerine sormak disinda yapilabilecek pek bir sey yok.

Ama genel olarak HTTP protokolunun nasil calistigini ve proxy’lerin nasil kullanildigini arastirirsaniz cikan problemleri cok daha rahat anlayip cozebilecek bir hale gelebilirsiniz. Programin yaptigi isi (HTTP istegini) curl veya duz browser gibi daha rahat incelenebilen bir aletle yaparsaniz da gayet faydali olacaktir.

1 Beğeni

Öneriniz için teşekkürler. Bu konuda araştırma yapacağım.
Browser derken Selenium gibi bir kod kullanarak bir kod yazmaktan mı bahsediyorsunuz?