Požadavek Scrapy může úspěšně dosáhnout Splash, zatímco prohlížeč uvnitř Splash stále potřebuje jinou odchozí trasu. Jsou to dvě spojení:

Scrapy → Splash API
Splash browser → forward proxy → website

Pro jednu proxy na vykreslení předejte argument proxy rozhraní HTTP API. Splash 3.5 dokumentuje proxy URL jako http://proxy.example:8080 nebo název nakonfigurovaného profilu proxy. Formát URL podporuje také SOCKS5 a volitelné přihlašovací údaje.

Když jednotlivé prostředky stránky potřebují různé koncové body, použijte skript execute a registrujte volbu před navigací:

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

Předejte default_proxy a special_proxy jako názvy hostitelů a special_resource jako přesnou URL prostředku, který se má směrovat samostatně. Nahraďte jediný port z příkladu, když se oba naslouchající procesy liší. Ostatní prostředky dostanou výchozí trasu. Seznam HTTP proxy nabízí kandidáty koncových bodů pro tato pole hostitele a portu, když jsou povoleny trasy k veřejným prostředkům a na kandidáty se neuplatňují přihlašovací údaje proxy.

Metoda request přijímá volitelná pole username a password. S typem HTTP cíle HTTPS používají CONNECT přes tuto HTTP proxy; nevyžadují vymyšlený typ HTTPS proxy.

Zpětné volání se spouští před každým požadavkem. Jeho metody request nemohou změnit požadavek poté, co byl odeslán, a zpětné volání nemůže volat asynchronní metody Splash, jako jsou splash:go nebo splash:wait.

Udržujte volbu trasy stabilní, když stránka očekává jednu relaci nebo identitu zdroje. Náhodné přidělení každého obrázku a požadavku API jinému výstupu může vytvořit vykreslenou stránku, jejíž požadavky už nepatří jedné souvislé relaci.

Související články