Налаштування проксі для R


75

Я стикаюся з проблемою під час підключення R до Інтернету у своєму офісі. Можливо, це пов’язано з налаштуваннями локальної мережі. Я спробував майже всі можливі способи, з якими я стикаюся в Інтернеті (див. Нижче), але все ж марно.

  • Спосіб 1: Виклик R за допомогою --internet2

  • Спосіб 2: Виклик R шляхом встановлення ~/Rgui.exe http_proxy=http:/999.99.99.99:8080/ http_proxy_user=ask

  • Метод 3: Налаштування Setinternet2=TRUE

  • Метод 4:

    curl <- getCurlHandle()
    curlSetOpt(.opts = list(proxy = '999.99.99.99:8080'), curl = curl)
    Res <- getURL('http://www.cricinfo.com', curl = curl)
    

У всіх методах я можу завантажувати пакети безпосередньо з CRAN, а також завантажувати файли за допомогою команди download.file

Але з допомогою getURL(RCurl), readHTMLTable(XML), htmlTreeParse(XML)команди я не можу витягти веб - дані. Я отримую ~<HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD>~помилку.

Як встановити параметри проксі LAN для пакета XML у R?


Якщо ви спробували все і все ще не працює, зверніться до адміністратора мережі; їм може знадобитися встановити виняток брандмауера, щоб дозволити трафік з вашої машини.
Річі Коттон,

Відповіді:


48

У Mac OS я знайшов найкраще рішення тут . Цитуючи автора, можна зробити два простих кроки:

1) Відкрийте термінал і виконайте такі дії:

export http_proxy=http://staff-proxy.ul.ie:8080
export HTTP_PROXY=http://staff-proxy.ul.ie:8080

2) Запустіть R і виконайте наступне:

Sys.setenv(http_proxy="http://staff-proxy.ul.ie:8080")

перевірте це за допомогою:

Sys.getenv("http_proxy")

Я відстаю від університетської проксі, і це рішення спрацювало чудово. Основною проблемою є експортування елементів у Термінал перед запуском R, як у верхньому, так і в нижньому регістрі.


2
А якщо запущений RStudio, відкрийте його з терміналу після кроку 1, можливо, за допомогою "open /Applications/RStudio.app".
Glenn

Привіт, як я можу встановити його за замовчуванням. Я спробував ваше рішення, і зараз я використовую wifi без проксі, але я більше не можу встановити пакет у RStudio. Я спробував Sys.setenv(http_proxy=""), також я знову запустив крок 1 у терміналі, встановивши його на порожній рядок "". Перевірте його, і він повернеться "", але все ще не може встановити. Хоча я можу встановити пакет в терміналі, але вже не в RStudio.
Аль-Ахмадгаїд Асаад,

2
@ Al-AhmadgaidAsaad Дивно, але поведінка вказує на проблему на стороні Rstudio, але я думаю, вам слід втратити ці зміни проксі-сервера, коли ви вийдете з Rstudio, не зберігаючи сеанс. Ви пробували це? Інакше я не впевнений ...
Geek On Acid

1
Я зробив те, що ви пропонуєте, очистити все з моєї робочої області. І тепер це працює! Дякую!
Аль-Ахмадгаїд Асаад,

1
Привіт @GeekOnAcid, також можна вставити код другого варіанту у файл ~ / .Rprofile на mac та Linux, який завантажується після ініціації сеансу.
dmeu

23

Проблема у ваших варіантах завивки - RCurlздається, пакет не використовується internet2.dll. Вам потрібно вказати порт окремо, і, ймовірно, вам потрібно буде вказати дані для входу користувачів як облікові дані мережі, наприклад,

opts <- list(
  proxy         = "999.999.999.999", 
  proxyusername = "mydomain\\myusername", 
  proxypassword = "mypassword", 
  proxyport     = 8080
)
getURL("http://stackoverflow.com", .opts = opts)

Не забудьте уникнути будь-яких зворотних скісних рисок вашого пароля. Можливо, вам також доведеться обернути URL-адресу у виклику curlEscape.


1
якщо вказані параметри глобально встановлені curlSetOpt(.opts=opts), вони також використовуються для інших з'єднань, наприклад, для з'єднань із XMLпакета, наприклад: htmlTreeParse()або як змусити їх використовувати проксі? Дякую!
Себ

У мене трапляються подібні ситуації. У мене такий проксі (маскується через ip) https: // домен \ користувач: pass@172.122.37.15: 8080. Я хочу налаштувати таким чином, щоб усі операції, що стоять перед Інтернетом, використовували цей проксі. Будь-який свинець?
Індраніл Гаєн

19

Для RStudio просто потрібно зробити це:

По-перше, відкрийте RStudio як завжди, виберіть у верхньому меню:

Інструменти - Загальні параметри - Пакети

Зніміть прапорець: Використовувати бібліотеку Internet Explorer / проксі для HTTP

А потім закрийте Rstudio, крім того, вам потрібно:

  1. Знайдіть файл (.Renviron) на своєму комп’ютері, швидше за все, ви знайдете його тут: C: \ Users \ ваше ім’я користувача \ Documents. Зверніть увагу, що якщо вона не існує, ви можете створити її, просто написавши цю команду в RStudio:

    file.edit('~/.Renviron')
    
  2. Додайте ці два рядки до ініціалів файлу:

    options(internet.info = 0)
    
    http_proxy="http://user_id:password@your_proxy:your_port"
    

І це все..??!!!


11

У мене була та сама проблема в моєму офісі, і я вирішив її, додавши проксі в пункт призначення ярлика R; клацніть правою кнопкою піктограми R, налаштування, а в полі призначення додайте

"C:\Program Files\R\your_R_version\bin\Rgui.exe" http_proxy=http://user_id:passwod@your_proxy:your_port/

Обов’язково помістіть каталог, де встановлена ​​програма R. Це працює для мене. Сподіваюся, це допоможе.


7

Ця публікація стосується питань проксі-сервера R на * nix. Ви повинні знати, що R має безліч бібліотек / методів для отримання даних через Інтернет.

Для 'curl', 'libcurl', 'wget' тощо, просто виконайте наступне:

  1. Відкрийте термінал. Введіть таку команду:

    sudo gedit /etc/R/Renviron.site
    
  2. Введіть такі рядки:

    http_proxy='http://username:password@abc.com:port/'
    https_proxy='https://username:password@xyz.com:port/'
    

    Замінити username, password, abc.com, xyz.comі portз цими настройками , специфічні для вашої мережі.

  3. Вийдіть із R і запустіть знову.

Це має вирішити вашу проблему з методом 'libcurl' та 'curl'. Однак я не пробував це за допомогою "httr". Один із способів зробити це за допомогою "httr" лише для цього сеансу:

library(httr)
set_config(use_proxy(url="abc.com",port=8080, username="username", password="password"))

Вам потрібно підмінити налаштування, характерні для вашого n / w, у відповідних полях.



6

Якщо ви починаєте R із піктограми на робочому столі, ви можете додати --internetпрапор до цільового рядка (клацніть правою кнопкою миші -> Властивості), наприклад

"C:\Program Files\R\R-2.8.1\bin\Rgui.exe" --internet2 

6

Натхненний усіма відповідями, пов’язаними з Інтернетом, нарешті, я знайшов рішення правильно налаштувати проксі для R та Rstudio.

Є кілька кроків, яких слід виконати, можливо, деякі з них марні, але комбінація працює!

  1. Додайте змінні середовища http_proxyта https_proxyдеталі проксі.

    variable name: http_proxy
    variable value: https://user_id:password@your_proxy:your_port/
    
    variable name: https_proxy
    variable value: https:// user_id:password@your_proxy:your_port
    
  2. Якщо ви запускаєте R із піктограми на робочому столі, ви можете додати --internet прапор до цільового рядка (клацніть правою кнопкою миші -> Властивості)

    напр"C:\Program Files\R\R-2.8.1\bin\Rgui.exe" --internet2

  3. Для RStudio просто потрібно зробити це:

    По-перше, відкрийте RStudio як завжди, виберіть у верхньому меню:

    Інструменти-Глобальні параметри-пакети

    Зніміть прапорець: Використовувати бібліотеку Internet Explorer / проксі для HTTP

  4. Знайдіть файл ( .Renviron) в вашому комп'ютері, швидше за все , ви знайдете тут: C:\Users\your user name\Documents.

    Зверніть увагу: якщо він не існує, ви можете створити його, просто написавши цю команду в R:

    file.edit('~/.Renviron')
    

    Потім додайте ці шість рядків до ініціалів файлу:

    options(internet.info = 0)
    
    http_proxy = https:// user_id:password@your_proxy:your_port
    
    http_proxy_user = user_id:password
    
    https_proxy = https:// user_id:password0@your_proxy:your_port
    
    https_proxy_user = user_id:password
    
    ftp_proxy = user_id:password@your_proxy:your_port
    
  5. Перезапустіть R. Введіть такі команди в R, щоб переконатися, що наведена вище конфігурація працює добре:

    Sys.getenv("http_proxy")
    
    Sys.getenv("http_proxy_user")
    
    Sys.getenv("https_proxy")
    
    Sys.getenv("https_proxy_user")
    
    Sys.getenv("ftp_proxy")
    
  6. Тепер ви можете встановлювати пакунки як завгодно, використовуючи команду типу:

    install.packages("mlr",method="libcurl")
    

    Важливо додати method="libcurl", інакше це не спрацює.


У мене це точно не спрацювало. Що саме це робило: Sys.setenv ("http_proxy" = "proxy.usps.gov:8080"). Зверніть увагу, що немає зворотної косої риски, ні пробілу, ні імені користувача.
Бойс Байєрлі,

1

Найпростіший спосіб отримати все, що працює в RStudio Windows 10:

Відкрийте Internet Explorer, виберіть Internet Options:

введіть тут опис зображення


Відкрити редактор змінних середовища:

введіть тут опис зображення


Додайте змінну HTTP_PROXY у форму:

HTTP_PROXY=http://username:password@localhost:port/

Приклад:

HTTP_PROXY=http://John:JohnPassword@localhost:8080/    

введіть тут опис зображення


RStudio повинен працювати:

введіть тут опис зображення


чи існує простий спосіб переключення між домом та офісом для налаштування проксі-сервера Rstudio? Як для Windows, так і для Mac?
user5249203 07

0

Спробував усі ці, а також рішення за допомогою netsh, winhttp тощо. Відповідь Geek On Acid допоміг мені завантажувати пакети з сервера, але жодне з цих рішень не працювало з використанням пакету, який я хотів запустити (пакет twitteR).

Найкраще рішення - використовувати програмне забезпечення, яке дозволяє налаштувати загальносистемний проксі-сервер.

FreeCap (безкоштовно) та Proxifier (пробна версія) для мене прекрасно працювали у моїй компанії.

Зверніть увагу, що вам потрібно видалити налаштування проксі з вашого браузера та будь-яких інших програм, які ви налаштували використовувати проксі, оскільки ці інструменти забезпечують загальносистемний проксі для всього мережевого трафіку з вашого комп’ютера.


-2

Моє рішення на Windows 7 (32-розрядна версія). R версія 3.0.2

Sys.setenv(http_proxy="http://proxy.*_add_your_proxy_here_*:8080")

setInternt2

updateR(2)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.