Scrapy užklausa gali pasiekti Splash, tačiau naršyklė Splash viduje vis dar reikalauja kito išėjimo maršruto. Tai dvi jungtys:

Scrapy → Splash API
Splash browser → forward proxy → website

Vienam tarpiniam serveriui vienam atvaizdavimui perduokite HTTP API proxy argumentą. Splash 3.5 dokumentuoja proxy URL, pavyzdžiui, http://proxy.example:8080, arba sukonfigūruoto proxy profilio pavadinimą. URL formatas taip pat palaiko SOCKS5 ir pasirenkamus prisijungimo duomenis.

Kai atskiri puslapio ištekliai reikalauja skirtingų galinių taškų, naudokite execute scenarijų ir užregistruokite pasirinkimą prieš navigaciją:

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

Perduokite default_proxy ir special_proxy kaip pagrindinio kompiuterio pavadinimus, o special_resource kaip tikslų ištekliaus, kuris turi būti nukreiptas atskirai, URL. Pakeiskite vienintelį pavyzdžio prievadą, kai du klausytojai skiriasi. Kiti ištekliai gauna numatytąjį maršrutą. HTTP tarpinių serverių sąrašas siūlo galinių taškų kandidatus šiems pagrindinio kompiuterio ir prievado laukams, kai leidžiami viešųjų išteklių maršrutai ir kandidatams netaikomi proxy prisijungimo duomenys.

request metodas priima pasirenkamus username ir password laukus. Su tipu HTTP HTTPS paskirties vietos naudoja CONNECT per tą HTTP tarpinį serverį; joms nereikia išgalvoto HTTPS proxy tipo.

Atgalinis iškvietimas vykdomas prieš kiekvieną užklausą. Jo request metodai negali pakeisti jau išsiųstos užklausos, o atgalinis iškvietimas negali kviesti asinchroninių Splash metodų, tokių kaip splash:go arba splash:wait.

Išlaikykite maršruto pasirinkimą stabilų, kai puslapis tikisi vienos sesijos arba vieno šaltinio tapatybės. Atsitiktinis kiekvieno vaizdo ir API užklausos priskyrimas kitai išeičiai gali sukurti atvaizduotą puslapį, kurio užklausos nebepriklauso vienai nuosekliai sesijai.

Susiję straipsniai