Как обойти блокировку API запрещенных сервисов с помощью скриптов R
Несмотря на блокировку различных сервисов, онлайн-бизнесу они жизненно необходимы, особенно — их интеграция по API. В этой статье я расскажу, как обойти блокировку API запрещенных сервисов в скриптах R и продолжать использовать пакеты ryandexdirect, rvkstat, rmytarget, googlesheets, RGA и bigrquery. Это позволит использовать API Google ***ytics, Google Sheets, Google BigQuery (актуально для РФ) и ВК, Яндекс.Директ, myTarget (актуально для Украины).
Обход блокировки в полуавтоматическом режиме
1. Найдите любой сервис, генерирующий списки доступных прокси (например, https://hidemy.name/ru/proxy-list/).
2. Выберите в фильтре тип прокси, поддерживающий HTTPS.
3. Сформируйте список доступных прокси-серверов.
4. Далее понадобятся только IP-адрес и порт прокси сервера (обычно использую сервера с портом 3128):
5. Например, возьмем американский сервер, который из третьей строки списка IP 104.37.212.5, порт 3128. В код R необходимо направить интернет-соединение через прокси-сервер, для этого добавляем в код строку:
Sys.setenv(https_proxy=\"https://104.37.212.5:3128\")
6. Пишем код обращения к API (пример — чуть дальше).
7. Добавляем строку для отключения интернет-соединения от прокси-сервера:
Sys.unsetenv(\"https_proxy\")
8. Если прокси-сервер требует прохождения аутентификации, можете указать имя пользователя и пароль:
Sys.setenv(https_proxy=\"https://user:password@proxy_server:port\")
9. Проверьте, установлена ли настройка соединения — введите в R консоль комaнду:
Sys.getenv(\"https_proxy\")
В ответ на эту комaнду в консоли появится запись:
[1] \"https://104.37.212.5:3128\"
Это значит, что соединение через прокси установлено успешно.
Создать обращение к API Google ***ytics через прокси-сервер
#Установка пакетовinstall_github(\\\'artemklevtsov/RGA\\\') #Подключаем пакет RGAlibrary(RGA)#ID представления из которого необходимо получить данные ga_view_id <- \"ga:1111111111\"#Направляем интернет-соединение через прокси-сервер, IP и порт которого мы получили на предыдущем шагеSys.setenv(https_proxy=\"https://104.37.212.5:3128\") #Аутентификация в Google ***yticsauthorize()#Запрашиваем данные из Google ***yticsga_data <-get_ga(profileId = ga_view_id, start.date = \"8daysAgo\", end.date = \"yesterday\", dimensions = \"ga:date\", metrics = \"ga:impressions, ga:adClicks, ga:adCost, ga:sessions, ga:bounces, ga:transactions\")#Отключаемся от прокси-сервераSys.unsetenv(\"https_proxy\")
Создать обращение к API Яндекс.Директ через прокси-сервер
Перед использованием приведенного ниже кода необходимо установить пакеты devtools и ryandexditrect:
install.packages(\"devtools\")library(devtools)install_github(\\\'selesnow/ryandexdirect\\\')
Для получения API токена необходимо установить одно из расширений для браузера, которое позволяет обойти блокировку сайтов. Можете установить прокси, например.
Теперь можно использовать следующий код на языке R, подставляя в аргументы функций свои значения:
#Подключаем пакет ryandexdirectlibrary(ryandexdirect)#Получаем API токенmyToken <- yadirGetToken()#Направляем интернет-соединение через прокси-сервер, IP и порт которого мы получили на предыдущем шагеSys.setenv(https_proxy=\" https://104.37.212.5:3128\")#Обращаемся к API Яндекс.ДиректMy_report <- yadirGetReport(ReportType = \"CAMPAIGN_PERFORMANCE_REPORT\", DateRangeType = \"CUSTOM_DATE\", DateFrom = \\\'2017-01-01\\\', DateTo = \\\'2017-01-31\\\', Login = <YourLogin>, Token = myToken)#Отключаемся от прокси-сервераSys.unsetenv(\"https_proxy\")
Как автоматизировать получение IP и порта прокси-сервера?
Если установить ещё несколько пакетов и немного дописать код, процесс получения IP-адреса и порта бесплатного прокси-сервера можно полностью автоматизировать.
Дело в том, что сервис GimmeProxy API предоставляет возможность загрузки IP адреса и порта с помощью API.
Во-первых, необходимо установить пакеты RCurl и jsonlite:
#Установка пакетовif(!\"RCurl\" %in% installed.packages()[,1]) {install.packages(\"RCurl\")}if(!\"jsonlite\" %in% installed.packages() [,1]){install.packages(\"jsonlite\")}#Подключаем пакетыlibrary(RCurl) library(jsonlite)library(ryandexdirect)#Запрашиваем IP-адрес и портproxy_list_raw <- getURL(\"https://gimmeproxy.com/api/getProxy?supportsHttps=true&port=3128\") #Сохраняем IP-адрес и порт в переменную для использования в кодеproxy_ip_port <- fromJSON(proxy_list_raw)#Направляем интернет-соединение через прокси-сервер Sys.setenv(https_proxy=proxy_ip_port)#Получаем API токенmyToken <- yadirGetToken() #Обращаемся к API Яндекс.ДиректMy_report <- yadirGetReport(ReportType = \"CAMPAIGN_PERFORMANCE_REPORT\", DateRangeType = \"CUSTOM_DATE\", DateFrom = \\\'2017-01-01\\\', DateTo = \\\'2017-01-31\\\', FieldNames = c(\"CampaignName\",\"Impressions\",\"Clicks\"), Login = <YourLogin>, Token = myToken) #Отключаемся от прокси-сервераSys.unsetenv(\"https_proxy\")
Вначале по API мы запрашиваем IP-адрес и порт прокси-сервера с помощью функции getURL из пакета Curl, далее конвертируем её в объект-лист с помощью функции fromJSON, доступной в пакете jsonlite, и, наконец, сохраняем IP-адрес и порт в переменную proxy_ip_port. Затем эту переменную используем в коде в качестве аргумента функции Sys.setenv.
Как вы понимаете, все бесплатное работает не так стабильно, как хотелось бы, поэтому в качестве недорогой но стабильно работающей и значительно более гибкой в настройках альтернативы рекомендую купить доступ к API у HideMy.name. Запросите доступ к API в этойформе.
Актуальную стоимость доступа к API можно узнать по этой ссылке.
Как автоматизировать получение IP-адреса, порта прокси-сервера и запуск необходимых настроек с помощью пакета getProxy
Код из предыдущего пункта — рабочий, он полезен для понимания, как использовать любое API, с помощью которого можно получить IP и порт прокси-сервера.
Чтобы упростить работу с бесплатными сервисами, предоставляющими IP и порт прокси-серверов, я написал пакет getProxy. С его помощью вы в одной строке кода можете автоматически запрашивать IP-адрес и порт прокси, применять к запросу фильтры по порту, странам и типу прокси-сервера, а также сразу внедрять полученные настройки.
На данный момент пакет содержит всего одну функцию getProxy. Функция использует два бесплатных API-сервиса: gimmeproxy.com и getproxylist.com, обращаясь к ним за IP и портом публично доступных и бесплатных прокси-серверов.
Установка пакета getProxy
Установите пакет из репозитория GitHub:
if(!\"devtools\" %in% installed.packages()[,1]){install.packages(\"devtools\")}library(devtools)install_github(\"selesnow/getProxy\")
Аргументы функции getProxy
- country — код страны в формате ISO 3166-1 alpha-2. Коды всех стран можно найти здесь.
- notCountry — код страны, по которой не надо запрашивать настройки прокси-сервера, в формате ISO 3166-1 alpha-2.
- supportsHttps — логическое значение TRUE или FALSE, используется для фильтрации прокси-серверов по поддержке протокола https.
- port — номер порта для фильтрации прокси-серверов.
- type — тип протокола прокси-сервера, поддерживает возможные значения «http», «socks4», «socks5».
- action — действие, которое необходимо выполнить: start, чтобы получить и сразу направить интернет-соединение через прокси-сервер, get — если хотите получить IP-адрес и порт прокси-сервера, но не применять эти настройки, stop — если хотите отключиться от прокси-сервера.
Пример использования функции getProxy
Чтобы автоматизировать процесс получения IP-адреса и порта прокси-сервера и сохранения его в объект без перенаправления интернет-соединения, достаточно в аргументе action установить значение get.
prox_ip_and_port <- getProxy(port = \"3128\", country = \"RU\", action = \"get\")
Если хотите получить IP-адрес и порт прокси-сервера, а также одновременно применить полученные настройки, в аргумент action передайте значение start.
prox_ip_and_port <- getProxy(port = \"3128\", country = \"RU\", supportsHttps = TRUE, action = \"start\")
Если необходимо отключиться от прокси-сервера, достаточно передать в аргумент action значение stop.
getProxy(action = \"stop\")
Пример обращения к API Google ***ytics через прокси-сервер с помощью пакета getProxy
# подключаем библиотекиlibrary(getProxy)library(RGA)# аутентификация в Google ***yticsauthorize()# ID представления из которого необходимо получить данныеga_view_id <- \"ga:1111111111\" # Перенаправляем соединение через Proxy серверgetProxy(supportsHttps = T, country = \"us\", type = \"http\", action = \"start\")# Запрашиваем данные из Google ***yticsga_data <-get_ga(profileId = ga_view_id, start.date = \"8daysAgo\", end.date = \"yesterday\", dimensions = \"ga:date\", metrics = \"ga:impressions, ga:adClicks, ga:adCost, ga:sessions, ga:bounces, ga:transactions\")# Отключаемся от Proxy сервераgetProxy(action = \"stop\")
Как получить данные из Google ***ytics в R и загрузить в Power BI Ранее я описывал дополнительные примеры кода на на языке R по работе с API
Пример обращения к API Яндекс.Директ через прокси-сервер с помощью пакета getProxy
Перед запуском приведенного ниже кода у вас уже должны быть установлены пакеты ryandexdirect и getProxy.
#Подключаем пакетыlibrary(ryandexdirect)library(getProxy)#Запрашиваем IP-адрес и порт и применяем полученные настройкиgetProxy(port = \"3128\", country = \"RU\", supportsHttps = TRUE, action = \"start\")#Получаем API токенmyToken <- yadirGetToken()#Обращаемся к API Яндекс.ДиректMy_report <- yadirGetReport(ReportType = \"CAMPAIGN_PERFORMANCE_REPORT\", DateRangeType = \"CUSTOM_DATE\", DateFrom = \\\'2017-01-01\\\', DateTo = \\\'2017-01-31\\\', FieldNames = c(\"CampaignName\",\"Impressions\",\"Clicks\"), Login = <YourLogin>, Token = myToken)#Отключаемся от прокси-сервераgetProxy(action = \"stop\")
Этот код при каждом запуске будет автоматически запрашивать настройки доступного прокси-сервера и применять их.
Выводы
Для обхода блокировки доступа к API в ваши скрипты на языке R достаточно добавить всего две строки и использовать функции Sys.setenv и Sys.unsetenv.
Немного дописав скрипт, вы сможете беспрепятственно получать данные из API необходимых сервисов. В большинстве случаев будет достаточно бесплатных API-сервисов, для работы с которыми я написал пакет getProxy.
Язык R в интернет-маркетинге — дайджест полезных публикаций Читайте также о методах использования языка R
Надеюсь, пост поможет вам спокойно работать в привычных сервисах, невзирая на внешние обстоятельства.
Комментарии:
Как эффективно распределять бюджет и ресурсы на обучение сотрудников. Статья будет полезной для собственников бизнеса и HR-специалистов....
10 12 2024 21:22:47
Что делать, когда код электронной торговли в одной валюте, а аккаунты Google ***ytics/Google Ads — в другой. И нужной валюты нет в списке возможных....
09 12 2024 7:18:35
Чтобы попасть в админку сайта, необходимо определить, какая именно CMS используется. Для этой цели подойдет ручной анализ сайта и его HTML-кода, а также онлайн-сервисы...
08 12 2024 5:40:33
Cafe case. Знакомство аудитории с только что открывшимся заведением: online + offline....
07 12 2024 8:24:35
10 заданий, которые заставят пошевелить мозгами и придумать нестандартные решения. Используйте их (видоизмените, адаптируйте) под свой продукт или услугу. Создайте крутую кампанию, креатив или предложите это своей комaнде....
06 12 2024 13:17:54
Предположим, что оптимизация в аккаунте похожа на реальный мир и рассмотрим несколько примеров :)...
05 12 2024 2:25:10
Интересные детали интерьера в офисах украинских IT-компаний: от массажного стола и тенниса до звукозаписывающей студии и корпоративной велопарковки. Читать дальше!...
04 12 2024 20:28:31
Данные по 33,5 миллионов кликов в 26 тематиках и 394 городах...
03 12 2024 14:47:15
Создатели алгоритмов соцсетей используют слабые места человеческого мозга. Случайно или намеренно, но они это делают. Как нам с этим жить?...
02 12 2024 3:23:43
Автор книги о вирусном маркетинге «Заразительный. Психология сарафанного радио» Йона Бергер пришел к выводу, что у виральности всего шесть принципов....
01 12 2024 21:58:55
Предложение для крупных и средних бизнес-проектов по эффективному использованию больших бюджетов при запуске на новых рынках...
30 11 2024 5:12:17
Ringostat и Binotel. Сравнение главных сервисов для коллтрекинга в Украине...
29 11 2024 19:40:50
Почти 4,5 млрд людей имеют аккаунты в соцсетях. Огромная и активная аудитория. Но как среди нее найти своего клиента? Поможет таргетированная реклама....
28 11 2024 8:38:45
Нет прокрастинации! Советы для личной эффективности от руководителя двух стартапов...
27 11 2024 18:14:42
Готовы ли вы доверить основные настройки кампании автоматическим алгоритмам?...
26 11 2024 5:27:42
Мы достигли поставленных на старте продвижения целей: вернули потерянный трафик, получили дальнейший рост видимости сайта и увеличили доход....
25 11 2024 19:49:44
SMM от Netpeak — это разработки стратегий продвижения, механики конкурсов, медиапланирование и постоянная интеpaктивная связь с клиентом с помощью «Личного кабинета»....
24 11 2024 19:50:34
Как мы проводили самую летнюю конференцию в условиях постлокдayна, пандемии и неизвестности....
23 11 2024 19:58:42
Рассказываем о перспективном формате рекламы, который привлекает внимание потребителя даже в эпоху повсеместной «баннерной слепоты»....
22 11 2024 5:35:59
Данные, приведенные в исследовании, помогут в составлении медиапланов по продвижению в интернете. Понимания стоимость конверсии и необходимое количество конверсий, вы можете прогнозировать, сколько денег на рекламу нужно выделить....
21 11 2024 3:52:26
Наибольший эффект по продвижению сайта при минимальных затратах — именно таков принцип SEO growth hacking. Как найти кратные точки роста, читайте статье....
20 11 2024 23:43:14
Как правильно распределить рекламный бюджет? Читайте топ-50 самых дорогих ключевых слов Google Рекламы в Казахстане по версии Serpstat...
19 11 2024 20:46:19
Легче запомнить алгоритм правильной отправки писем, чем потом вытягивать их из папки со спамом....
18 11 2024 7:12:17
Примеры инновационных проектов. Нескучная рецензия на интересную книгу....
17 11 2024 20:37:44
Анализ содержимого сайта показывает: Url разные, а контент страниц одинаковый. Думаете, ничего страшного? Но одинаковый контент может попасть под фильтры поисковых систем. Чтобы этого не произошло, надо знать, как избавляться от внутренних дублей...
16 11 2024 20:28:42
Список инструментов email-маркетолога для рассылок по англоязычной аудитории....
15 11 2024 11:36:11
Пройдем вместе путь вебмастера от первых шагов и до вершины ТОПа :)...
14 11 2024 4:33:21
Иконки отличаются между собой размером, формой, весом, количеством оттенков и объемом. Наиболее популярными считаются векторные пиктограммы...
13 11 2024 14:39:48
Пользователи могут смотреть вирусные ролики без единого слова...
12 11 2024 8:51:10
Как провести крутую конференцию по интернет-маркетингу, сделать трaнcляцию этой конференции и вместо сухих репортажей подготовить полезный контент для СМИ. Узнать больше....
11 11 2024 14:54:50
Как избежать скликивания — инструкция...
10 11 2024 4:20:20
Получаем реальную статистику эффективности использования AMP-страниц с помощью АМР Client ID API....
09 11 2024 15:36:33
О том, как сделать сайты интереснее и эффективнее. Гeймификация — применение игровых сценариев и элементов вне игровых контекстов. Это не про создание игр, это про поиск решений, которые помогут сделать любую работу интереснее. Читайте дальше!...
08 11 2024 1:28:17
Мир гаджетов на Android и IOS. ROMI (возврат маркетинговых инвестиций) по валовой прибыли: 764%....
07 11 2024 4:41:31
Очередной красивый пост о продвижении платформы email и sms-рассылок — UniSender...
06 11 2024 6:48:54
Как бесплатно пользоваться преимуществами, особенностями и дополнительными инструментами сервиса...
05 11 2024 1:18:51
Женский и мужской таргет отличаются друг от друга. Кейс магазина обуви, одежды и аксессуаров....
04 11 2024 14:10:25
Как улучшить конверсию сайта: идеи для маркетологов...
03 11 2024 21:35:59
SEO-специалист Константин Гайдук поделился с читателями блога постом о фишках работы линкбилдера с поиском Яндекс....
02 11 2024 19:40:30
Лафхаки для маркетологов и владельцев сайтов на Prom...
01 11 2024 18:31:25
О видах мобильных версий, их плюсах и минусах, а также советы по аудиту....
31 10 2024 11:57:46
Всё о крупной рыбе украинского интернет-маркетинга: компании, люди, кейсы в интервью с основателем Артёмом Бородатюком....
30 10 2024 9:21:36
Руководство для всех, кто хочет продать что-то через интернет...
29 10 2024 5:21:31
Как мы создаем BI-решение для департамента поискового продвижения — первые шаги...
28 10 2024 5:19:20
Требования к интернет-магазину, мануал по регистрации, что может пойти не так...
27 10 2024 1:59:36
В помощь контент-маркетологам, редакторам, авторам и бизнесу: идеи, которые учитывают фактор SEO. Переупакуйте статьи, заметки, любые другие посты — угодите читателям и поисковикам. Узнать больше!...
26 10 2024 10:35:48
Чтобы раскрутить себя в Твиттер иногда нужно чистить списки фолловеров и это намного проще, чем кажется :)...
25 10 2024 10:10:28
Все дело в формате объявлений Instant Experience с подключенным каталогом товаров. Нет, не только в нем. Узнать больше!...
24 10 2024 4:20:20
«Настольная» методичка для предпринимателей и маркетологов....
23 10 2024 0:26:23
Дейли — ежедневный комaндный митинг, на котором комaнда синхронизируется по ключевым моментам работы и по текущим задачам. Делимся чек-листом агентства Netpeak по организации дейли на удалёнке....
22 10 2024 12:19:18
Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::