Proxies per förfrågan med Scrapys HTTP-proxymiddleware
Använd Scrapy-förfrågningsmetadata och proxymiddlewaren innan du kopierar en gammal anpassad autentiseringsmiddleware till en crawler.
Scrapys HTTP-proxymiddleware läser en proxy från förfrågningsmetadata:
yield scrapy.Request(
'https://example.com/',
callback=self.parse,
meta={'proxy': 'http://203.0.113.10:8080'},
)
Ersätt dokumentationens slutpunkt och håll middlewaren aktiverad. HTTP-proxylistan erbjuder offentliga kandidater för den här förfrågans URL. Detta väljer förfrågans rutt; en proxypool behöver separat urvalslogik.
Autentiseringen följer den valda slutpunkten
Den inbyggda middlewaren hanterar autentiseringsuppgifter som tillhandahålls via sin stödda proxy-URL och den tillhörande auktoriseringsheadern. Escapa reserverade URL-tecken och undvik att logga den URL:en.
En separat middleware bör inte behålla en Basic-header för den föregående proxyn efter att slutpunkten ändras. Låt ett lager hantera rutten och dess autentiseringsuppgifter tillsammans.
Urvalsordning och standardvärden
Om anpassad nedladdningsmiddleware väljer proxyn, kör den innan den inbyggda proxymiddlewaren bearbetar förfrågan. Kontrollera ordningen och API:t för den installerade versionen; föråldrade scrapy.contrib-importer tillhör äldre versioner.
Processmiljön kan också tillhandahålla schemaspecifika standardvärden. För en avsiktligt direkt förfrågan, använd det dokumenterade speciella beteendet hos proxy-metadata: en saknad nyckel betyder inte nödvändigtvis direkt åtkomst.
Undersök det faktiska resultatet. En 407 gäller proxyautentisering, medan en webbplats hastighetsgräns eller åtkomstnekande kan komma efter att rutten fungerat korrekt.