Отличная альтернатива для утилит wget и curl в Linux
Оригинал: What is a good alternative to wget or curl on Linux
Автор: Dan Nanni
Дата публикации: 7 апреля 2015 г.
Перевод: А.Панин
Дата перевода: 13 августа 2016 г.
Если вам понадобится получить доступ к документам с веб-сервера в неинтерактивном режиме из терминала (например, загрузить веб-страницу или протестировать restful-API веб-сервиса), вы наверняка воспользуетесь таким инструментом, как wget или curl . Оба эти инструмента поддерживают большое количество аргументов командной строки и могут использоваться в неинтерактивном режиме для доступа к документам с веб-сервера при различных обстоятельствах. Однако, даже такие мощные инструменты могут успешно применяться лишь в том случае, если вы знаете, как с ними работать. Если же вы не являетесь экспертом в плане их аргументов, они смогут использоваться вами разве что в качестве простых утилит для загрузки файлов с веб-серверов.
Представленная разработчиками, как «curl-подобный инструмент для людей», утилита HTTPie была спроектирована с целью улучшения пользовательсских качеств таких утилит, как wget и curl . Главной целью ее разработчиков является предоставление пользователю возможности взаимодействия с веб-сервером с использованием командной строки максимально простым способом. Для этого в рамках HTTPie реализован выразительный, но в то же время простой и интуитивно понятный интерфейс командной строки. Кроме того, утилита выводит ответы веб-сервера с использованием цветовой разметки для улучшения их читаемости, а также поддерживает некоторые полезные механизмы, например, механизмы взаимодействия с сервером с использованием документов JSON и постоянных сессий, которые могут значительно оптимизировать ваш рабочий процесс.
Я уверен, что некоторые из вас скептически отнесутся к замене таких общедоступных и проверенных временем инструментов, как wget и curl , на совершенно неизвестную утилиту. Безусловно, с таким мнением сложно не согласиться, особенно в том случае, если вы работаете системным администратором и обслуживаете множество различных устройств. Однако, в случае разработчиков программного обеспечения и конечных пользователей продуктивность работы является решающим фактором. Если в мое поле зрения попадает удобная альтернатива для одного из стандартных инструментов системы, я обычно не вижу проблемы в его замене на более удобную версию в рамках моего рабочего окружения для экономии драгоценного времени. Лично я не вижу никакого смысла в предпочтительном и религиозном отношении к заменяемым инструментам. В конце концов, Linux всегда предоставляет пользователю выбор.
В рамках данной статьи я постараюсь рассказать об утилите HTTPie и продемонстрировать, почему я считаю ее дружелюбной альтернативой wget и curl .
Установка HTTPie в Linux
Утилита HTTPie разработана с использованием языка программирования Python, поэтому вы сможете установить ее практически в любой операционной системе (Linux, Mac OS X, Windows). Кроме того, она может быть установлена в формате пакета программного обеспечения из репозиториев большинства дистрибутивов Linux.
Debian, Ubuntu или Linux Mint:
В первую очередь следует подключить репозиторий EPEL, после чего выполнить следующую команду:
Альтернативный метод установки утилиты, который должен работать в любом дистрибутиве Linux, заключается в использовании утилиты pip.
Примеры использования утилиты HTTPie
После установки HTTPie вы можете использовать ее, инициируя исполнение команды http . Далее я покажу несколько полезных примеров использования этой команды http .
Пример 1: отправка пользовательских заголовков HTTP
Вы можете отправить серверу собственные заголовки HTTP в формате . Например, давайте отправим HTTP-запрос GET серверу www.test.com с стандартными заголовками «user-agent» и «referer» , а также с нашим собственным заголовком (а именно, «MyParam» ).
Обратите внимание на то, что для использования метода HTTP GET не нужно использовать каких-либо аргументов командной строки, позволяющих указать метод HTTP.
Результирующий запрос HTTP будет выглядеть следующим образом:
Вы можете использовать утилиту http в качестве инструмента для загрузки файлов с веб-серверов. При этом вам придется осуществить перенаправление потока стандартного вывода утилиты в файл следующим образом:
Пример 3: использование различных методов HTTP
Помимо используемого по умолчанию метода HTTP для получения данных от веб-сервера под названием GET вы можете использовать любые другие стандартные методы HTTP (такие, как PUT, POST, HEAD). Например, для отправки данных серверу с помощью запроса, использующего метод HTTP под названием PUT, следует выполнить следующую команду:
Пример 4: отправка содержимого формы
Отправка содержимого формы веб-серверу настолько проста, насколько проста следующая команда:
Параметр -f позволяет утилите http осуществить сериализацию данных полей формы и установить в качестве значения заголовка HTTP «Conetnt-Type» значение «application/x-www-form-urlencoded; charset=utf-8» .
Результирующий HTTP-запрос POST будет выглядеть следующим образом:
HTTPie имеет встроенный механизм для работы с документами формата JSON, который может оказаться очень полезным ввиду роста популярности формата JSON в качестве формата документов для обмена данными. Фактически, стандартным типом содержимого запросов (обозначаемым с помощью заголовка «content-type» ), используемым HTTPie, является JSON. Таким образом, в том случае, если вы отправляете данные полей формы без указания типа содержимого запроса, будет осуществляться сериализация этих данных в объект JSON.
Пример 6: перенаправление ввода
Еще одной удобной функцией HTTPie является возможность перенаправления ввода, благодаря которой вы можете передавать в качестве тела HTTP-запроса буферизованные данные. Например, вы можете использовать такую команду:
Заключение
В данной статье я познакомил вас с утилитой HTTPie, которая является альтернативой для таких известных утилит, как wget и curl . Помимо простых примеров использования этой утилиты, приведенных в статье, вы также можете ознакомиться с большим количеством интересных способов ее использованию на официальном сайте HTTPie . Хотел бы еще раз напомнить, что любой мощный инструмент может успешно применяться лишь в том случае, если вы знаете, как работать с ним. Лично я уже высоко оценил все возможности HTTPie в процессе поиска механизмов простого тестирования сложных API веб-приложений. А что думаете о ней вы?
Источник
Альтернативы wget для выкачивания страниц?
Интересует, есть ли что-то удобнее wget для выкачивания отдельных страниц со всем содержимым? Желательно бы как-то помечать исходные ссылки на выкачанные компоненты.
А, блин, ключик -nv и лог сделают то, что нужно 🙂
Впрочем, ещё интересно подумать над тем, как бы б конвертировать неюникодные страницы в юникод автоматом.
Не вижу у wget’а ничего похожего на хуки.
Можно, конечно, анализировать логи, но как-то это…
чем тебя пайп не устраивает?
Иногда пользуюсь webhttrack, правда, не смотрел, что внутри
Задачу решил тупо сохраняя лог и анализируя его после wget’а.
Есть, правда, бяка. Если набор символов в имени не ограничивать, то со всякими спецсимволами ссылки не корректно конвертировать. Ограничивать ascii — начинается кошмар с русскими ссылками. В смысле, они превращаются в urlencoded, да ещё и кодированные wget’ом. Используешь resctrict windows — русский в массе своей ок, но некоторые буквы в кашу превращаются и тоже ссылки не работают.
Приходится пока с acsii.
Забыл уточнить — речь идёт о cli.
Делаю кеширование страниц, на которые ссылаются с форума 🙂
А то кошмар. Ссылки 10-летней давности почти никакие недоступны :-/ Среднее время доступности ресурса по ссылке просто удручает.
Посмотри, пожалуйста, man httrack. Там внизу примеры есть. Может, заинтересует.
В простом случае
Плюсую, пользовался им, давно правда, настроек у него много, задачи поставленные решал.
Пощупал. Блин, нет в жизни счастья.
1. Так и не понял, как добавлять новый файл в уже имеющуюся структуру. То есть скачиваю одну страницу, потом в том же каталоге пытаюсь скачивать другую — вся структура пересоздаётся, старая страница убивается.
2. Не нашёл простого монолитного лога — откуда, во что сохранилось, какой сервер возвращал заголовок (для ручного перекодирования, а то само оно не умеет :-/)
3. Не нашёл возможности добавить mime-характерное расширение к файлам с невменяемыми именами. А то как браузеру отличить .php, в котором CSS от .php, в котором JS?
Зато с юникодом в именах всё в порядке, да…
Так и не понял, как добавлять новый файл в уже имеющуюся структуру. То есть скачиваю одну страницу, потом в том же каталоге пытаюсь скачивать другую — вся структура пересоздаётся, старая страница убивается.
по-моему, update к целому или более общему.
Старые файлы оставит, новые обновит и добавит.
Не нашёл простого монолитного лога — откуда, во что сохранилось, какой сервер возвращал заголовок (для ручного перекодирования, а то само оно не умеет :-/)
В файле hts-log.txt и в каталоге hts-cache собираются логи.
Посмотреть, что вообще происходит в каталоге, можно запустить что-то типа того:
inotifywait -m -r -e create -e modify -e delete -e move /home/user @/home/user/.mozilla @/home/user/.gconfd @/home/user/.gconf @/home/user/.xsession-errors
где @что-то — исключенные из рассмотрения файлы.
У меня постоянно такое запущено.
по-моему, update к целому или более общему.
Ага, работает. Меня смутило, что в man’е он был в примере без параметров, типа, обновить текущий проект.
Но не годится. Он начинает обновлять и весь уже имеющийся архив. Когда страниц будут тысячи, это будут кранты 🙂
В файле hts-log.txt и в каталоге hts-cache собираются логи.
В принципе, вся информация есть, но собрать её трудно. Раскидана по файлам, формат неудобный.
В общем, я, походу, wget добил, вроде, до вида, который мне нужен. Будет, таки, на форуме постраничный кеш 🙂
Только надо добить давно назревшую отложенную компиляцию постингов (чтобы при постинге лепились простые данные, а тяжеловесные операции потом в фоне шли) и будет лепота 🙂
А вот это полезно, спасибо. Не для этой задачи, но вообще 🙂
Источник
Аналоги Wget
GNU Wget — это бесплатный программный пакет для извлечения файлов с использованием HTTP(S) и FTP, наиболее широко используемых интернет-протоколов. Это неинтерактивный инструмент командной строки, поэтому его легко вызывать из сценариев, «отложенных» команд, терминалов без поддержки X-Windows и т.д.
Альтернативы для Wget
Android iOS (iPhone / iPad)
aria2 — это кроссплатформенная утилита загрузки с несколькими протоколами и несколькими источниками.
- Бесплатная Windows Android Mac OS
aria2 — это кроссплатформенная утилита загрузки с несколькими протоколами и несколькими источниками. Поддерживаемые протоколы: HTTP (S), FTP, BitTorrent (DHT, PEX, MSE / PE) и Metalink.
uGet — это легкий и полнофункциональный менеджер загрузок для Linux и Windows.
- Бесплатная Windows Android
uGet — это легкий и полнофункциональный менеджер загрузок для Linux и Windows. uGet позволяет загружать несколько параллельных потоков для ускорения загрузки, помещения файлов в очередь загрузки, приостановки и возобновления загрузки, расширенного управления категориями, интеграции с браузером, мониторинга буфера обмена, пакетной загрузки, локализации на более чем 25 языках и много других функций.
cURL — проект компьютерного программного обеспечения, предоставляющий библиотеку и инструмент командной строки для передачи данных.
- Бесплатная Windows Mac OS
cURL — это компьютерный программный проект, предоставляющий библиотеку и инструмент командной строки для передачи данных с использованием различных протоколов с синтаксисом URL: поддержка FTP, FTPS, SCP, SFTP, HTTP, HTTPS, TFTP, TELNET, DICT, LDAP, LDAPS и FILE.
Cyotek WebCopy — это бесплатный инструмент для локального копирования веб-сайтов.
Cyotek WebCopy — это бесплатный инструмент для локального копирования веб-сайтов на жесткий диск для просмотра в автономном режиме.
UnMHT добавляет поддержку чтения / записи MHT-файлов в Firefox.
- Бесплатная Windows Mac OS
UnMHT добавляет поддержку чтения / записи MHT-файлов в Firefox.
httpie — HTTPie — это CLI, похожий на cURL инструмент для людей.
- Бесплатная Windows Mac OS
httpie — HTTPie — это CLI, похожий на cURL инструмент для людей.
PageArchiver (ранее Scrapbook for SingleFile) — это расширение Chrome, которое помогает архивировать веб-страницы для чтения в автономном режиме.
- Бесплатная Windows Mac OS
PageArchiver (ранее Scrapbook for SingleFile) — это расширение Chrome, которое помогает архивировать веб-страницы для чтения в автономном режиме.
MacOS-приложение, которое автоматически загружает сайты из Интернета.
SiteSucker — это приложение для Macintosh, которое автоматически загружает веб-сайты из Интернета. Это выполняется путем асинхронного копирования веб-страниц сайта, изображений, PDF-файлов, таблиц стилей и других файлов на локальный жесткий диск, дублируя структуру каталогов сайта.
RESTClient может использоваться для тестирования различных HTTP-коммуникаций и веб-сервисов RESTful.
- Бесплатная Windows Mac OS
RESTClient может использоваться для тестирования различных HTTP-коммуникаций и веб-сервисов RESTful. Дружественный графический интерфейс, богатые функциональные возможности.
Что в этом списке?
В списке находится программы которые можно использовать для замены Wget.
Это аналоги похожие по функционалу на Wget, которые заменяют программу частично или полностью. Этот список содержит 9 замен.
С помощью пользователей мы собираем каталог похожих друг на друга программ, чтобы вы могли подобрать альтернативу и скачать их. На сайте можно скачать популярные программы для Windows, Mac Os, Android и iPhone
Источник