Hər Splash resursu üçün proxy seçin
Fərdi resurslar fərqli marşrutlara ehtiyac duyduqda proxy-ni render səviyyəsində və ya on_request geri çağırışında seçin.
Scrapy sorğusu Splash-a uğurla çata bilər, lakin Splash daxilindəki brauzer hələ də fərqli çıxış marşrutuna ehtiyac duyur. Bunlar iki bağlantıdır:
Scrapy → Splash API
Splash browser → forward proxy → websiteHər render üçün bir proxy üçün HTTP API-nin proxy arqumentini ötürün. Splash 3.5 http://proxy.example:8080 kimi bir proxy URL-i və ya konfiqurasiya edilmiş proxy-profile adını sənədləşdirir. URL formatı həmçinin SOCKS5 və istəyə bağlı etimadnamələri dəstəkləyir.
Fərdi səhifə resursları fərqli son nöqtələrə ehtiyac duyduqda execute skriptindən istifadə edin və seçimi naviqasiyadan əvvəl qeyd edin:
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()
enddefault_proxy və special_proxy-ni host adları, special_resource-u isə ayrıca yönləndiriləcək dəqiq resurs URL-i kimi ötürün. İki dinləyici fərqli olduqda nümunədəki tək portu dəyişdirin. Digər resurslar standart marşrutu alır. HTTP proxy siyahısı bu host və port sahələri üçün son nöqtə namizədləri təqdim edir, o zaman ki, ictimai resurs marşrutlarına icazə verilir və namizədlərə heç bir proxy etimadnaməsi tətbiq olunmur.
request metodu istəyə bağlı username və password sahələrini qəbul edir. HTTP növü ilə HTTPS hədəfləri həmin HTTP proxy vasitəsilə CONNECT istifadə edir; onlar uydurulmuş HTTPS proxy növü tələb etmir.
Geri çağırış hər sorğudan əvvəl işləyir. Onun request metodları göndərilmiş sorğunu dəyişə bilməz və geri çağırış splash:go və ya splash:wait kimi asinxron Splash metodlarını çağıra bilməz.
Səhifə bir sessiya və ya mənbə kimliyi gözlədikdə marşrut seçimini sabit saxlayın. Hər şəkli və API sorğusunu təsadüfi olaraq başqa çıxışa təyin etmək, sorğuları artıq vahid ardıcıl sessiyaya aid olmayan render edilmiş səhifə yarada bilər.