Proxy'li bir GET bir sunucuya ulaşıp ardından yönlendirmeleri izleyebilir; ta ki nihai hata ilk yanıtı gizleyene kadar. Bu ilk yanıtı tanılama için açığa çıkarın:

request = scrapy.Request(
    'https://service.example/page',
    callback=inspect_redirect,
    meta={
        'proxy': 'http://proxy.example:8080',
        'dont_redirect': True,
        'handle_httpstatus_list': [301, 302, 303, 307, 308],
    },
)

Bu isteği örümceğin mevcut start veya callback akışı üzerinden planlayın. İzin verilen bir genel sayfa denemesi için HTTP proxy listesi isteğin proxy URL'si için adaylar sağlar. inspect_redirect yanıt durumunu ve Location başlığını kaydetmeli, onu tekrar körü körüne izlememelidir.

dont_redirect bu istek için otomatik yönlendirmeyi durdurur. handle_httpstatus_list, adı geçen durumların HTTP hata filtrelemesi tarafından reddedilmek yerine callback'e ulaşmasını sağlar. Bu ayarlar middleware'in farklı sorumluluklarına ilişkindir.

Yönlendirmenin neyi seçtiğini kontrol edin: amaçlanan kanonik URL, farklı bir şema veya ana bilgisayar adı, bir oturum açma sayfası ya da yinelenen bir döngü. Başarılı aktarımdan sonra alınan 302, proxy bağlantısının açılamamasından farklı bir gözlemdir.

Normal yönlendirme işleme geri yüklendiğinde Scrapy, yanıtın istek meta verilerinde redirect_urls ve redirect_reasons alanlarını açığa çıkarır. Bunlar, yönlendirmeleri tüm tarama boyunca devre dışı bırakmadan nihai sonuca giden yolu koruyabilir.

Nihai yanıt otomatik olarak uygulamanın amaçladığı sayfa değildir. Hedefi ve yanıt içeriğini yönlendirme tanılamasıyla birlikte saklayın.

İlgili makaleler