#r #ssl #dplyr #purrr #handshake
#r #ssl #dplyr #муррр #рукопожатие
Вопрос:
Я запускаю пакет данных «weathercan» (https://cran.r-project.org/web/packages/weathercan/index.html; https://github.com/ropensci/weathercan ) и продолжайте получать ошибку при попытке получить данные с веб-сайта исторических данных о погоде в области окружающей среды и изменения климата. Я переустановил пакет, я даже переустановил R и RStudio после удаления всего R из моей системы, но ошибка сохраняется.
Пакет работает нормально, когда я просматриваю станции, например,
stations_search(координаты = c(44.140125, -80.363136), dist = 20, интервал = «день»)
Но всякий раз, когда я пытаюсь получить данные, я получаю сообщение об ошибке. Например:
Station_data <- weather_dl(station_ids = 4497, start = «2000-01-01», end = «2002-05-30», интервал = «день»)
ВОЗВРАТ:
Ошибка: проблема с
mutate()
вводомhtml
. x schannel: сбой следующей инициализации SecurityContext: SEC_E_ILLEGAL_MESSAGE (0x80090326) — эта ошибка обычно возникает при получении фатального предупреждения SSL / TLS (например, сбой рукопожатия). я ввожуhtml
purrr::map(...)
.
Запустите rlang::last_error()
, чтобы узнать, где произошла ошибка, укажите это:
<ошибка / dplyr:::mutate_error> Проблема с
mutate()
вводомhtml
. x schannel: сбой следующей инициализации SecurityContext: SEC_E_ILLEGAL_MESSAGE (0x80090326) — эта ошибка обычно возникает при получении фатального предупреждения SSL / TLS (например, сбой рукопожатия). я ввожуhtml
purrr::map(...)
. Обратная трассировка:
- weathercan::weather_dl(…)
- base::.handleSimpleError(…)
- dplyr:::h(simpleError(сообщение об ошибке, вызов)) Запустите
rlang::last_trace()
, чтобы увидеть полный контекст.
Все это выходит за рамки моего понимания, поэтому я застрял здесь.
Любая информация была бы полезна.
Спасибо
Ответ №1:
[Обновление 2020-10-17]
Об этом решении также сообщалось в связи с проблемой weathercan
Похоже, что curl использует два серверных сервера SSL для Windows: OpenSSL и Windows Secure Channel. По умолчанию curl использует защищенный канал Windows, который должен быть лучшим, но не обладает полной функциональностью OpenSSL (подробнее).
Я предполагаю, что на сервере ECCC что-то изменилось, что требовало функциональности, не предоставляемой Windows Secure Channel. Когда я заставил свою платформу тестирования Windows (AppVeyor) использовать OpenSSL, у меня больше не было проблем.
Если вы хотите попробовать это, вам нужно будет добавить следующее в свой .Файл Renviron (который загружается во время запуска R):
CURL_SSL_BACKEND=openssl
Если вы не уверены, как отредактировать свой .Файл Renviron, вы можете использовать usethis пакет, чтобы найти / создать и открыть его для вас (после перезапуска R):
install.packages("usethis")
usethis::edit_r_environ()
Отказ от ответственности: я не думаю, что для этого есть недостатки безопасности, но я ни в коем случае не специалист по сети!
[Оригинальный ответ]
Я разработчик пакета weathercan. К сожалению, у меня есть для вас некоторые подробности, но не совсем решение.
Я пытался отследить причины этой проблемы. Из того, что я вижу, на самом деле это проблема между R и сервером ECCC, которая (пока) появляется только в Windows, но не для всех (я запускаю Ubuntu 20.04 и Windows 10 и не могу ее воспроизвести, но другие в Windows 10 и 8 столкнулись с проблемой).
Вы можете следить за обсуждением проблемы, о которой сообщалось, здесь: https://github.com/ropensci/weathercan/issues/104
Причина, по которой мы считаем, что это не является строго проблемой weathercan, заключается в том, что если пользователи с этой проблемой пытаются напрямую загрузить файл ECCC, например,
read.csv("https://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csvamp;stationID=51097amp;timeframe=1amp;submit=Download+Dataamp;Year=2020amp;Month=10")
они сталкиваются с аналогичной проблемой (и read.csv()
это функция из пакета utils).
Комментарии:
1. Привет, доктор ЛаЗерте, спасибо за информацию. Я должен был добавить в сообщение, что я использовал пакет на офисном компьютере (Windows 10), и он работал нормально. Ошибка возникает только на моем ноутбуке (Windows 7). Я подумал, что проблема может быть в моей домашней сети, поэтому я вошел на сервер McMaster из дома через VPN и получил те же ошибки, что и раньше. И да, запуск вашего примера работает на моем офисном компьютере, но не на моем ноутбуке. Кстати, спасибо за создание этого пакета! Навигация по веб-сайту ECCC может быть затруднена.
2. Тьфу, это так расстраивает, я понятия не имею, почему с некоторыми компьютерами все в порядке, а с некоторыми нет. Я опубликую ответ здесь, если разберусь.
3. Обновил ответ возможным решением!