Choisir un proxy pour chaque ressource Splash
Sélectionnez un proxy Splash au niveau du rendu ou dans un rappel on_request lorsque des ressources individuelles nécessitent des routes différentes.
Une requête Scrapy peut joindre Splash, tandis que le navigateur à l'intérieur de Splash a encore besoin d'une autre route sortante. Ce sont deux connexions :
Scrapy → Splash API
Splash browser → forward proxy → websitePour un proxy par rendu, transmettez l'argument proxy de l'API HTTP. Splash 3.5 documente une URL de proxy comme http://proxy.example:8080, ou un nom de profil de proxy configuré. Son format d'URL prend aussi en charge SOCKS5 et des identifiants facultatifs.
Lorsque des ressources individuelles de la page nécessitent des points de sortie différents, utilisez un script execute et enregistrez la sélection avant la navigation :
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()
endTransmettez default_proxy et special_proxy comme noms d'hôte, et special_resource comme l'URL exacte de la ressource à router séparément. Remplacez l'unique port de l'exemple lorsque les deux écouteurs diffèrent. Les autres ressources reçoivent la route par défaut. La liste de proxys HTTP fournit des candidats de point de sortie pour ces champs d'hôte et de port lorsque les routes vers des ressources publiques sont autorisées et qu'aucun identifiant de proxy n'est appliqué aux candidats.
La méthode request accepte les champs facultatifs username et password. Avec le type HTTP, les destinations HTTPS utilisent CONNECT via ce proxy HTTP ; elles n'exigent pas un type de proxy HTTPS inventé.
Le rappel s'exécute avant chaque requête. Ses méthodes request ne peuvent pas modifier une requête après son envoi, et le rappel ne peut pas appeler des méthodes asynchrones de Splash comme splash:go ou splash:wait.
Gardez la sélection de route stable lorsque la page attend une seule session ou une seule identité de source. Attribuer au hasard chaque image et requête API à une autre sortie peut produire une page rendue dont les requêtes n'appartiennent plus à une session cohérente.