Scrapy'nin proxy uç noktasını ve bağlantı IP'sini okuma
Seçilen proxy için istek meta verilerini kullanın, response.ip_address değerini işleyicinin sağladığı eş bilgisi olarak değerlendirin ve hedefte çıkış IP'sini doğrulayın.
Seçilen rotayı incelerken tamamlanan yanıta bağlı Request'i kullanın. Üç gözlemi ayrı tutun:
| Alan | Anlam |
|---|---|
response.request.meta.get('proxy') | Bu isteğin seçilen proxy URL'si, varsa |
response.ip_address | İndirme işleyicisinin sağladığı adres, None olabilir |
| Güvenilir bir hedeften kaynak raporu | Orada gözlenen genel kaynak |
Bir callback içinde, kimlik bilgisi taşıyan URL parçalarını rutin tanılamadan çıkarın:
from urllib.parse import urlsplit
proxy = response.request.meta.get('proxy')
proxy_host = urlsplit(proxy).hostname if proxy else None
self.logger.info(
'target_host=%s proxy_host=%s peer_ip=%s',
urlsplit(response.url).hostname, proxy_host, response.ip_address,
)Scrapy 2.13.3'ün HTTP/1.1 işleyicisinde adres, yanıtın bağlantı eşinden gelir; çıkış IP hizmetinden değil. Bazı yollar, sıfır uzunluklu yanıtlar dahil, onu None bırakabilir. Diğer işleyiciler farklı şekilde doldurabilir. None tek başına doğrudan yönlendirmeyi kanıtlamaz.
Çıkış denetimi için amaçlanan proxy politikası altında güvenilir bir uç noktaya sorun ve isteğin kimliğini gözlemle birlikte saklayın. Dönen ara katman, sonraki bir denetime başka bir uç nokta verebilir.
Yönlendirmeler de başka bir istek oluşturur. Son meta veriler o aşamayı tanımlar; ilk URL'nin rotasının kanıtı saymak yerine yönlendirme geçmişini ve ara katmanın olası yeniden seçimini inceleyin.