Válasszon proxyt minden Splash-erőforráshoz
Válasszon Splash-proxyt a renderelés szintjén vagy on_request visszahívásban, amikor az egyes erőforrások különböző útvonalakat igényelnek.
Egy Scrapy-kérés sikeresen elérheti a Splasht, miközben a Splash böngészőjének még mindig más kimenő útvonalra van szüksége. Ez két kapcsolat:
Scrapy → Splash API
Splash browser → forward proxy → websiteRenderelésenként egy proxyhoz adja át a HTTP API proxy argumentumát. A Splash 3.5 proxyt dokumentál, például http://proxy.example:8080, vagy egy beállított proxyprofil nevét. Az URL formátuma a SOCKS5-öt és a választható hitelesítő adatokat is támogatja.
Amikor az egyes oldalerőforrások különböző végpontokat igényelnek, használjon execute-szkriptet, és regisztrálja a választást a navigáció előtt:
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()
endAdja át a default_proxy és a special_proxy értékét hosztnévként, a special_resource értékét pedig a külön útvonalon kezelendő erőforrás pontos URL-jeként. Cserélje ki az egyetlen példaportot, ha a két figyelő eltér. A többi erőforrás az alapértelmezett útvonalat kapja. Az HTTP-proxylista végpontjelölteket kínál ezekhez a hoszt- és portmezőkhöz, amikor a nyilvános erőforrások útvonalai engedélyezettek, és a jelöltekre nem alkalmaznak proxy-hitelesítő adatokat.
A request metódus fogadja a választható username és password mezőket. HTTP típus esetén az HTTPS-célok CONNECTet használnak ezen a HTTP-proxyn keresztül; nem igényelnek kitalált HTTPS-proxytípust.
A visszahívás minden kérés előtt lefut. A request metódusai nem módosíthatnak egy kérést annak elküldése után, és a visszahívás nem hívhat aszinkron Splash-metódusokat, például splash:go vagy splash:wait.
Tartsa stabilan az útvonalválasztást, amikor az oldal egyetlen munkamenetet vagy forrásidentitást vár. Ha minden képet és API-kérést véletlenszerűen más kimenetre osztunk, olyan renderelt oldal jöhet létre, amelynek kérései már nem egy összefüggő munkamenethez tartoznak.