Неаутентифицированный запрос на https://ip-api.com/#105 .154.81.106 с использованием пользовательского агента, такого как браузер, дает хорошую веб-страницу с контентом. Аналогичный запрос с использованием клиента командной строки, такого как curl или wget ...
$ curl -s --dump-header headers "https://ip-api.com/#105.154.81.106" > output
Вы можете подробно изучить выходные данные и заголовки.
$ cat output
{
"status" : "fail",
"message": "SSL unavailable for this endpoint, order a key at https://members.ip-api.com/"
}
Похоже, JSON, но он окрашен в моем терминале.
$ cat -e output
^[[39m{$
^[[96m"status"^[[39m : ^[[92m"fail"^[[39m,$
^[[96m"message"^[[39m: ^[[92m"SSL unavailable for this endpoint, order a key at https://members.ip-api.com/"^[[39m$
}$
Есть последовательности escape-строк. Давайте посмотрим, раскрывают ли заголовки:
$ cat headers
HTTP/1.1 403 Forbidden
Date: Wed, 25 Mar 2020 18:06:15 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 163
Access-Control-Allow-Origin: *
X-Ttl: 47
X-Rl: 42
Хорошо, Content-Type - это простой текст, а не json, так что это не неправильно , точно, но это удивительно. Более интересно, однако, что мы получили 403 . Это сообщение закажите ключ по https://members.ip-api.com/, но это реальное мясо.
Очевидно, что здесь вы должны получить ключ и сделать аутентифицированный запрос к API.
Вы можете очистить последовательности ANSI, используя инструмент, такой как ansifilter
$ ansifilter output | jq -r .message
SSL unavailable for this endpoint, order a key at https://members.ip-api.com/
Но нет никаких гарантий, что это API продолжит «работать» таким образом в будущем.