Дръжте избора на прокси в операцията по изтегляне. След като httr върне страницата, анализирайте байтовете на този отговор, вместо да подавате URL към друг изтеглящ инструмент.

При даден вектор urls и непразен data frame proxies с колони host и целочислен port:

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"))
}

За заявки към публични страници, разрешени през публични посредници, списъкът с HTTP проксита доставя кандидати за колоните host и port. Индексът се върти от първия ред на проксито до последния и се връща в началото. Всяко извикване има собствена конфигурация на прокси; процесът на R може да продължи да работи.

Получените страници съдържат анализирани HTML документи. Приложете rvest::html_elements и нужните функции за извличане към тези документи. Подаването на URL към read_html вместо това би стартирало ново изтегляне със собствена мрежова конфигурация на този път.

За удостоверени проксита подайте избрания акаунт чрез аргументите username и password на use_proxy. Различна крайна точка не гарантира различен публичен изходен IP, затова избирайте пула според действителното изходно поведение на услугата.

Подобни статии