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

Fö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()
end

Skicka 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.

Relaterade artiklar