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 → website

Fü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.

Ähnliche Artikel