https://httpie.org/ – а еще есть такая “модная” альтернатива curl/wget
CURL
отправка GET и POST переменных
GET: curl “https://weril.me/?s=curl”
~$ curl "https://weril.me/?s=curl" 2>/dev/null | grep "page-title" <h1 class="page-title">Search Results for: curl</h1>
POST: curl -d “s=curl” “https://weril.me/”
~$ curl -d "s=curl" "https://weril.me/" 2>/dev/null | grep "page-title" <h1 class="page-title">Search Results for: curl</h1>
Можно имя метода передавать в переменной -X, но обязательно Uppercase.
curl -k -b cookies.txt 'https://10.3.10.1/api/history/getList' -k -X Get
Malformed method name: According to RFC 2616 (section 5.1.1) and its successors RFC 7230 (section 3.1.1) and RFC 7231 (section 4.1) method names are case-sensitive and uppercase.
работа через proxy
HTTP
curl --proxy 217.61.104.140:3128 https://2ip.ru/
curl -v -x socks5://11.146.29.66:33231 http://www.google.com/ # Без авторизации curl -v -x socks5://testuser:testuser@11.146.29.66:33231 http://www.google.com/ # С авторизацией
timeout запроса
curl --connect-timeout 5 http://$IPADDRESS
просмотр сервера (ПО и версия), версии HTTP
$ curl --head weril.me
HTTP/1.1 301 Moved Permanently
Date: Sun, 07 Jun 2020 21:24:22 GMT
Server: Apache/2.4.38 (Debian)
Location: https://weril.me/
Content-Type: text/html; charset=iso-8859-1
просмотр ssl сертификата (в том числе expiration)
curl -vvI https://weril.me
отброс download info
Я использую 2>/dev/null для отброса инфы по загрузке, которая генерируется curl’ом в виде STDERR в случае если STDOUT перенаправляется куда-то (без разницы в файл или pipeline).
~$ curl "http://weril.me/" >sw
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 225 100 225 0 0 3450 0 --:--:-- --:--:-- --:--:-- 3409
~$ curl "http://weril.me/" 2>/dev/null >sw
скорость загрузки
“speed_download” – The average download speed that curl measured for the complete download. Bytes per second.”
# curl -s -L -k -b cookies.1.txt -o file.1.tgz -w "%{speed_download}\n" "https://test.com/file.tgz"
10522781,000
10 522 781 × 8 = 84 182 248 = 84,182248 mbit/sec
Пример авторизации с сохранением cookie (-c) с заполнением формы подобно человеку (-d).
Emulate as if a user has filled in a HTML form and pressed the submit button
curl -k https://127.0.0.1/login -d 'login=user' -d 'pass=user' -c ck
Используя созданный файл cookie уже парсим страницу (-b).
curl -k https://127.0.0.1/main -b ck
curl 'https://10.3.10.1/api/history/5e5af97a9b265b5d06d859f7' -k -X GET -H 'Content-Type: application/json; charset=UTF-8' -H $'Cookie: sid="\u0021eFxBaHBT4XB9Qr4s+UKjvA==?gASVOAAAAAAAAACMA3NpZJSMBHV1aWSUjARVVUlElJOUKYGUfZSMA2ludJSKEOjZGC2Oh9ajckdj+UUhsD5zYoaULg=="
подмена sni/host (из поста https://habr.com/ru/articles/832678/ про замедление youtube)
curl --connect-to ::speedtest.selectel.ru https://manifest.googlevideo.com/100MB -k -o/dev/null
WGET
Загрузка тестового файла в dev/null (в RAM без диска)
wget -O /dev/null https://speedtest.selectel.ru/10GB
WGET recursive
Скан на директории через pentest https://pentest-tools.com/website-vulnerability-scanning
wget --no-check-certificate -r https://site.ru/ >sw
wget --recursive --no-parent https://site.ru/
\
wget --no-check-certificate -r robots=off https://site.ru/ &>sw
wget --no-check-certificate -r --spider robots=off https://site.ru/
wget \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--convert-links \
--restrict-file-names=windows \
--domains site.ru \
--no-parent \
https://site.ru/