Einen Proxy für jede Splash-Ressource wählen
Wählen Sie beim Rendern oder in einem on_request-Callback einen Splash-Proxy, wenn einzelne Ressourcen unterschiedliche Routen benötigen.
Eine Scrapy-Anfrage kann Splash erfolgreich erreichen, während der Browser in Splash noch eine andere ausgehende Route benötigt. Das sind zwei Verbindungen:
Scrapy → Splash API
Splash browser → forward proxy → websiteFür einen Proxy pro Rendervorgang übergeben Sie das proxy-Argument der HTTP-API. Splash 3.5 dokumentiert eine Proxy-URL wie http://proxy.example:8080 oder einen konfigurierten Proxy-Profilnamen. Das URL-Format unterstützt außerdem SOCKS5 und optionale Anmeldedaten.
Wenn einzelne Seitenressourcen unterschiedliche Endpunkte benötigen, verwenden Sie ein execute-Skript und registrieren die Auswahl vor der Navigation:
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()
endÜbergeben Sie default_proxy und special_proxy als Hostnamen und special_resource als exakte Ressourcen-URL, die getrennt geroutet werden soll. Ersetzen Sie den einzelnen Beispielport, wenn sich die beiden Listener unterscheiden. Andere Ressourcen erhalten die Standardroute. Die HTTP-Proxy-Liste liefert Endpunktkandidaten für diese Host- und Portfelder, wenn öffentliche Ressourcenrouten erlaubt sind und keine Proxy-Anmeldedaten auf die Kandidaten angewendet werden.
Die request-Methode akzeptiert optionale Felder username und password. Bei type HTTP nutzen HTTPS-Ziele CONNECT über diesen HTTP-Proxy; sie erfordern keinen erfundenen HTTPS-Proxy-Typ.
Der Callback läuft vor jeder Anfrage. Seine request-Methoden können eine bereits gesendete Anfrage nicht ändern, und der Callback kann keine asynchronen Splash-Methoden wie splash:go oder splash:wait aufrufen.
Halten Sie die Routenauswahl stabil, wenn die Seite eine Sitzung oder Quellidentität erwartet. Jede Bild- und API-Anfrage zufällig an einen anderen Ausgang zu geben, kann eine gerenderte Seite erzeugen, deren Anfragen nicht mehr zu einer zusammenhängenden Sitzung gehören.