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_addressYü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.

Əlaqəli məqalələr