Välj en proxy för varje Splash-resurs
Välj en Splash-proxy på renderingsnivå eller i en on_request-återkallelse när enskilda resurser behöver olika rutter.
En Scrapy-begäran kan nå Splash, medan webbläsaren inuti Splash fortfarande behöver en annan utgående rutt. Det är två anslutningar:
Scrapy → Splash API
Splash browser → forward proxy → websiteFör en proxy per rendering skickar du HTTP API:s proxy-argument. Splash 3.5 dokumenterar en proxy-URL som http://proxy.example:8080, eller ett konfigurerat proxyprofilnamn. URL-formatet stöder också SOCKS5 och valfria inloggningsuppgifter.
När enskilda sidresurser behöver olika slutpunkter använder du ett execute-skript och registrerar valet före navigering:
function main(splash, args)
splash:on_request(function(request)
local host = args.default_proxy
if request.url == args.special_resource then
host = args.special_proxy
end
request:set_proxy{host = host, port = 8080, type = 'HTTP'}
end)
assert(splash:go(args.url))
return splash:html()
endSkicka default_proxy och special_proxy som värdnamn och special_resource som den exakta resurs-URL som ska dirigeras separat. Byt ut den enda exempelporten när de två lyssnarna skiljer sig. Andra resurser får standardrutten. HTTP-proxylistan erbjuder slutpunktskandidater för dessa värd- och portfält när rutter till offentliga resurser är tillåtna och inga proxyinloggningsuppgifter tillämpas på kandidaterna.
request-metoden accepterar de valfria fälten username och password. Med typen HTTP använder HTTPS-mål CONNECT via den HTTP-proxyn; de kräver inte en påhittad HTTPS-proxytyp.
Återkallelsen körs före varje begäran. Dess request-metoder kan inte ändra en begäran efter att den skickats, och återkallelsen kan inte anropa asynkrona Splash-metoder som splash:go eller splash:wait.
Håll ruttvalet stabilt när sidan förväntar sig en session eller en källidentitet. Att slumpmässigt tilldela varje bild och API-begäran till en annan utgång kan ge en renderad sida vars begäranden inte längre tillhör en sammanhängande session.