Izvēlieties starpniekserveri katram Splash resursam
Izvēlieties Splash starpniekserveri renderēšanas līmenī vai on_request atzvanīšanā, kad atsevišķiem resursiem nepieciešami atšķirīgi maršruti.
Scrapy pieprasījums var sasniegt Splash, kamēr pārlūkprogrammai Splash iekšienē joprojām nepieciešams cits izejošais maršruts. Tie ir divi savienojumi:
Scrapy → Splash API
Splash browser → forward proxy → websiteVienam starpniekserverim uz vienu renderējumu nododiet HTTP API proxy argumentu. Splash 3.5 dokumentē starpniekservera URL, piemēram, http://proxy.example:8080, vai konfigurēta proxy profila nosaukumu. Tā URL formāts atbalsta arī SOCKS5 un neobligātus akreditācijas datus.
Kad atsevišķiem lapas resursiem nepieciešami atšķirīgi galapunkti, izmantojiet execute skriptu un reģistrējiet izvēli pirms navigācijas:
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()
endNododiet default_proxy un special_proxy kā resursdatora nosaukumus, bet special_resource kā precīzu tā resursa URL, kas jāmaršrutē atsevišķi. Aizstājiet vienīgo piemēra portu, kad abi klausītāji atšķiras. Pārējie resursi saņem noklusējuma maršrutu. HTTP starpniekserveru saraksts piedāvā galapunktu kandidātus šiem resursdatora un porta laukiem, kad publisko resursu maršruti ir atļauti un kandidātiem netiek piemēroti starpniekservera akreditācijas dati.
request metode pieņem neobligātus username un password laukus. Ar tipu HTTP HTTPS galamērķi izmanto CONNECT caur šo HTTP starpniekserveri; tiem nav vajadzīgs izdomāts HTTPS starpniekservera tips.
Atzvanīšana tiek izpildīta pirms katra pieprasījuma. Tās request metodes nevar mainīt jau nosūtītu pieprasījumu, un atzvanīšana nevar izsaukt asinhronas Splash metodes, piemēram, splash:go vai splash:wait.
Saglabājiet maršruta izvēli stabilu, kad lapa gaida vienu sesiju vai vienu avota identitāti. Katras bildes un API pieprasījuma nejauša piešķiršana citai izejai var radīt renderētu lapu, kuras pieprasījumi vairs nepieder vienai konsekventai sesijai.