Scrapy ਦਾ ਪਰਾਕਸੀ ਐਂਡਪੁਆਇੰਟ ਅਤੇ ਕਨੈਕਸ਼ਨ IP ਪੜ੍ਹਨਾ
ਚੁਣੇ ਗਏ ਪਰਾਕਸੀ ਲਈ ਬੇਨਤੀ ਦਾ ਮੈਟਾਡੇਟਾ ਵਰਤੋ, 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,
)Scrapy 2.13.3 ਦੇ HTTP/1.1 ਹੈਂਡਲਰ ਵਿੱਚ ਪਤਾ ਪ੍ਰਤੀਕਿਰਿਆ ਦੇ ਕਨੈਕਸ਼ਨ ਪੀਅਰ ਤੋਂ ਆਉਂਦਾ ਹੈ, ਕਿਸੇ ਐਗਜ਼ਿਟ-IP ਸੇਵਾ ਤੋਂ ਨਹੀਂ। ਕੁਝ ਰਸਤੇ, ਸਿਫ਼ਰ-ਲੰਬਾਈ ਵਾਲੀਆਂ ਪ੍ਰਤੀਕਿਰਿਆਵਾਂ ਸਮੇਤ, ਇਸ ਨੂੰ None ਛੱਡ ਸਕਦੇ ਹਨ। ਹੋਰ ਹੈਂਡਲਰ ਇਸ ਨੂੰ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਭਰ ਸਕਦੇ ਹਨ। None ਆਪਣੇ ਆਪ ਸਿੱਧੀ ਰੂਟਿੰਗ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ।
ਐਗਜ਼ਿਟ ਜਾਂਚ ਲਈ, ਮਨਸ਼ਾ ਕੀਤੀ ਪਰਾਕਸੀ ਨੀਤੀ ਅਧੀਨ ਭਰੋਸੇਯੋਗ ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਪੁੱਛੋ ਅਤੇ ਬੇਨਤੀ ਦੀ ਪਛਾਣ ਨਿਰੀਖਣ ਨਾਲ ਰੱਖੋ। ਘੁੰਮਦਾ ਮਿਡਲਵੇਅਰ ਅਗਲੀ ਜਾਂਚ ਨੂੰ ਦੂਜਾ ਐਂਡਪੁਆਇੰਟ ਦੇ ਸਕਦਾ ਹੈ।
ਰੀਡਾਇਰੈਕਟ ਵੀ ਇੱਕ ਹੋਰ ਬੇਨਤੀ ਬਣਾਉਂਦੇ ਹਨ। ਅੰਤਿਮ ਮੈਟਾਡੇਟਾ ਉਸ ਪੜਾਅ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ; ਪਹਿਲੇ URL ਦੇ ਰਸਤੇ ਦਾ ਸਬੂਤ ਮੰਨਣ ਦੀ ਥਾਂ ਰੀਡਾਇਰੈਕਟ ਇਤਿਹਾਸ ਅਤੇ ਮਿਡਲਵੇਅਰ ਦੀ ਕਿਸੇ ਵੀ ਮੁੜ-ਚੋਣ ਦੀ ਜਾਂਚ ਕਰੋ।