Как обойти блокировку API запрещенных сервисов с помощью скриптов R > NetPeak - Независимость и осознанность
NetPeak Biz Tech    


Как обойти блокировку API запрещенных сервисов с помощью скриптов R

Как обойти блокировку 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 Google ***ytics.

Пример обращения к 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 в интернет-маркетинге.

Надеюсь, пост поможет вам спокойно работать в привычных сервисах, невзирая на внешние обстоятельства.



Комментарии:

Как собрать ключевые запросы в Key Collector

Как собрать ключевые запросы в Key Collector Сбор ключевых запросов с помощью программы Кей Коллектор: показываем и рассказываем пошагово с демонстрацией процесса настройки с сервисом Яндекс.Вордстат. Читать дальше!...

07 06 2023 15:18:17

40 шагов к идеальному сниппету — детальный чек-лист

40 шагов к идеальному сниппету — детальный чек-лист Как оптимизировать и выжать максимум пользы из сниппетов сайта в выдаче Google и Яндекс...

06 06 2023 0:32:10

Как без ошибок объединять данные в Google Data Studio

Как без ошибок объединять данные в Google Data Studio Продолжаем разговор о том, почему функция «Совмещение данных» в Google Data Studio может работать не так, как вы ожидаете....

05 06 2023 16:50:56

Как маркетинговому агентству выйти на зарубежный рынок. Опыт ADINDEX

Статья будет полезна небольшим агентствам, которые мечтают работать с заграничными клиентами. Зачем нужно выходить за рубеж, если и в своей стране все идет неплохо, да и вообще — нет времени на продвижение на незнакомом рынке? Давайте разбираться вместе!...

04 06 2023 4:35:16

Какой сервис автоматического продвижения выбрать

Какой сервис автоматического продвижения выбрать Обзор четырех самых популярных сервисов для автоматического продвижения сайтов...

03 06 2023 7:36:35

Сколько стоил клик Яндекс.Директ и Google Ads в Казахстане в четвертом квартале 2017 года

Сколько стоил клик Яндекс.Директ и Google Ads в Казахстане в четвертом квартале 2017 года Почти 3 миллиона клика в 24 тематиках в 15 городах Казахстана. Читайте новое исследование нашего аналитика....

01 06 2023 23:41:29

Cколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в третьем квартале 2017

Cколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в третьем квартале 2017 Казахстанские реалии: данные по более 1 млн кликов в 23 тематиках и 15 городах....

31 05 2023 6:19:32

Как измерять ROI и зачем это делать предпринимателям

О том, как рассчитать коэффициент ROI (ROMI) для выявления эффективности и прибыльности рекламных кампаний...

30 05 2023 18:25:24

Как работать с перформанс-рекламой

Как работать с перформанс-рекламой И зачем топ-менеджерам разбираться в настройках кампаний, повышать свою техническую грамотность? Показываем на примерах и раскладываем по полочкам....

29 05 2023 13:55:19

Как загрузить файл в корневой каталог сайта

Как загрузить файл в корневой каталог сайта Корневой каталог это папка, содержащая все файлы на сайте, в том числе системные файлы....

28 05 2023 5:21:13

Как быстро создать видео для рекламы — обзор Video Builder от YouTube

Как быстро создать видео для рекламы — обзор Video Builder от YouTube Инструмент позволяет создавать ролики длительностью от 6 до 16 секунд. Созданные видеоматериалы можно размещать не только в рекламных кампаниях, но и на сайте или в email-рассылке. ...

27 05 2023 10:54:46

Как создать личный бренд в компании — кейс Алексея Селезнёва, руководителя отдела аналитики Netpeak

Как создать личный бренд в компании — кейс Алексея Селезнёва, руководителя отдела аналитики Netpeak Создание репутации крутого специалиста — дело рук крутого специалиста....

26 05 2023 8:57:59

Как работают видеодополнения объявлений в Яндекс.Директ — инструкция и кейс

Как работают видеодополнения объявлений в Яндекс.Директ — инструкция и кейс Direct сделал подарок всем, кто уже давно хотел увеличить привлекательность своих объявлений — добавил возможность включения видеодополнений к текстово-графическим кампаниям. Как включить новую фишку от Директа и достаточно ли она эффективна?...

25 05 2023 22:50:56

Как мы увеличили ROMI на 433% в рентабельных рекламных кампаниях: кейс интернет-магазина ФК «Динамо» (Киев)

Как мы увеличили ROMI на 433% в рентабельных рекламных кампаниях: кейс интернет-магазина ФК «Динамо» (Киев) Фубольный клуб. Как увеличить ROMI (возврат маркетинговых инвестиций) в рекламных кампаниях — рассказываем на примере киевского интернет-магазина «Динамо»...

24 05 2023 20:27:53

Дополнительные ценности Netpeak — что вы получаете при заказе [SEO 2.0] вместе с поисковым продвижением

Дополнительные ценности Netpeak — что вы получаете при заказе [SEO 2.0] вместе с поисковым продвижением В коробку [SEO 2.0] вместе с самим поисковым продвижением входят дополнительные ценности Netpeak: унифицированные действия по увеличению продаж, улучшения удобства работы и преимущества бренда Netpeak...

23 05 2023 20:53:49

Как перенести кампании в Google Рекламу и Яндекс.Директ — подробное руководство для новичков

Как перенести кампании в Google Рекламу и Яндекс.Директ — подробное руководство для новичков Не хотите настраивать объявление в Google Рекламе и Яндекс.Директ по отдельности? Узнайте, как сделать экспорт кампании и сэкономить время....

22 05 2023 22:35:31

NPS: что такое Net Promoter Score и как начать его считать

NPS: что такое Net Promoter Score и как начать его считать Цель этой статьи — предупредить от опасной ошибки в маркетинге: бездумного и неправильного внедрения NPS-опросника....

21 05 2023 16:33:39

Кейс по email-маркетингу для интернет-магазина подарков — ROMI 100%

Кейс по email-маркетингу для интернет-магазина подарков — ROMI 100% Direct way. Как вложить 200 у.е. и получить 800 у.е....

20 05 2023 2:23:51

Симулятор ставок кампании в Google Рекламе

Сергeй Бахарь неустанно исследует Google Рекламу и рассказывает о новинках нашим читателям....

19 05 2023 17:43:21

Что делать, когда упали продажи с сайта: чек-лист для проверки и исправления ошибок

Что делать, когда упали продажи с сайта: чек-лист для проверки и исправления ошибок «Настольная» методичка для предпринимателей и маркетологов....

18 05 2023 3:52:19

Видеореклама в Google Ads: как оставить только релевантные площадки

Видеореклама в Google Ads: как оставить только релевантные площадки Четыре способа исключить нерелевантные места размещения видеорекламы, а также полезные списки минус-слов и детских YouTube-каналов....

17 05 2023 16:41:25

Как продвигать каршеринг — обзор кейсов

Как продвигать каршеринг — обзор кейсов Особенности продвижения в нише аренды автомобилей по материалам кейсов наших коллег...

16 05 2023 15:32:41

Текст для главной страницы сайта — правила, требования и примеры

Текст для главной страницы сайта — правила, требования и примеры Как понравиться поисковым системам и пользователям....

15 05 2023 23:14:18

Как добавить видео на Youtube с телефона. Пошаговая инструкция

Как добавить видео на Youtube с телефона. Пошаговая инструкция Будь мобильным — заливай видео на Youtube с телефона...

14 05 2023 1:48:42

Выбираем сайты-доноры: на что нужно обращать внимание

Выбираем сайты-доноры: на что нужно обращать внимание Ссылка с сайта с высоким тИЦ уже не считается качественной. Хороший донор вычисляется по комплексу факторов. Большую часть работы придется делать вручную. Важно найти отличный сайт, с огромным количеством интересного контента, оцененного по достоинству читателями, и гармонично туда вписать свою статью со ссылкой...

13 05 2023 12:34:21

Как узнать реальную эффективность рекламы с помощью отслеживания звонков — кейс Planeta Hobby

Как узнать реальную эффективность рекламы с помощью отслеживания звонков — кейс Planeta Hobby Звук телефонного звонка важен и для пользователя интернета. Как точно рассчитать полученную прибыль и рентабельность инвестиций в рекламу...

12 05 2023 22:13:34

Как ищут во Франции: исследование кликабельности в органическом поиске Google

Анализ данных о 7,6 миллионах поисковых запросов в французском Google...

11 05 2023 23:58:21

Как добавить микроразметку с помощью Google Tag Manager

Как добавить микроразметку с помощью Google Tag Manager Стоит установить и освоить Google Tag Manager для расширения представления сайта в выдаче...

10 05 2023 7:30:54

Что нужно сделать перед созданием интернет-магазина

Что нужно сделать перед созданием интернет-магазина Планируете создание бизнеса, связанного с торговлей в интернете? Сначала прочитайте этот текст....

09 05 2023 22:17:26

Как работает Google Marketing Platform — подробная инструкция

Как работает Google Marketing Platform — подробная инструкция Нужно ли начинать работу с Google Marketing Platform, и если да, то на каком этапе развития бизнеса?...

08 05 2023 16:27:53

KPI в социальных медиа

KPI в социальных медиа Все про kpi охват в социальных медиа или как оценивать эффективность работы SMM-специалиста?...

07 05 2023 18:27:17

Как настроить умную кампанию в контекстно-медийной сети Google

Готовы ли вы доверить основные настройки кампании автоматическим алгоритмам?...

06 05 2023 3:47:45

Как работает экосистема Netpeak Group — интервью каналу «Точка G»

Как работает экосистема Netpeak Group — интервью каналу «Точка G» Узнай, как бэкофис группы помогает развиваться компаниям, и выиграй iPhone — подбери крутое название для нашей группы....

05 05 2023 11:59:25

Бесплатное и платное обучение в сфере интернет-маркетинга: SEO, контекстная реклама, язык R

Бесплатное и платное обучение в сфере интернет-маркетинга: SEO, контекстная реклама, язык R Обучение SEO, PPC, курс по изучению языка R, академии Netpeak Software, Serpstat и другие. Список обновляется....

04 05 2023 22:53:43

Зачем учить язык R интернет-маркетологу, и как сделать это максимально быстро

Когда и зачем я начал учить R, с какими сложностями столкнулся, как появилась и реализовывалась идея создания курса...

03 05 2023 10:36:56

Как готовить баннеры для мобильной рекламы

Как готовить баннеры для мобильной рекламы Как сделать креативный мобильный баннер. Зачем нужны особенные баннеры для мобильных? Что делать с картинкой? Что делать с текстом? Что делать с другими рекламными форматами? Дополнительные элементы. Обо всем этом детально и спримерами...

02 05 2023 23:13:24

8 сервисов для аудита мобильной версии сайта

После того, как мы разобрали виды мобильных версий сайтов, их плюсы и минусы — стоит поговорить о сервисах, которые облегчают аудит....

01 05 2023 18:28:30

Деcять неочевидных и пpaктически применимых PPC-фишек — круглый стол 8P 2018

Деcять неочевидных и пpaктически применимых PPC-фишек — круглый стол 8P 2018 Проверенные лайфхаки по платному трафику от спикеров и участников конференции 8P 2018...

30 04 2023 20:25:34

Как найти фейковые 404 страницы с помощью Google Tag Manager

Как найти фейковые 404 страницы с помощью Google Tag Manager Как помешать фейковым 404 страницам испортить статистику вашего сайта?...

29 04 2023 18:56:47

Как продвигать бренд в Facebook без бюджета на рекламу

Что делать, если денег нет, но трафик очень нужен: советы по раскрутке бренда в фейсбуке. В бесплатном продвижении главный ресурс — время: часы, дни, недели, месяцы, проведенные на площадке. Как их применить? Читайте!...

28 04 2023 4:31:19

Как быстро и бесплатно импортировать в Google Таблицы статистику из Facebook

Понадобится всего пару минут, чтобы создать отчет о тратах, количестве конверсий или любых других важных показателях. Понятная инструкция для PPC-специалистов и про возможности и ограничения бесплатной версии расширения. Читайте дальше!...

27 04 2023 7:44:34

15 примеров удачных маркетинговых онлайн-активностей к Новому году

15 примеров удачных маркетинговых онлайн-активностей к Новому году Адвент-календарь, конкурсы и викторины, праздничные линейки товаров, подборки подарков для родных и близких, опросы, тесты и другие интересности. Используйте, если нужны идеи и вдохновение....

26 04 2023 7:23:50

Демографический таргетинг в Google Ads

Демографический таргетинг в Google Ads Отныне мы можем настраивать показы рекламы на мужчин и женщин определенной возрастной группы....

25 04 2023 20:48:19

Фидбек от покупателей: о чем, зачем и как спрашивать

Фидбек от покупателей: о чем, зачем и как спрашивать Что такое обратная связь, почему фидбек от клиентов важен и как его правильно собирать. Все, что нужно знать, чтобы получить отзыв от клиента....

24 04 2023 4:21:33

7 признаков некачественных онлайн-курсов

7 признаков некачественных онлайн-курсов Рассказываем, как обменять свои деньги на действительно полезные знания....

22 04 2023 23:44:22

Макс Бурцев (Arriba): «Некреативных людей придумало общество»

Макс Бурцев (Arriba): «Некреативных людей придумало общество» О работе, креативности, мотивации и многом другом....

21 04 2023 16:12:12

Какие форматы объявлений в Яндекс.Директ самые эффективные

Какие форматы объявлений в Яндекс.Директ самые эффективные Стандартный образец для новичков. Форматы объявлений в РСЯ, чтобы начинающие специалисты по контекстной рекламе смогли быстро и эффективно запустить рекламные кампании. Интересно? Читайте дальше!...

20 04 2023 10:27:34

Закрытый софт Netpeak для проверки позиций под кодовым названием «Камасутра»

Закрытый софт Netpeak для проверки позиций под кодовым названием «Камасутра» Проверка позиций: бесценный онлайн софт для SEO-специалистов :)...

19 04 2023 12:32:32

Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::