Читання кінцевої точки проксі та IP-адреси з'єднання в Scrapy
Використовуйте метадані запиту для вибраного проксі, розглядайте 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,
)В обробнику HTTP/1.1 Scrapy 2.13.3 адреса береться від співрозмовника з'єднання відповіді, а не від служби вихідного IP. Деякі шляхи, зокрема відповіді нульової довжини, можуть залишити її None. Інші обробники можуть заповнювати її інакше. None сам по собі не доводить прямого маршрутизування.
Для перевірки виходу запитайте довірену кінцеву точку в межах передбаченої політики проксі і збережіть ідентичність запиту разом із спостереженням. Ротаційне проміжне програмне забезпечення може дати наступній перевірці іншу кінцеву точку.
Переспрямування також створюють ще один запит. Підсумкові метадані описують цей етап; переглядайте історію переспрямувань і будь-який повторний вибір проміжного програмного забезпечення, а не вважайте це доказом маршруту першої URL-адреси.