curl vs. wget: в чем разница?
Люди часто пытаются определить относительные преимущества команд и . Команды имеют некоторое функциональное перекрытие. Каждый из них может извлекать файлы из удаленных мест, но на этом сходство заканчивается.
— это фантастический инструмент для загрузки контента и файлов . Он может загружать файлы, веб-страницы и каталоги. Он содержит интеллектуальные процедуры для просмотра ссылок на веб-страницах и рекурсивной загрузки контента по всему веб-сайту. Это непревзойденный менеджер загрузок из командной строки.
удовлетворяет совершенно другую потребность . Да, он может извлекать файлы, но не может рекурсивно перемещаться по веб-сайту в поисках контента для извлечения. На самом деле позволяет вам взаимодействовать с удаленными системами, отправляя запросы к этим системам, а также получая и отображая их ответы. Эти ответы вполне могут быть содержимым веб-страницы и файлами, но они также могут содержать данные, предоставляемые через веб-службу или API в результате «вопроса», задаваемого запросом скручивания.
И не ограничивается веб-сайтами. поддерживает более 20 протоколов, включая HTTP, HTTPS, SCP, SFTP и FTP. И, возможно, благодаря превосходной обработке каналов Linux, легче интегрировать с другими командами и сценариями.
У автора есть веб-страница, которая описывает различия, которые он видит между и .
Fluent Terminal
Эмулятор командной строки, отличающийся не только расширенным функционалом и настраиваемым интерфейсом, но и самой платформой, на которой он был разработан. Fluent Terminal является универсальным приложением, доступным для установки как из Windows Store, так и из автономного файла.
Отметим ключевые особенности терминала:
- Поддержка PowerShell (по умолчанию), CMD, WLS и других командных оболочек, путь к которым задается в настройках приложения.
- Поддержка нескольких вкладок, изменение их цвета и заголовка.
- Полнотекстовый поиск.
- Полнооконный режим и вызов дополнительных независимых окон.
- Удаленное подключение по SSH и Mosh.
- Быстрый запуск команд (встроенный аналог окошка Win + R в Windows).
- Копирование и вставка с помощью мыши.
- Множество настроек, позволяющих изменять внешний вид терминала.
Правила: Commands, Arguments и Options
Учитывая, что доступны три типа команд, стоит кратко рассмотреть, какие команды и когда следует использовать.
- Используйте Commands, когда нужно семантически идентифицировать некую операцию вроде компиляции, импорта или резервного копирования.
- Используйте Options, чтобы обеспечить конфигурационную информацию либо для программы в целом, либо для конкретной команды.
- Отдавайте предпочтение глаголу в качестве имени команды и прилагательному или существительному для имени ключа (например, -color, -parallel, -projectname).
Независимо от типа конфигурируемого аргумента примите во внимание следующие правила:
- Учитывайте регистр букв в именах идентификатора аргумента. Пользователь может запутаться, пытаясь указать -FullName или –fullname, тогда как в командной строке ожидается другой регистр букв.
- Пишите тесты для проверки разбора командной строки. Методы вроде Execute и OnExecute позволяют делать это относительно легко.
- Используйте Arguments, когда идентификация конкретных аргументов по имени громоздка или когда допускается несколько значений, но ставить префиксы перед каждым из них в виде идентификатора ключа неудобно.
- Подумайте об использовании IntelliTect.AssertConsole (itl.tc/CommandLineUtils) для перенаправления консольного ввода и вывода, чтобы встраивать код и захватывать происходящее в консоли для тестирования.
В использовании .NET Core CommandLineUtils может проявиться один недостаток: они не локализованы и имеются только на английском языке. Вывод такого текста, как в ShowHelp (наряду с сообщениями об исключениях, которые обычно не локализуются), весь будет на английском. Как правило, это, возможно, не проблема, но, поскольку командная строка является частью пользовательского интерфейса приложения, очевидны случаи, когда текст только на английском неприемлем. По этой причине:
- подумайте о написании собственных функций для ShowHelp и ShowHint, если локализация важна;
- проверяйте CommandLineApplication.RemainingArguments при конфигурировании CommandLineApplication, чтобы исключения не генерировались (throwOnUnexpectedArg = false).
Terminus
Еще один претендующий на оригинальность терминал для Windows, Linux и Mac OS с поддержкой вкладок, подключения к серверу по SSH, расширяемостью и множеством настроек.
Выделим главные особенности инструмента:
- Поддержка синтаксиса PowerShell, bash, wls, cmdir, clink и Cygwin.
- Включение и отключение расширений.
- Применение цветовых тем, изменение уровня прозрачности окна.
- Использование и настройка «горячих» клавиш.
- Подключение по SSH.
- Копирование и вставка текста.
- Открытие нескольких вкладок и восстановление закрытых вкладок.
- Интеграция в контекстное меню Проводника.
Как и Hyper, Terminus для работы с штатными консольными утилитами требует запуска от имени администратора.
Еще один способ восстановления загрузки Windows 10 с помощью командной строки
Для этого способа нужна утилита Bootrec. В отличие от предыдущей утилиты эта утилита не восстанавливает файлы загрузчика, а восстанавливает загрузочную запись. То есть она восстанавливает MBR — первый сектор на HDD
Для операционной системы очень важно, чтобы MBR был в целости и сохранности. При старте компьютера его BIOS первым делом ищет MBR для осуществления с него запуска операционной системы
Для этого примера запустим, как и в предыдущих примерах, командную строку. В рассматриваемой утилите есть две основные команды /FixMbr и /FixBoot Первая команда необходима для исправления MBR, а вторая создает новый. Первым делом рассмотрим ситуацию, когда у нас поврежден MBR. Для этого в консоли введем первую команду.
На изображении выше видно, что операция прошла успешно, а это значит, что MBR восстановлен.
Теперь рассмотрим ситуацию, когда первый способ не срабатывает, то есть мы создадим новый сектор MBR. Для этого воспользуемся второй командой.
Из изображения выше видно, что новый сектор MBR создан успешно.
Из примеров видно, как легко восстановить сектор MBR с помощью консольной утилиты Bootrec. Если у вас проблема со стартом Windows 10, то советуем воспользоваться этим примером в первую очередь.
Чистим систему от вредоносного программного обеспечения до восстановления загрузчика
Если причиной поломки загрузчика является вредоносная программа, то этот вредоносный код необходимо удалить до восстановления. В этой ситуации вам поможет Dr.Web LiveDisk. Это аварийный диск, который обладает множеством средств для восстановления компьютера, а также лечения его от вирусов. Загрузить Dr.Web LiveDisk можно на его официальном сайте www.drweb.ru. Этот Live CD основан на linux и является бесплатным. Этот диск распространяется как образ ISO, который можно записать, как на оптический диск, так и на USB-флешку. После записи образа на диск запустим Dr.Web LiveDisk.
В стартовом меню выберем первый пункт и продолжим загрузку Dr.Web LiveDisk. После нескольких секунд должна запуститься ОС, основанная на Linux, которая собственно и представляет собой Dr.Web LiveDisk.
Также полезным будет тот факт, что в этой ОС есть полная поддержка интернета и встроенный браузер Firefox.
Практическое задание: команды и аргументы
-
1. Сколько передается с помощью данной строки команды (не считая самой команды)
touch '/etc/cron/cron.allow' 'file 42.txt' "file 33.txt"
2. Является ли команда встроенной?
3. Существует ли действующий псевдоним команды ?
4. Прочитайте страницу руководства для команды и убедитесь в том, что вы поняли предназначение параметра этой команды. Создайте и удалите файл для проверки работоспособности параметра .
5. Выполните команду: . Проверьте работоспособность вашего псевдонима команды на тестовом файле. Работает ли он так, как ожидается?
6. Выведите список используемых на данный момент псевдонимов команд.
7a. Создайте псевдоним команды ‘city’, позволяющий вывести название вашего города.
7b. Используйте ваш псевдоним команды для того, чтобы убедиться в его работоспособности.
8. Выполните команду для активации режима вывода информации о раскрытии каждой из команд командной оболочкой.
9. Проверьте работоспособность команды , воспользовавшись созданными ранее псевдонимами команд и .
10. Выполните команду для прекращения вывода информации о раскрытии команд командной оболочкой.
11. Удалите созданный ранее псевдоним команды city.
12. В каких директориях расположены бинарные файлы, являющиеся реализациями команд и ?
13. Объясните различие между следующими командами:
echo /bin/echo
14. Объясните различие между следующими командами:
echo Hello echo -n Hello
15. Выведите строку с двумя пробелами между буквами B и C.
16 (Необязательное задание). Создайте команду (без использования символов пробелов) для формирования следующего вывода:
4+4 =8 10+14 =24
17. Используйте команду для формирования следующего вывода:
??\\
Найдите два решения с использованием одинарных кавычек, два решения с использованием двойных кавычек и одно решение без использования кавычек (и поблагодарите Rene и Darioush из компании Google за это дополнение).
18. Используйте одну команду для вывода трех слов в трех строках.
Аргументы командной строки
Из урока №3 мы уже знаем, что при компиляции и линкинге, компилятор создает исполняемый файл. Когда программа запускается, выполнение начинается с первой строки функции main(). До этого урока мы объявляли main() следующим образом:
int main()
1 | intmain() |
Обратите внимание, в этой версии функции main() никаких параметров нет. Тем не менее, многие программы нуждаются в некоторых входных данных
Например, предположим, что вы пишете программу под названием Picture, которая принимает изображение в качестве входных данных, а затем делает из этого изображения миниатюру (уменьшенная версия изображения). Как функция picture() узнает, какое изображение нужно принять и обработать? Пользователь должен сообщить программе, какой файл следует открыть. Это можно сделать следующим образом:
// Программа: Picture
#include <iostream>
#include <string>
int main()
{
std::cout << «Enter name of image-file to create a thumbnail for: «;
std::string filename;
std::cin >> filename;
// Открываем файл-изображение
// Создаем миниатюру
// Выводим миниатюру
}
1 |
// Программа: Picture intmain() { std::cout<<«Enter name of image-file to create a thumbnail for: «; std::stringfilename; std::cin>>filename; // Открываем файл-изображение // Создаем миниатюру // Выводим миниатюру } |
Тем не менее, здесь есть потенциальная проблема. Каждый раз при запуске программа будет ожидать пользовательский ввод. Это не проблема, если вы вручную запускаете программу из командной строки один раз для одного изображения. Но это уже проблема, если вы хотите работать с большим количеством файлов или чтобы другая программа имела возможность запустить эту программу.
Рассмотрим это детально. Например, вы хотите создать миниатюры для всех файлов-изображений, которые находятся в определенном каталоге. Как это сделать? Вы можете запускать эту программу столько раз, сколько есть изображений в каталоге, введя каждое имя файла вручную. Однако, если есть сотни изображений, такой подход будет, мягко говоря, не очень эффективным! Решением здесь будет написать программу, которая перебирала бы каждое имя файла в каталоге, вызывая каждый раз функцию picture() для каждого файла.
Теперь рассмотрим случай, когда у вас есть веб-сайт, и вы хотите, чтобы он создавал миниатюру каждый раз, когда пользователь загружает изображение на сайт. Эта программа не может принимать входные данные из Интернета и следует логический вопрос: «Как тогда вводить имя файла?». Выходом является вызов веб-сервером функции picture() автоматически каждый раз после загрузки файла.
В обоих случаях нам нужно, чтобы внешняя программа передавала имя файла в качестве входных данных в нашу программу при её запуске, вместо того, чтобы функция picture() сама дожидалась, пока пользователь вручную введет имя файла.
Аргументы командной строки — это необязательные строковые аргументы, передаваемые операционной системой в программу при её запуске. Программа может их использовать в качестве входных данных, либо игнорировать. Подобно тому, как параметры одной функции предоставляют данные для параметров другой функции, так и аргументы командной строки предоставляют возможность людям или программам предоставлять входные данные для программы.
Второй способ восстановить загрузчик Windows 10
Если вышеописанный способ не сработал, то возвращаемся в командную строку так же, как делали это ранее. Вводим команды diskpart, а потом — list volume. И изучаем подключенные разделы дисков.
Если у вас система с UEFI и GPT, в списке вы должны увидеть скрытый раздел с файловой системой FAT32 и размером 99-300 Мб. Если же BIOS и MBR, то должен обнаружиться раздел размером 500 Мб (после чистой установки Windows 10) или меньше с файловой системой NTFS. Вам требуется номер этого раздела N (Том 0, Том 1 и т.д.)
Также обратите внимание на букву, соответствующую разделу, на котором хранятся файлы Windows
Введите по порядку следующие команды:
По завершении, закрываем командную строку и перезагружаем компьютер уже не с внешнего загрузочного накопителя, проверяем, загружается ли Windows 10.
Надеюсь, изложенная информация сможет вам помочь. Кстати, можно попробовать также и «Восстановление при загрузке» в дополнительных параметрах загрузки или с диска восстановления Windows 10. К сожалению, не всегда все проходит гладко, и проблема легко решается: часто (при отсутствии повреждений HDD, что тоже может быть) приходится прибегать к переустановке ОС.
Параметры
- not
- Задает выполнение команды только в случае невыполнения условия.
- errorlevel число
-
Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe,
завершилась с кодом, равным или большим числа. - команда
- Команда, которая должна быть обработана в случае выполнения условия.
- строка1==строка2
-
Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут
быть заданы явно или могут быть пакетными переменными (например, %1). Явно заданные
строки нет необходимости заключать в кавычки. - exist имя_файла
- Условие выполняется, если существует файл с именем имя_файла.
- оп_сравнения
-
Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения
оп_сравнения.Оператор Описание EQU равно NEQ не равно LSS меньше LEQ меньше или равно GTR больше GEQ больше или равно - /i
-
Сравнение строк без учета регистра знаков. Параметр /i можно использовать в
конструкции string1==string2 команды if. Эти сравнения являются
общими. Если и строка1, и строка2 состоят из цифр, строки преобразовываются в
числа и выполняется сравнение чисел. - cmdextversion число
-
Условие выполняется, только если номер внутренней версии, связанный с расширениями
командного процессора Cmd.exe, равен или больше числа. первая версия имела номер 1.
Номер версии увеличивается на 1 при внесении в расширения командного процессора
значительных изменений. Условие с cmdextversion не выполняется, если расширения
командного процессора запрещены (по умолчанию они разрешены). - defined переменная
- Условие выполняется, если переменная определена.
- выражение
-
Команда и все ее параметры для обработке в командной строке при выполнении оператора
else. - /?
- Отображение справки в командной строке.
Вопросы для самоконтроля
-
-
-
- Как в Windows запускается режим командной строки?
- Как выполняется обмен данными между окном командной строки или окном приложения MS DOS и другими окнами?
- Какие компоненты содержит команда в Windows?
- Как выполняется повторное выполнение и редактирование команд в режиме командной строки?
- Как выполняется редактирование команд в командной оболочке Far?
- Какие возможности по обмену данными с командной строкой имеются в командной оболочке Far?
- Как выводится справка для списка команд Windows и справка по отдельной команде?
- Как организовать вывод выходных данных команды в файл?
- Как организовать последовательное выполнение нескольких команд (цепочку или конвейер команд)?
- Как перейти в вышележащий каталог и корневой каталог?
- Что такое полное имя файла?
- Можно ли скопировать файл в тот же каталог, в котором он находится?
-
-
wget
-
только в командной строке. Нет библиотеки.
-
Рекурсивный ! + +: = 26 =: + —- по сравнению с curl — это возможность рекурсивно загружать или даже просто загружать все, что называется удаленным ресурсом , будь тостраницу HTML или список каталогов FTP.
-
Старые . имеет следы до 1995 года, а можно отследить не раньше конца 1996 года.
-
GPL . — 100% GPL v3. завиток лицензируется MIT.
-
GNU . является частью проекта GNU, и все авторские права назначаются FSF. Проект скручивания полностью автономный и независимый, без какого-либо организационного воспитания вообще с почти всеми авторскими правами, принадлежащими Даниэлю.
-
не требует дополнительных опций, чтобы просто загрузить удаленный URL-адрес в локальный файл, а требуется или
-
поддерживает публичный список суффикса для обработки доменов cookie, завиток не работает.
-
поддерживает только поддержку GnuTLS или OpenSSL для поддержки SSL /TLS
-
поддерживает только Basic auth как единственный тип авторизации через HTTP-прокси
-
не поддерживает SOCKS
-
Его способность восстанавливаться после преждевременного прерывания передачи и продолжения загрузки не имеет аналогов в curl.
-
можно ввести, используя только левую руку на клавиатуре qwerty!
Синтаксис
Параметры
Параметр | Описание |
---|---|
Указывает расположение и имя первого файла или набора файлов, которые требуется сравнить. Можно использовать подстановочные знаки ( * и * для указания нескольких файлов. | |
Указывает расположение и имя второго файла или набора файлов, которые требуется сравнить. Можно использовать подстановочные знаки ( * и * для указания нескольких файлов. | |
/d | Отображает различия в десятичном формате. (Формат по умолчанию — шестнадцатеричный.) |
/a | Отображает различия как символы. |
/l | Отображает номер строки, где возникает разница, вместо отображения смещения в байтах. |
/n = | Сравнивает только число строк, заданное для каждого файла, даже если файлы имеют разные размеры. |
/C | Выполняет сравнение без учета регистра. |
«/OFF» | Обрабатывает файлы с заданным атрибутом offline. |
/? | Отображает справку в командной строке. |
PowerCmd
Оболочка для командной строки, дополняемая областью графического интерфейса, в которой выводятся переменные окружения. Позволяет открывать дополнительные сессии командной строки во вкладках, расположенных вертикально и/или горизонтально.
Программой также поддерживается:
- Полноэкранный режим, копирование и вставка текста из консольной области.
- Изменение цветовых настроек.
- Сохранение и восстановление предыдущих сессий.
- Предпросмотр содержимого каталогов при вводе в консоль первого символа.
- Полнотекстовый поиск и интеграция в контекстное меню каталогов.
- Создание закладок и быстрый вызов команд из истории действий.
Приложение PowerCmd не развивается с 2011 года, но пока остается совместимым с популярными версиями Windows.
Самый простой способ восстановления
Увидев сообщение о неисправности загрузчика, первым делом у пользователя ПК возникает вопрос — как восстановить загрузчик Windows 10. В этом примере мы опишем самый простой способ его восстановления. Для этого примера нам понадобится диск восстановления Windows 10.
Также для этой задачи можно использовать оригинальный установочный диск с Windows 10. Ну что ж, приступим. Вставим диск восстановления в привод и загрузимся с него при старте компьютера.
В первом окне мастера диска восстановления необходимо указать раскладку клавиатуры, после чего откроется меню мастера.
В этом окне мы выберем вторую вкладку «Поиск и устранение неисправностей» и сразу перейдем на следующую «Дополнительные параметры».
В дополнительных параметрах нас интересует вкладка «Восстановление при загрузке». После перехода по этой ссылке мастер попросит выбрать ОС для восстановления ее запуска.
На исследуемом компьютере установлена одна операционная система Windows 10, поэтому в мастере выбор только один. После выбора ОС система начнет процедуру нахождения неисправностей компьютера и должна восстановить поврежденный загрузчик.
Если с помощью этого способа вам не удастся вернуть работоспособность Windows 10, то в следующих примерах мы опишем подробный процесс восстановления загрузочного сектора с помощью системных утилит DiskPart и BCDboot.
Как обойти ограничение
Чтобы обойти ограничение, используйте один или несколько из следующих методов, соответствующих ситуации:
-
Измените программы, которые требуют длинных командных строк, чтобы они использовали файл, содержащий сведения о параметре, а затем включили имя файла в командную строку.
Например, вместо использования командной строки в пакетном файле измените программу, чтобы использовать командную строку, аналогичную следующей командной строке, где ParameterFile — это файл, содержащий необходимые параметры (parameter1 parameter2… ParameterN):
-
Измените программы, в которых используются большие переменные среды, чтобы переменные среды содержали менее 8191 символов.
Например, если переменная среды PATH содержит более 8191 символов, используйте один или несколько следующих методов, чтобы уменьшить число символов:
- Используйте более короткие имена для папок и файлов.
- Уменьшите глубину деревьев папок.
- Храните файлы в меньшем числе папок, чтобы в переменной среды PATH требовалось меньше папок.
- Изучите возможные методы, которые можно использовать для снижения зависимости PATH для .dll файлов.
Powershell против cmd: Несколько примеров
CMD:
cd /d D:
PowerShell:
Set-Location D:
Вывод: Обе команды, приведенные выше, были использованы для изменения текущего местоположения каталога на диск D.
CMD:
Dir
PowerShell:
Get-Childitem
Вывод: Как вы можете видеть в данном результате, обе команды используются для отображения файлов и папок, имеющихся в текущем каталоге.
Как переименовать файл?
CMD:
rename d:\old.txt new.txt
PowerShell:
Rename-Item "d:\new.txt" -NewName "old.txt"
Вывод: данные команды используются для переименования любого конкретного файла.
Как получить помощь?
CMD:
Help
PowerShell:
Get-Help
Вывод: Если вы не являетесь экспертом, вы можете выполнить приведенные выше команды, чтобы получить полезную информацию о командах или командлете.
CMD:
Tasklist
PowerShell:
Get-Process
Вывод: как вы видели на картинке выше, обе команды используются для отображения всех запущенных задач.
CMD:
taskkill /IM "skype.exe" /F
PowerShell:
Stop-Process -Name "Skype" -Force
Вывод: любой запущенный процесс можно остановить с помощью заданных команд. Мы остановили Skype с помощью команд.
Загрузка файлов методом POST
Для HTTP запроса типа POST существует два варианта передачи полей из HTML форм, а именно, используя алгоритм и . Алгоритм первого типа создавался давным-давно, когда в языке HTML еще не предусматривали возможность передачи файлов через HTML формы.
Со временем возникла необходимость через формы отсылать еще и файлы. Тогда консорциум W3C взялся за доработку формата POST запроса, в результате чего появился документ RFC 1867. Форма, которая позволяет пользователю загрузить файл, используя алгоритм , выглядит примерно так:
<form action="/upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="upload"> <input type="submit" name="submit" value="OK"> </form>
Чтобы отправить на сервер данные такой формы:
> curl -F [email protected] -F submit=OK http://www.example.com/upload.php
Скрипт , который принимает данные формы:
<?php print_r($_POST); print_r($_FILES); move_uploaded_file($_FILES'upload''tmp_name', 'image.jpg');
Ответ сервера:
Array ( => OK ) Array ( => Array ( => image.jpg => image/jpeg => D:\work\temp\phpB02F.tmp => 0 => 2897 ) )
Получение и отправка заголовков
По умолчанию, заголовки ответа сервера не показываются. Но это можно исправить:
> curl -i google.com HTTP/1.1 301 Moved Permanently Location: http://www.google.com/ Content-Type: text/html; charset=utf-8 Date: Sun, 16 Sep 2018 08:28:18 GMT Expires: Tue, 16 Oct 2018 08:28:18 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 219 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
Если содержимое страницы не нужно, а интересны только заголовки (будет отправлен запрос):
> curl -I http://www.example.com/ HTTP/1.1 200 OK Date: Sun, 16 Sep 2018 08:20:52 GMT Server: Apache/2.4.34 (Win64) mod_fcgid/2.3.9 X-Powered-By: PHP/7.1.10 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Set-Cookie: PHPSESSID=svn7eb593i8d2gv471rs94og58; path=/ Set-Cookie: visitor=fa867bd917ad0d715830a6a88c816033; expires=Mon, 16-Sep-2019 08:20:53 GMT; Max-Age=31536000; path=/ Set-Cookie: lastvisit=1537086053; path=/ Content-Length: 132217 Content-Type: text/html; charset=utf-8
Посмотреть, какие заголовки отправляет CURL при запросе, можно с помощью опции , которая выводит более подробную информацию:
> curl -v google.com
- Строка, начинающаяся с означает заголовок, отправленный серверу
- Строка, начинающаяся с означает заголовок, полученный от сервера
- Строка, начинающаяся с означает дополнительные данные от CURL
* Rebuilt URL to: http://google.com/ * Trying 173.194.32.206... * TCP_NODELAY set * Connected to google.com (173.194.32.206) port 80 (#0)
> GET / HTTP/1.1 > Host: google.com > User-Agent: curl/7.61.1 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Location: http://www.google.com/ < Content-Type: text/html; charset=utf-8 < Date: Mon, 17 Sep 2018 15:11:49 GMT < Expires: Wed, 17 Oct 2018 15:11:49 GMT < Cache-Control: public, max-age=2592000 < Server: gws < Content-Length: 219 < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
* Connection #0 to host google.com left intact
Если этой информации недостаточно, можно использовать опции или .
А вот так можно отправить свой заголовок:
> curl -H "User-Agent: Mozilla/5.0" http://www.example.com/
Что такое curl?
На самом деле, curl — это больше чем просто утилита командной строки для Linux или Windows. Это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Библиотека поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP. Она отлично подходит для имитации действий пользователя на страницах и других операций с URL адресами.
Поддержка библиотеки curl была добавлена в множество различных языков программирования и платформ. Утилита curl — это независимая обвертка для этой библиотеки. Именно на этой утилите мы и остановимся в этой статье.
Заключение
За последние три года .NET Framework подверглась нескольким существенным изменениям.
- Теперь в ней есть кросс-платформенная поддержка, в том числе iOS, Android и Linux.
- Произошел переход от секретной закрытой разработки этой инфраструктуры к полностью открытой — теперь это модульная инфраструктура с открытым исходным кодом.
- Был выполнен основательный рефакторинг BCL API для .NET Standard Library, чтобы создать модульную кросс-платформенную инфраструктуру, которая годится для широкого спектра областей применения, будь то Software as a Service, мобильные, локальные корпоративные и настольные системы, Интернет вещей и т. д.
- Вслед за эпохой Windows 8 произошло перерождение .NET, где ей уделялось мало внимания.
Вот и все, что я хотел сказать. Если вы еще не начали разбираться в новой .NET Core 1.0, сейчас самое время сделать это — ваши затраты на изучение с лихвой окупятся. Иначе говоря, если вы обдумываете обновление более ранних версий, обновляйтесь прямо сейчас. Рано или поздно все равно придется это сделать, поэтому лучше это не затягивать и быстрее задействовать преимущества новых средств.
Марк Михейлис (Mark Michaelis) — учредитель IntelliTect, где является главным техническим архитектором и тренером. Почти два десятилетия был Microsoft MVP и региональным директором Microsoft с 2007 года. Работал в нескольких группах рецензирования проектов программного обеспечения Microsoft, в том числе C#, Microsoft Azure, SharePoint и Visual Studio ALM. Выступает на конференциях разработчиков, автор множества книг, последняя из которых — «Essential C# 6.0 (5th Edition)» (itl.tc/EssentialCSharp). С ним можно связаться в Facebook (), через его блог (IntelliTect.com/Mark), в Twitter (@markmichaelis) или по электронной почте [email protected].
Выражаю благодарность за рецензирование статьи экспертам IntelliTect Филу Споукасу (Phil Spokas) и Майклу Стоуксбери (Michael Stokesbary).