Zvolte proxy pro každý prostředek Splash
Vyberte proxy pro Splash na úrovni vykreslování nebo ve zpětném volání on_request, když jednotlivé prostředky potřebují různé trasy.
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 → websitePro 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()
endPř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.