Curl/wget разное

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/

SOCKS5

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)

Очень удобно, особенно в контексте того, что многие антивирусы (Kaspersky, Symantec) инсталят свои сертификаты как mitm.
 
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 (куки)

Пример авторизации с сохранением 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 
Cookie так же можно передавать через опцию (-Р c Cookie), не только через файл.
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/

Leave a Reply