И ещё немного о разных API (кстати, ранее уже был пост про эксперименты с API yesno.wtf).
На этот раз рассмотрим два сервиса для работы с IP: https://api.ipify.org/ (возвращает внешний IP адрес) и https://ip-api.com (сообщает информацию о регистрации IP адреса).
В качестве теста я подготовил две конструкции. Первая демонстрирует обращение к обоим двум сервисам, а вторая получает данные о заданном адресе.
В общем, всё в духе жанра:

Начнём с того, что получим свой внешний IP адрес с помощью api.ipify.org. Если открыть эту ссылку напрямую в браузере — сайт выдаст наш айпи. Попробуем обработать json-ответ от сайта с помощью PowerShell:
(Invoke-WebRequest -Uri https://api.ipify.org/?format=json | ConvertFrom-Json).ip
Ответом в консоль должен вернутся заветный адрес. Теперь подсунем его сервису IP-API, который предоставит данные о заданном IP. Кстати, у этого проекта есть отлично задокументированный API (тык).
Получается вот такая красотища:
# Узнать свой внешний IP # # https://api.ipify.org/ $myip = (Invoke-WebRequest -Uri https://api.ipify.org/?format=json | ConvertFrom-Json).ip Write-Host "Мой внешний IP: $myip" -ForegroundColor Cyan Write-Host # Данные о IP # # https://ip-api.com/docs/api:json $country = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).country $region = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).regionName $city = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).city $timezone = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).timezone $isp = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).isp $org = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).org # Вывод данных # Write-Host "Страна: $country" -ForegroundColor Cyan Write-Host "Регион: $region" -ForegroundColor Cyan Write-Host "Город: $city" -ForegroundColor Cyan Write-Host "Часовой пояс: $timezone" -ForegroundColor Cyan Write-Host "Провайдер: $isp" -ForegroundColor Cyan Write-Host "Организация: $org" -ForegroundColor Cyan # Ждём ответа пользователя # Read-Host
Этот запрос вернёт в консоль данные о Вашем внешнем IP, перечисленные в блоке «Вывод данных«. Я сделал выгрузку только для географических данных адреса и его провайдере. При желании можно покопаться в документации сервиса и достать куда больше данных.
Как видно из скрипта, запрос к IP-API выглядит достаточно просто: http://ip-api.com/json/нужный IP. Всё, что нужно — это задать конкретный адрес.
В завершении отмечу, что заменив обращение к https://api.ipify.org/ на Read-Host, можно получить данные о заданном IP в PowerShell:
# Вводим IP адрес # $myip = Read-Host "Введите IP" Write-Host "IP: $myip" -ForegroundColor Cyan Write-Host # Данные о IP # # https://ip-api.com/docs/api:json $country = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).country $region = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).regionName $city = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).city $timezone = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).timezone $isp = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).isp $org = (Invoke-WebRequest -Uri http://ip-api.com/json/$myip | ConvertFrom-Json).org # Вывод данных # Write-Host "Страна: $country" -ForegroundColor Cyan Write-Host "Регион: $region" -ForegroundColor Cyan Write-Host "Город: $city" -ForegroundColor Cyan Write-Host "Часовой пояс: $timezone" -ForegroundColor Cyan Write-Host "Провайдер: $isp" -ForegroundColor Cyan Write-Host "Организация: $org" -ForegroundColor Cyan # Ждём ответа пользователя # Read-Host
Чуть не забыл! Есть ещё один интересный проект со свободным API — Coffee API. Сайт подбрасывает Вам случайную фотографию с кофе. В базе сайта 1257 картинок на кофейную тематику. Живите долго и созерцайте!