قراءة نقطة نهاية الوكيل وعنوان IP للاتصال في Scrapy
استخدم البيانات الوصفية للطلب من أجل الوكيل المحدد، وتعامل مع response.ip_address كمعلومة عن النظير يوفّرها المعالج، وتحقق من عنوان IP للخروج عند الوجهة.
استخدم 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 الأول.