Изаберите прокси за сваки Splash ресурс
Изаберите Splash прокси на нивоу рендеровања или у on_request повратном позиву када појединачни ресурси захтевају различите руте.
Scrapy захтев може успешно да стигне до Splash-а, док прегледач унутар Splash-а још увек захтева другу излазну руту. То су две везе:
Scrapy → Splash API
Splash browser → forward proxy → websiteЗа један прокси по рендеровању проследите proxy аргумент HTTP API-ја. Splash 3.5 документује прокси URL као што је http://proxy.example:8080 или назив конфигурисаног прокси профила. Формат URL-а подржава и SOCKS5 и опционе акредитиве.
Када појединачни ресурси странице захтевају различите крајње тачке, користите execute скрипту и региструјте избор пре навигације:
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Проследите default_proxy и special_proxy као називе хостова, а special_resource као тачан URL ресурса који се посебно рутира. Замените једини порт из примера када се два слушаоца разликују. Остали ресурси добијају подразумевану руту. Листа HTTP проксија нуди кандидате за крајње тачке за ова поља хоста и порта када су дозвољене руте јавних ресурса и када се на кандидате не примењују прокси акредитиви.
Метод request прихвата опциона поља username и password. Са типом HTTP, HTTPS одредишта користе CONNECT кроз тај HTTP прокси; не захтевају измишљени тип HTTPS проксија.
Повратни позив се извршава пре сваког захтева. Његове request методе не могу променити већ послат захтев, а повратни позив не може позивати асинхроне Splash методе као што су splash:go или splash:wait.
Одржавајте избор руте стабилним када страница очекује једну сесију или идентитет извора. Насумично додељивање сваке слике и API захтева другом излазу може произвести рендеровану страницу чији захтеви више не припадају једној кохерентној сесији.