<
  • Главная
Статьи

Як безкоштовно обійти блокування API заборонених сервісів за допомогою скриптів R - Netpeak Blog

  1. Обхід блокування в напівавтоматичному режимі
  2. Створити звернення до API Google Analytics через проксі-сервер
  3. Як автоматизувати отримання IP і порт проксі-сервера?
  4. Як автоматизувати отримання IP-адреси, порту проксі-сервера і запуск необхідних налаштувань за допомогою...
  5. Установка пакета getProxy
  6. Аргументи функції getProxy
  7. Приклад використання функції getProxy
  8. Приклад звернення до API Google Analytics через проксі-сервер за допомогою пакета getProxy
  9. Приклад звернення до API Яндекс.Директ через проксі-сервер за допомогою пакета getProxy
  10. висновки

Незважаючи на блокування різних сервісів, онлайн-бізнесу вони життєво необхідні, особливо - їх інтеграція з API. У цій статті я розповім, як обійти блокування API заборонених сервісів в скриптах R і продовжувати використовувати пакети ryandexdirect , rvkstat , rmytarget , googlesheets , RGA і bigrquery . Це дозволить використовувати API Google Analytics, 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 = "http://104.37.212.5:3128")

6. Пишемо код звернення до API (приклад - трохи далі).

7. Додаємо рядок для відключення інтернет-з'єднання від проксі-сервера:

Sys.unsetenv ( "https_proxy")

8. Якщо проксі-сервер вимагає проходження аутентифікації, можете вказати ім'я користувача і пароль:

Sys.setenv (https_proxy = "http: // user: password @ proxy_server: port")

9. Переконайтеся, що налаштування з'єднання - введіть в R консоль команду:

Sys.getenv ( "https_proxy")

У відповідь на цю команду в консолі з'явиться запис:

[1] "http://104.37.212.5:3128"

Це означає, що з'єднання через проксі встановлено успішно.

Створити звернення до API Google Analytics через проксі-сервер

# Установка пакетів install_github ( 'artemklevtsov / RGA') # Підключаємо пакет RGA library (RGA) #ID уявлення з якого необхідно отримати дані ga_view_id <- "ga: 1111111111" # Направляємо інтернет-з'єднання через проксі-сервер, IP і порт якого ми отримали на попередньому кроці Sys.setenv (https_proxy = "http://104.37.212.5:3128") # Аутентифікація в Google Analytics authorize () # запрошує дані з Google Analytics ga_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 токена необхідно встановити одне з розширень для браузера, який дозволяє обійти блокування сайтів. можете встановити Proxy for Chrome , Наприклад.

Тепер можна використовувати наступний код на мові R, підставляючи в аргументи функцій свої значення:

# Підключаємо пакет ryandexdirect library (ryandexdirect) # Отримуємо API токен myToken <- yadirGetToken () # Направляємо інтернет-з'єднання через проксі-сервер, IP і порт якого ми отримали на попередньому кроці Sys.setenv (https_proxy = "http: //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) $ ipPort # Направляємо інтернет-з'єднання через проксі-сервер 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 ( "Cam paignName "," 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 Analytics через проксі-сервер за допомогою пакета getProxy

# Підключаємо бібліотеки library (getProxy) library (RGA) # аутентифікація в Google Analytics authorize () # ID уявлення з якого необхідно отримати дані ga_view_id <- "ga: 1111111111" # перенаправляє з'єднання через Proxy сервер getProxy (supportsHttps = T, country = " us ", type =" http ", action =" start ") # запрошує дані з Google Analytics ga_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 ")

Раніше я описував додаткові приклади коду на мовою R по роботі з API Google Analytics .

Приклад звернення до 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 в інтернет-маркетингу .

Сподіваюся, пост допоможе вам спокійно працювати в звичних сервісах, незважаючи на зовнішні обставини.

Com/api/getProxy ?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью