خواندن نقطه پایانی پراکسی و IP اتصال در Scrapy
از فراداده درخواست برای پراکسی انتخابشده استفاده کنید، response.ip_address را اطلاعات همتا که ارائهدهنده فراهم کرده بدانید، و IP خروج را در مقصد بررسی کنید.
هنگام بررسی مسیر انتخابشده، از Request متصل به پاسخ تکمیلشده استفاده کنید. سه مشاهده را جدا نگه دارید:
| فیلد | معنا |
|---|---|
response.request.meta.get('proxy') | نشانی پراکسی انتخابشده این درخواست، در صورت وجود |
response.ip_address | نشانیای که ارائهدهنده دانلود میدهد، ممکن است None باشد |
| گزارش منبع از مقصدی مورد اعتماد | منبع عمومی که آنجا مشاهده شده است |
درون callback، بخشهای 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 نخست بدانید.