Proxyadressen ändras i loggen. Destinationen dyker aldrig upp i proxyns åtkomstlogg. Kontrollera om din middleware över huvud taget släpper igenom förfrågan till nedladdaren.

I Scopys nedladdar-middleware innebär att returnera en Request att förfrågan schemaläggs om. Det innebär inte ”fortsätt skicka det här objektet med de metadata jag just ändrade”.

För en väljare som bara väljer en rutt är den viktiga formen:

def process_request(self, request):
    request.meta['proxy'] = self.choose_proxy()
    return None

Det här utdraget visar den aktuella hookformen; använd det middleware-gränssnitt som den installerade Scrapy-versionen stöder. Väljaren måste returnera en giltig slutpunkt och uttryckligen hantera en otillgänglig pool. En offentlig crawl som tillåter offentliga mellanhänder kan hämta HTTP-kandidater från HTTP-proxylistan för det returvärdet.

Att returnera None låter resten av förfrågnings-middlewaren och nedladdaren fortsätta. Att returnera en annan Request är användbart när du medvetet ersätter eller försöker igen med arbete, men det kräver en anledning och ett utgångsvillkor.

En roterare som returnerar samma förfrågan varje gång kan köra sin egen urvalskod om och om igen utan att någonsin upprätta en anslutning till destinationen. Att höja tidsgränser eller öppna fler proxyportar kan inte reparera den kontrollflödeslingan.

Undersök middleware-inträde, returbeteende och det första faktiska nätverksförsöket som separata händelser. En loggrada som säger ”proxy vald” bevisar bara att väljaren kördes. Den bevisar inte att en förfrågan med den valda slutpunkten skickades.

Relaterade artiklar