استخدم Request المرتبط بالاستجابة المكتملة عند فحص المسار المحدد لها. أبقِ ثلاث ملاحظات منفصلة:

الحقلالمعنى
response.request.meta.get('proxy')عنوان URL للوكيل المحدد لهذا الطلب، عند وجوده
response.ip_addressعنوان يوفّره معالج التنزيل، وقد يكون None
تقرير مصدر من وجهة موثوقةالمصدر العام المرصود هناك

داخل دالة رد النداء، استبعد أجزاء URL التي تحمل بيانات اعتماد من التشخيصات الروتينية:

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,
)

في معالج HTTP/1.1 في Scrapy 2.13.3 يأتي العنوان من نظير اتصال الاستجابة، لا من خدمة لعنوان IP للخروج. بعض المسارات، بما فيها الاستجابات ذات الطول الصفري، قد تتركه None. ويمكن لمعالجات أخرى تعبئته بشكل مختلف. ولا يثبت None بحد ذاته التوجيه المباشر.

لفحص الخروج، استعلم من نقطة نهاية موثوقة ضمن سياسة الوكيل المقصودة واحفظ هوية الطلب مع الملاحظة. قد يمنح الوسيط المتغيّر فحصًا لاحقًا نقطة نهاية أخرى.

تنشئ عمليات إعادة التوجيه طلبًا آخر أيضًا. تصف البيانات الوصفية النهائية تلك المرحلة؛ لذا افحص سجل إعادة التوجيه وأي إعادة اختيار من الوسيط بدلًا من اعتباره دليلًا على مسار عنوان URL الأول.

مقالات ذات صلة