Scrapy-nin proxy son nöqtəsini və bağlantı IP-sini oxumaq
Seçilmiş proxy üçün sorğu metadatasından istifadə edin, response.ip_address-i handler tərəfindən verilən peer məlumatı kimi qəbul edin və çıxış IP-sini təyinat yerində yoxlayın.
Tamamlanmış cavaba bağlı Request-dən istifadə edərək onun seçilmiş marşrutunu yoxlayın. Üç müşahidəni ayrı saxlayın:
| Sahə | Məna |
|---|---|
response.request.meta.get('proxy') | Bu sorğunun seçilmiş proxy URL-i, varsa |
response.ip_address | Yükləmə handler-i tərəfindən verilən ünvan, None ola bilər |
| Etibarlı təyinat yerinin mənbə hesabatı | Orada müşahidə edilən ictimai mənbə |
Callback daxilində kredensial daşıyan URL hissələrini adi diaqnostikadan çıxarı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 handler-ində ünvan cavabın bağlantı peer-indən gəlir, çıxış-IP xidmətindən deyil. Bəzi yollar, o cümlədən sıfır uzunluqlu cavablar, onu None qoya bilər. Digər handler-lər onu fərqli doldurar. None özlüyündə birbaşa marşrutlaşdırmanı sübut etmir.
Çıxış yoxlaması üçün nəzərdə tutulan proxy siyasəti çərçivəsində etibarlı son nöqtəyə sorğu göndərin və sorğunun kimliyini müşahidə ilə birlikdə saxlayın. Fırlanan middleware sonrakı yoxlamaya başqa son nöqtə verə bilər.
Yönləndirmələr də başqa sorğu yaradır. Yekun metadata həmin mərhələni təsvir edir; ilk URL-in marşrutunun sübutu kimi qəbul etmək əvəzinə yönləndirmə tarixçəsini və middleware-in hər hansı yenidən seçimini yoxlayın.