Scrapy zahtjev može uspješno doći do Splash-a, dok preglednik unutar Splash-a još uvijek treba drugu izlaznu rutu. To su dvije veze:

Scrapy → Splash API
Splash browser → forward proxy → website

Za jedan proxy po renderovanju proslijedite proxy argument HTTP API-ja. Splash 3.5 dokumentuje proxy URL kao što je http://proxy.example:8080 ili naziv konfigurisanog proxy profila. Format URL-a podržava i SOCKS5 i opcionalne akreditive.

Kada pojedinačni resursi stranice traže različite krajnje tačke, koristite execute skriptu i registrujte izbor prije navigacije:

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

Proslijedite default_proxy i special_proxy kao nazive hostova, a special_resource kao tačan URL resursa koji se posebno rutira. Zamijenite jedini port iz primjera kada se dva listenera razlikuju. Ostali resursi dobijaju zadanu rutu. HTTP lista proxyja nudi kandidate za krajnje tačke za ova polja hosta i porta kada su dozvoljene rute javnih resursa i kada se na kandidate ne primjenjuju proxy akreditivi.

Metoda request prihvata opcionalna polja username i password. S tipom HTTP, HTTPS odredišta koriste CONNECT kroz taj HTTP proxy; ne zahtijevaju izmišljeni tip HTTPS proxyja.

Povratni poziv se izvršava prije svakog zahtjeva. Njegove request metode ne mogu promijeniti već poslan zahtjev, a povratni poziv ne može pozivati asinhrone Splash metode kao što su splash:go ili splash:wait.

Održavajte izbor rute stabilnim kada stranica očekuje jednu sesiju ili identitet izvora. Slučajno dodjeljivanje svake slike i API zahtjeva drugom izlazu može proizvesti renderovanu stranicu čiji zahtjevi više ne pripadaju jednoj koherentnoj sesiji.

Povezani članci