En Scrapy-anmodning kan nå Splash, mens browseren inde i Splash stadig har brug for en anden udgående rute. Det er to forbindelser:

Scrapy → Splash API
Splash browser → forward proxy → website

Til én proxy pr. gengivelse sendes HTTP API'ets proxy-argument. Splash 3.5 dokumenterer en proxy-URL som http://proxy.example:8080 eller et konfigureret proxy-profilnavn. URL-formatet understøtter også SOCKS5 og valgfrie legitimationsoplysninger.

Når enkelte sideressourcer har brug for forskellige endepunkter, brug et execute-script, og registrér valget før 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

Send default_proxy og special_proxy som værtsnavne og special_resource som den præcise ressource-URL, der skal routes separat. Erstat den ene eksempelport, når de to lyttere er forskellige. Andre ressourcer får standardruten. HTTP-proxylisten giver endepunktkandidater til disse vært- og portfelter, når ruter til offentlige ressourcer er tilladt, og der ikke anvendes proxy-legitimationsoplysninger på kandidaterne.

request-metoden accepterer valgfrie felterne username og password. Med typen HTTP bruger HTTPS-destinationer CONNECT gennem den HTTP-proxy; de kræver ikke en opdigtet HTTPS-proxytype.

Tilbagekaldet kører før hver anmodning. Dets request-metoder kan ikke ændre en anmodning, efter den er sendt, og tilbagekaldet kan ikke kalde asynkrone Splash-metoder som splash:go eller splash:wait.

Hold rutevalget stabilt, når siden forventer én session eller kildeidentitet. Hvis hvert billede og API-kald tildeles en anden udgang tilfældigt, kan det give en gengivet side, hvis anmodninger ikke længere tilhører én sammenhængende session.

Relaterede artikler