Alegeți un proxy pentru fiecare resursă Splash
Selectați un proxy Splash la nivelul de randare sau într-un callback on_request atunci când resursele individuale necesită rute diferite.
O cerere Scrapy poate ajunge la Splash, în timp ce browserul din interiorul Splash are încă nevoie de o rută de ieșire diferită. Acestea sunt două conexiuni:
Scrapy → Splash API
Splash browser → forward proxy → websitePentru un proxy pe randare, transmiteți argumentul proxy al API-ului HTTP. Splash 3.5 documentează un URL de proxy precum http://proxy.example:8080, sau un nume de profil de proxy configurat. Formatul URL acceptă și SOCKS5 și acreditări opționale.
Când resurse individuale ale paginii necesită puncte de ieșire diferite, utilizați un script execute și înregistrați selecția înainte de navigare:
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()
endTransmiteți default_proxy și special_proxy ca nume de gazdă, iar special_resource ca URL-ul exact al resursei care trebuie rutată separat. Înlocuiți singurul port din exemplu când cele două ascultătoare diferă. Celelalte resurse primesc ruta implicită. Lista de proxy-uri HTTP oferă candidați de punct de ieșire pentru aceste câmpuri de gazdă și port atunci când rutele către resurse publice sunt permise și nu se aplică acreditări de proxy candidaților.
Metoda request acceptă câmpurile opționale username și password. Cu tipul HTTP, destinațiile HTTPS folosesc CONNECT prin acel proxy HTTP; nu necesită un tip de proxy HTTPS inventat.
Callback-ul rulează înainte de fiecare cerere. Metodele sale request nu pot modifica o cerere după ce a fost trimisă, iar callback-ul nu poate apela metode asincrone Splash precum splash:go sau splash:wait.
Mențineți stabilă alegerea rutei atunci când pagina așteaptă o singură sesiune sau o identitate de sursă. Atribuirea aleatorie a fiecărei imagini și cereri API către altă ieșire poate produce o pagină randată ale cărei cereri nu mai aparțin unei sesiuni coerente.