Scrapy-pyyntö voi tavoittaa Splashin, vaikka Splashin sisällä oleva selain tarvitsee yhä erilaisen lähtevän reitin. Nämä ovat kaksi yhteyttä:

Scrapy → Splash API
Splash browser → forward proxy → website

Yhtä renderöintiä kohden yhtä proxyä varten välitä HTTP API:n proxy-argumentti. Splash 3.5 dokumentoi proxy-URL:n kuten http://proxy.example:8080 tai määritetyn proxy-profiilin nimen. URL-muoto tukee myös SOCKS5:tä ja valinnaisia tunnistetietoja.

Kun yksittäiset sivun resurssit tarvitsevat eri päätepisteitä, käytä execute-skriptiä ja rekisteröi valinta ennen navigointia:

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

Välitä default_proxy ja special_proxy isäntäniminä ja special_resource tarkkana resurssin URL:na, joka reititetään erikseen. Korvaa esimerkin yksittäinen portti, kun kaksi kuuntelijaa eroavat. Muut resurssit saavat oletusreitin. HTTP-proxyluettelo tarjoaa päätepiste-ehdokkaita näille isäntä- ja porttikentille, kun julkisten resurssien reitit sallitaan eikä ehdokkaisiin sovelleta proxy-tunnistetietoja.

request-metodi hyväksyy valinnaiset username- ja password-kentät. Tyypillä HTTP HTTPS-kohteet käyttävät CONNECTia kyseisen HTTP-proxyn kautta; ne eivät vaadi keksittyä HTTPS-proxytyyppiä.

Takaisinkutsu suoritetaan ennen jokaista pyyntöä. Sen request-metodit eivät voi muuttaa pyyntöä lähettämisen jälkeen, eikä takaisinkutsu voi kutsua asynkronisia Splash-metodeja, kuten splash:go tai splash:wait.

Pidä reitin valinta vakaana, kun sivu odottaa yhtä istuntoa tai lähdeidentiteettiä. Jokaisen kuvan ja API-pyynnön satunnainen ohjaaminen toiseen ulostuloon voi tuottaa renderöidyn sivun, jonka pyynnöt eivät enää kuulu yhteen yhtenäiseen istuntoon.

Aiheeseen liittyvät artikkelit