Scrapy-ის პროქსის საბოლოო წერტილისა და კავშირის IP-ის წაკითხვა
გამოიყენეთ მოთხოვნის მეტამონაცემები არჩეული პროქსისთვის, განიხილეთ response.ip_address დამმუშავებლის მიერ მოწოდებულ თანაწვეტის ინფორმაციად და დაადასტურეთ გასვლითი IP დანიშნულების ადგილზე.
არჩეული მარშრუტის შესამოწმებლად გამოიყენეთ დასრულებულ პასუხზე მიმაგრებული Request. სამი დაკვირვება ცალ-ცალკე შეინახეთ:
| ველი | მნიშვნელობა |
|---|---|
response.request.meta.get('proxy') | ამ მოთხოვნის არჩეული პროქსის URL, როცა არსებობს |
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,
)Scrapy 2.13.3-ის HTTP/1.1 დამმუშავებელში მისამართი მოდის პასუხის კავშირის თანაწვეტისგან და არა გასვლითი IP სერვისისგან. ზოგიერთმა გზამ, მათ შორის ნულოვანი სიგრძის პასუხებმა, შეიძლება ის None დატოვოს. სხვა დამმუშავებლებმა შეიძლება ის სხვაგვარად შეავსონ. None თავისთავად არ ამტკიცებს პირდაპირ მარშრუტიზაციას.
გასვლის შესამოწმებლად ჰკითხეთ სანდო საბოლოო წერტილს გათვალისწინებული პროქსის პოლიტიკის ფარგლებში და შეინახეთ მოთხოვნის იდენტურობა დაკვირვებასთან ერთად. მბრუნავი შუამავალი პროგრამა შემდგომ შემოწმებას სხვა საბოლოო წერტილს მისცემს.
გადამისამართებები ასევე ქმნიან კიდევ ერთ მოთხოვნას. საბოლოო მეტამონაცემები ამ ეტაპს აღწერს; გადახედეთ გადამისამართებების ისტორიას და შუამავალი პროგრამის ნებისმიერ ხელახალ არჩევანს, ნაცვლად იმისა, რომ ის პირველი URL-ის მარშრუტის მტკიცებულებად მიიჩნიოთ.