Gardez le choix du proxy dans l'opération de téléchargement. Une fois que httr a renvoyé la page, analysez les octets de cette réponse plutôt que de transmettre l'URL à un autre téléchargeur.

Étant donné un vecteur urls et un data frame proxies non vide avec des colonnes host et port entier :

pages <- vector("list", length(urls))
stopifnot(nrow(proxies) > 0L)

for (i in seq_along(urls)) {
  row <- ((i - 1L) %% nrow(proxies)) + 1L
  response <- httr::GET(
    urls[[i]],
    httr::use_proxy(proxies$host[[row]], proxies$port[[row]]),
    httr::timeout(30)
  )
  httr::stop_for_status(response)
  pages[[i]] <- xml2::read_html(httr::content(response, as = "raw"))
}

Pour les requêtes vers des pages publiques autorisées via des intermédiaires publics, la liste de proxys HTTP fournit des candidats pour les colonnes host et port. L'index parcourt de la première ligne de proxy à la dernière puis repart au début. Chaque appel possède sa propre configuration de proxy ; le processus R peut continuer à s'exécuter.

Les pages obtenues contiennent des documents HTML analysés. Appliquez rvest::html_elements et les fonctions d'extraction nécessaires à ces documents. Passer une URL à read_html lancerait à la place une nouvelle récupération avec la configuration réseau propre à ce chemin.

Pour les proxys authentifiés, transmettez le compte choisi via les arguments username et password de use_proxy. Un point de terminaison différent ne garantit pas une IP de sortie publique différente ; choisissez donc le pool selon le comportement de sortie réel du service.

Articles similaires