Як безкоштовно обійти блокування API заборонених сервісів за допомогою скриптів R - Netpeak Blog
- Обхід блокування в напівавтоматичному режимі
- Створити звернення до API Google Analytics через проксі-сервер
- Як автоматизувати отримання IP і порт проксі-сервера?
- Як автоматизувати отримання IP-адреси, порту проксі-сервера і запуск необхідних налаштувань за допомогою...
- Установка пакета getProxy
- Аргументи функції getProxy
- Приклад використання функції getProxy
- Приклад звернення до API Google Analytics через проксі-сервер за допомогою пакета getProxy
- Приклад звернення до API Яндекс.Директ через проксі-сервер за допомогою пакета getProxy
- висновки
Незважаючи на блокування різних сервісів, онлайн-бізнесу вони життєво необхідні, особливо - їх інтеграція з API. У цій статті я розповім, як обійти блокування API заборонених сервісів в скриптах R і продовжувати використовувати пакети ryandexdirect , rvkstat , rmytarget , googlesheets , RGA і bigrquery . Це дозволить використовувати API Google Analytics, Google Sheets, Google BigQuery (актуально для РФ) і ВК, Яндекс.Директ, myTarget (актуально для України).
Обхід блокування в напівавтоматичному режимі
1. Знайдіть будь-який сервіс, що генерує списки доступних проксі (наприклад, https://hidemy.name/ru/proxy-list/ ).
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 ?