Splash-ийн ресурс бүрт прокси сонгох
Бие даасан ресурсуудад өөр өөр маршрут шаардлагатай үед рендерийн түвшинд эсвэл on_request буцаан дуудалтад Splash прокси сонгоно уу.
Scrapy хүсэлт Splash-д амжилттай хүрч болох боловч Splash доторх хөтөч өөр гарцын маршрут шаардсан хэвээр байна. Эдгээр нь хоёр холболт:
Scrapy → Splash API
Splash browser → forward proxy → websiteНэг рендерт нэг прокси ашиглахын тулд HTTP API-ийн proxy аргументыг дамжуулна. Splash 3.5 нь http://proxy.example:8080 шиг прокси URL эсвэл тохируулсан proxy-profile нэрийг баримтжуулдаг. Түүний 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()
enddefault_proxy болон special_proxy-г хостын нэрээр, special_resource-ыг тусад нь маршрутлах ресурсын яг URL-ээр дамжуулна. Хоёр сонсогч ялгаатай үед жишээн дэх ганц портыг соль. Бусад ресурс анхдагч маршрутыг авна. HTTP прокси жагсаалт нь нийтийн ресурсын маршрутыг зөвшөөрч, нэр дэвшигчдэд прокси итгэмжлэл хэрэглэхгүй үед эдгээр хост болон портын талбарт төгсгөлийн цэгийн нэр дэвшигчдийг санал болгодог.
request арга нь сонголтоор username болон password талбарыг хүлээн авна. HTTP төрөлтэй үед HTTPS очих газар тэр HTTP проксигоор дамжуулан CONNECT ашиглана; тэдэнд зохиомол HTTPS прокси төрөл шаардлагагүй.
Буцаан дуудалт нь хүсэлт бүрийн өмнө ажиллана. Түүний request аргууд илгээгдсэн хүсэлтийг өөрчилж чадахгүй бөгөөд буцаан дуудалт splash:go эсвэл splash:wait зэрэг асинхрон Splash аргыг дуудаж чадахгүй.
Хуудас нэг сесс эсвэл нэг эх сурвалжийн таних тэмдэг хүлээж байх үед маршрутын сонголтыг тогтвортой бариарай. Зураг болон API хүсэлт бүрийг санамсаргүйгээр өөр гарц руу оноох нь хүсэлтүүд нь нэг уялдаатай сессэд хамаарахаа больсон рендерлэгдсэн хуудас үүсгэж болно.