Đọc điểm cuối proxy và IP kết nối của Scrapy
Dùng siêu dữ liệu của yêu cầu cho proxy đã chọn, coi response.ip_address là thông tin peer do handler cung cấp và xác minh IP ra ở đích.
Khi kiểm tra tuyến đã chọn, hãy dùng Request gắn với phản hồi đã hoàn tất. Giữ ba quan sát tách biệt:
| Trường | Ý nghĩa |
|---|---|
response.request.meta.get('proxy') | URL proxy đã chọn của yêu cầu này, khi có |
response.ip_address | Địa chỉ do handler tải xuống cung cấp, có thể là None |
| Báo cáo nguồn từ một đích tin cậy | Nguồn công khai được quan sát ở đó |
Bên trong callback, bỏ các phần URL mang thông tin xác thực khỏi chẩn đoán thường lệ:
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,
)Trong handler HTTP/1.1 của Scrapy 2.13.3, địa chỉ đến từ peer của kết nối phản hồi, không từ dịch vụ IP ra. Một số đường đi, gồm cả phản hồi có độ dài bằng không, có thể để nó là None. Handler khác có thể điền theo cách khác. None tự nó không chứng minh định tuyến trực tiếp.
Để kiểm tra đầu ra, hỏi một điểm cuối tin cậy theo chính sách proxy dự kiến và giữ danh tính của yêu cầu cùng với quan sát. Middleware luân chuyển có thể cho lần kiểm tra sau một điểm cuối khác.
Chuyển hướng cũng tạo ra một yêu cầu khác. Siêu dữ liệu cuối mô tả giai đoạn đó; hãy xem lịch sử chuyển hướng và mọi lần chọn lại của middleware thay vì coi đó là bằng chứng cho tuyến của URL đầu tiên.