Главные темы ► linux ► shell ► wget_and_curl ► Использование wget и curl в Linux
Теги: wget curl shell

Использование wget и curl в Linux

Использование wget и curl в Linux

    Загрузка файла
    curl  -L -O -o /home/toly/alpine.iso https://dlcdn.alpinelinux.org/alpine/v3.15/releases/x86_64/alpine-standard-3.15.4-x86_64.iso #Продолжить прерванную загрузку curl  -L -O -o /home/toly/alpine.iso -C - https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86_64/alpine-standard-3.15.4-x86_64.iso

    -o Выбрать директорию для загрузки 
    -O Сохранять оригинальное имя файла
    -Y 100 Ограничение Чтобы не перезагружать сеть загрузкой (Кб)

    Отправка данных post
    curl --data "login=Admin&password=Admin" http://netbash.ru
    Сохранить заголовки ответов в файл
    curl -D /tmp/curl.txt  https://erp.tdx.by

    curl -F Отправить данные в виде формы


    Отправка данных методом GET
    curl http://site.com?login=test&password=test

    curl -I http://site.com #Получать только http заголовок, остальное игнорировать
    curl -T login.txt ftp://speedtest.tele2.net/upload/ #Отослать файл на сервер
    -s -S - Выводить информацию об ошибках
    -z - Скачать файл, только если он был модифицирован позже указанного времени
    -J - удалить заголовок из запроса
    -L - Принимать и обрабатывать перенаправления
    -p - Использовать прокси
    --proto - Указать протокол который нужно использовать
    Отправить заголовок и получить только заголовок

     curl -I --header 'If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT' https://losst.ru
    Рекурсивная загрузка сайта с помощью wget
    #!/bin/bash # Получить и сохранить cookies используя логин и пароль wget --save-cookies ./cookies.txt \ --keep-session-cookies \ --post-data 'user=user&password=password' \ http://megasyte.ru/auth.php # Используя полученные cookies скачать страницу wget --load-cookies ./cookies.txt \ --mirror \ --recursive \ --page-requisites \ --no-clobber \ --html-extension \ --convert-links \ --restrict-file-names=windows \ --domains megasyte.ru \ --no-parent \ -p \ -P ./ \ http://megasyte.ru/page.php?id=1000 #--mirror - параметр для зеркального отображения. Эта опция включает рекурсию и отметку времени, устанавливает бесконечную глубину рекурсии и сохраняет списки каталогов FTP, эквивалентно ‘-r -N -l inf --no-remove-listing’. #--recursive: загрузить весь веб-сайт. #--domains site.org: не переходить по ссылкам за пределами site.org. #--no-parent: не переходить по ссылкам вне каталога tutorials/html/. #--page-requisites: получить все элементы, из которых состоит страница (изображения, CSS и т. д.). #--html-extension: сохранять файлы с расширением .html. #--convert-links: преобразовать ссылки, чтобы они работали локально, в автономном режиме. #--restrict-file-names=windows: изменить имена файлов, чтобы они работали и в Windows. #--no-clobber: не перезаписывать существующие файлы (используется, если загрузка прерывается и возобновляется). #-p загрузить все файлы, необходимые для правильного отображения данной HTML-страницы. #-P ./LOCAL-DIR: сохранить все файлы и каталоги в указанный каталог.
    Загрузка страницы с помощью curl

    В следующем примере утилита curl использует тот же cookie файл, что использовался выше утилитой wget:

    curl --cookie ./cookies.txt http://megasyte.ru/page.php?id=1000
    Статус ответа от сервера по доменному имени
    #!/bin/bash #Можно в этот же скрипт засунуть проверку сертификата на валидность https://www.ssllabs.com/ssltest/analyze.html echo "Введите только название домена без протокола и пробелов:" echo "Например: yandex.ru" read name #Убрать из текста все, что не буквы или цифры и не точка validchars="$(echo $name | sed -e 's/[^[:alnum:]\.\/]//g')" if [ $validchars != $name ] then { echo "Вы неправильно ввели домен" exit 1 } fi status="не определен" status=`curl -s -o /dev/null -w "%{http_code}" https://$name` echo "https://$name Статус: $status" status=`curl -s -o /dev/null -w "%{http_code}" http://$name` echo "http://$name Статус: $status" status=`curl -s -o /dev/null -w "%{http_code}" https://www.$name` echo "https://www.$name Статус: $status" status=`curl -s -o /dev/null -w "%{http_code}" http://www.$name` echo "http://www.$name Статус: $status"
    POST запрос с помощью curl

    В следующем примере извлекается токен из полученного post запроса, который в последующем используется для загрузки нужной страницы сайта

    #!/bin/bash #Запрос получения токена request_token=$(curl --request POST \ --url https://megasyte.ru/api/v3/auth/access_token \ --header 'content-type: multipart/form-data;' \ --form username='a.user@mail.ru' \ --form password='password' \ --form grant_type=password) 1>/dev/null #prefix=$1 #token=`echo $request_token | cut -d\" -f4` #curl https://megasyte.ru/api/v3/$prefix?%7B%22access_token%22:%22$token%22%7D

    Следующая команда покажет все перенаправления(переходы) с помощью опции -L и покажет только заголовки с помощью опции -i ( --include или -I, --head более короткий вариант )

    curl -L --head --max-redirs 2 yandex.ru

    Однако если сайт использует аутентификацию, передать эти данные при переходе на следующую страницу не получится
    С помощью дополнительной опции --max-redirs можно указать максимальное возможное кол-во перенаправлений


    Источники
    Последнее изменение: October 10, 2024 06:13


    Редактировать


    test

    2025-12-31 23:09:00 Редактировать

    test

    2025-12-31 23:10:00 Редактировать

    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ
    Loading…
    Loading the web debug toolbar…
    Attempt #