Я пытаюсь создать веб-скребок, который использует прокси, потому что его повторное поведение на большом веб-сайте приводило к бану IP. Однако я сталкиваюсь с проблемами, поскольку установка прокси-сервера с помощью описанного ниже метода не обходит запрет.
[РЕДАКТИРОВАТЬ: В связи с замечаниями комментатора ниже, я должен уточнить, что я не нарушаю заявленные условия обслуживания сайта, по крайней мере, я не могу найти. К сожалению, я думаю, что повторяющееся поведение выглядит подозрительно и, вероятно, было вовлечено в процесс автоопределения, предназначенный для отсеивания злонамеренных актеров.]
Я искал способ проверить, что моя функция на самом деле использует IP-конвейер, через который я пытаюсь его отправить, но я не могу найти никакой информации о проверке существующего IP, используемого конкретно в среде R.
Я очень новичок в изучении веб-страниц в целом и R в частности, поэтому я очень благодарен за любую помощь, которую вы можете оказать, особенно изложенную в максимально возможной степени.
Я пытался использовать ...
Sys.getenv("http_proxy")
... но это, кажется, отличается от того, что я ищу, так как он проверяет настройки IP в масштабе всей системы и не распознает набор прокси с помощью set_config ().
Я также попытался установить подробный вывод, чтобы посмотреть, как веб-сайт просматривает входящий запрос ...
set_config(verbose())
... но я либо не вижу, либо неправильно понимаю информацию, которая мне нужна.
Ниже приведен некоторый воспроизводимый код, хотя, если у вас нет возможности протестировать его на веб-сайте, с которого заблокирован ваш IP, вы не сможете точно воспроизвести мою проблему.
Обязательные библиотеки:
library(httr)
Прокси и связанные порты из https://free -proxy-list.net /
proxies_b <- c("212.129.52.155", #anon, https
"180.183.128.204", #anon, https
"51.15.103.214") #anon, https
ports_b <- c(8080,
8213,
3128)
set_config(use_proxy(proxies_b[1],
port = ports_b[1],
username = NULL, password = NULL,
auth = "basic"))
Пример функции:
url_works <- function(url){
tryCatch({
# Returns logical based on status code.
identical(status_code(HEAD(url)),200L)
},
error = function(e){
print(paste0("The URL \'", url, "\' returned: ", e))
return(FALSE) # Returns FALSE if an error
})
}
Проверка функции:
url_works("https://www.google.com") # Should return TRUE
url_works("https://www.googlebug.com/") # Should return FALSE
Для ясности, эта функция работает. Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю его из-за заблокированного IP-адреса, настройка прокси-сервера не имеет никакого эффекта. Я не могу найти функцию для отладки почему. Так что я больше всего надеюсь ответить:
Существует ли такая функция, которая будет проверять активный прокси в среде R, как установлено в set_config?
Есть ли какие-либо причины, по которым вы можете понять, почему установка прокси-сервера таким образом не обойдет запрет IP?
Действительно ли httr в этой функции даже отправляет свои запросы через прокси или все еще проходит через мой обычный IP?
Опять же, я новичок в этом, поэтому ваше терпение ценится!