Scegliere un proxy per ogni risorsa Splash
Seleziona un proxy Splash a livello di rendering o in un callback on_request quando singole risorse richiedono route diverse.
Una richiesta Scrapy può raggiungere Splash correttamente mentre il browser all'interno di Splash necessita ancora di una route in uscita diversa. Sono due connessioni:
Scrapy → Splash API
Splash browser → forward proxy → websitePer un proxy per rendering, passare l'argomento proxy dell'API HTTP. Splash 3.5 documenta un URL proxy come http://proxy.example:8080, oppure un nome di profilo proxy configurato. Il formato dell'URL supporta anche SOCKS5 e credenziali opzionali.
Quando singole risorse della pagina richiedono endpoint diversi, usare uno script execute e registrare la scelta prima della navigazione:
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()
endPassare default_proxy e special_proxy come nomi host e special_resource come URL esatto della risorsa da instradare separatamente. Sostituire l'unica porta dell'esempio quando i due listener differiscono. Le altre risorse ricevono la route predefinita. L'elenco di proxy HTTP fornisce candidati endpoint per questi campi host e porta quando le route verso risorse pubbliche sono consentite e nessuna credenziale proxy viene applicata ai candidati.
Il metodo request accetta i campi facoltativi username e password. Con il tipo HTTP, le destinazioni HTTPS usano CONNECT attraverso quel proxy HTTP; non richiedono un tipo di proxy HTTPS inventato.
Il callback viene eseguito prima di ogni richiesta. I suoi metodi request non possono modificare una richiesta dopo l'invio, e il callback non può chiamare metodi asincroni di Splash come splash:go o splash:wait.
Mantenere stabile la selezione della route quando la pagina prevede un'unica sessione o identità di origine. Assegnare a caso ogni immagine e richiesta API a un'altra uscita può produrre una pagina renderizzata le cui richieste non appartengono più a un'unica sessione coerente.