Большую часть времени я не могу отправить запрос на следующий веб-сайт:
https://www.adondevivir.com/proyectos-etapa-pre-venta-en-construccion.html
library(rvest);library(tibble);library(httr2)
base_url <- "https://www.adondevivir.com/proyectos-etapa-pre-venta-en-construccion.html"
parsed_base_url <- base_url |>
read_html() # This works sometimes and I get the underlying html
# THIS NEVER WORKS
pagina_parsed <- base_url |>
request() |>
req_user_agent(
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
) |>
req_headers(
Referer = "https://www.adondevivir.com/",
Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
`Accept-Language` = "es-419,es;q=0.6",
`Accept-Encoding` = "gzip, deflate, br, zstd",
`Cache-Control` = "max-age=0",
`Sec-Ch-Ua` = '"Brave";v = "125", "Chromium";v = "125", "Not.A/Brand";v = "24"',
Priority = "u=0, i"
) |>
req_perform()
Почему я не могу отправить запрос на страницу большую часть времени (не говоря уже о том, что он не работает с httr2 с заголовками, указанными выше)? Есть ли способ преодолеть эту «проблему» с помощью httr2
? Связано ли это с файлами cookie или с тем, как страница защищается от сканирования?
Думаю, я мог бы повторять запрос много раз, пока он не сработает, но думаю, что не узнаю многого о том, почему он не работает.
Связано ли это с файлами cookie или с тем, как страница защищается от сканирования?
Оба. Он защищен Cloudflare, который проходит ряд махинаций, чтобы сбить с толку автоматизированные инструменты и автономные браузеры. Если вы откроете этот сайт в новом сеансе или в режиме инкогнито вашего браузера, вы действительно увидите вызов Cloudflare Javascript в действии. И если у вас открыта вкладка «Сеть» в DevTools (с включенным сохранением журнала и, возможно, регулированием, чтобы немного замедлить работу), вы должны увидеть некоторые другие подсказки о том, что исследуется. Если Cloudflare сочтет ваш запрос законным, файлы cookie будут настроены на разрешение прохода во время вашего сеанса. Вы можете использовать их повторно с помощью httr2
.
Полуручной подход может выглядеть примерно так:
httr2::curl_translate()
library(rvest)
library(httr2)
# translate curl to httr2:
curl_translate(r"(curl 'https://www.adondevivir.com/proyectos-etapa-pre-venta-en-construccion.html' \
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8' \
-H 'accept-language: en-GB,en;q=0.9' \
-H 'cookie: __cf_bm=MbgHRAOsR8nrNwVtUAXzb0HMRrBSK4hbiiNtO3mg41A-1722860033-1.0.1.1-WvLWPer9d5s3PyuFjRZeCwyIRmiyELE5bs40JWH4Txc4OZXWvFUaSgqUbvbf_xYKnpePSYWv5GY4btcLBR_vvc6pt01F1sLPXt0QVrPolJk; sessionId=b5a7a506-4689-4188-88e7-fe005fc154ab; cf_clearance=vchooYPfzwbG.fmcao_YheRm7DPILRmr8xhNSWLUabQ-1722860102-1.0.1.1-tYQZHx6sTEzzRUS.UHz1rjZNq1a1VcSoOcn7l0EjRqbFeHNUwzsHyhTjW2R0RU_Tnv.6L5WbxxEy8m3xxcepaw' \
-H 'priority: u=0, i' \
-H 'sec-ch-ua: "Not)A;Brand";v = "99", "Brave";v = "127", "Chromium";v = "127"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-model: ""' \
-H 'sec-ch-ua-platform: "Windows"' \
-H 'sec-ch-ua-platform-version: "15.0.0"' \
-H 'sec-fetch-dest: document' \
-H 'sec-fetch-mode: navigate' \
-H 'sec-fetch-site: none' \
-H 'sec-fetch-user: ?1' \
-H 'sec-gpc: 1' \
-H 'upgrade-insecure-requests: 1' \
-H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36')")
#> request("https://www.adondevivir.com/proyectos-etapa-pre-venta-en-construccion.html") |>
#> req_headers(
#> accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
#> `accept-language` = "en-GB,en;q=0.9",
#> cookie = "__cf_bm=MbgHRAOsR8nrNwVtUAXzb0HMRrBSK4hbiiNtO3mg41A-1722860033-1.0.1.1-WvLWPer9d5s3PyuFjRZeCwyIRmiyELE5bs40JWH4Txc4OZXWvFUaSgqUbvbf_xYKnpePSYWv5GY4btcLBR_vvc6pt01F1sLPXt0QVrPolJk; sessionId=b5a7a506-4689-4188-88e7-fe005fc154ab; cf_clearance=vchooYPfzwbG.fmcao_YheRm7DPILRmr8xhNSWLUabQ-1722860102-1.0.1.1-tYQZHx6sTEzzRUS.UHz1rjZNq1a1VcSoOcn7l0EjRqbFeHNUwzsHyhTjW2R0RU_Tnv.6L5WbxxEy8m3xxcepaw",
#> priority = "u=0, i",
#> `sec-gpc` = "1",
#> `upgrade-insecure-requests` = "1",
#> `user-agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
#> ) |>
#> req_perform()
# make request, parse html response
request("https://www.adondevivir.com/proyectos-etapa-pre-venta-en-construccion.html") |>
req_headers(
accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
`accept-language` = "en-GB,en;q=0.9",
cookie = "__cf_bm=MbgHRAOsR8nrNwVtUAXzb0HMRrBSK4hbiiNtO3mg41A-1722860033-1.0.1.1-WvLWPer9d5s3PyuFjRZeCwyIRmiyELE5bs40JWH4Txc4OZXWvFUaSgqUbvbf_xYKnpePSYWv5GY4btcLBR_vvc6pt01F1sLPXt0QVrPolJk; sessionId=b5a7a506-4689-4188-88e7-fe005fc154ab; cf_clearance=vchooYPfzwbG.fmcao_YheRm7DPILRmr8xhNSWLUabQ-1722860102-1.0.1.1-tYQZHx6sTEzzRUS.UHz1rjZNq1a1VcSoOcn7l0EjRqbFeHNUwzsHyhTjW2R0RU_Tnv.6L5WbxxEy8m3xxcepaw",
priority = "u=0, i",
`sec-gpc` = "1",
`upgrade-insecure-requests` = "1",
`user-agent` = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
) |>
req_perform() |>
resp_body_html() |>
html_elements("h3[data-qa='POSTING_CARD_DESCRIPTION']") |>
html_text() |>
head() |>
stringr::str_trunc(80)
#> [1] "Vive en el distrito patriota de Lima, hogar de libertadores. Disfruta de una ..."
#> [2] "Obra en curso - 47% vendido! Un proyecto inigualable ubicado en la zona monum..."
#> [3] "¡Vive frente al Campo de Marte en Jesús María! Presentamos \"Salaverry 571\", u..."
#> [4] "¡Vive en la mejor zona de Surquillo! Lobby, Sala de niños, Sala de Usos Multi..."
#> [5] "Grupo Lar, única inmobiliaria en Perú, con presencia en 5 países en simultáne..."
#> [6] "Proyecto exclusivo en la Nueva Santa Catalina, a 5 minutos del centro financi..."
Created on 2024-08-05 with reprex v2.1.0