Git Product home page Git Product logo

curl's Introduction

Работа с curl

Использование утилиты curl

Протокол http в двух словах

Когда клиент подключается к example.com и запрашивает ресурс /, он передает Метод, URI, версию http, а так же заголовки, к примеру:

GET / HTTP/1.1
User-agent: curl/2000
Host: example.com

Примерный ответ сервера + тело ответа "hello":

HTTP/1.1 200 OK
Server: example-server/1.1
Content-Length: 5
Content-Type: plain/text

hello

Первая цифра кода ответа является своего рода "классом ошибок"

  • 1xx: информационный
  • 2xx: успех
  • 3xx: перенаправление
  • 4xx: клиент запросил что-то, что сервер не мог или не хотел доставить
  • 5xx: проблема на сервере

Примеры использования:

Использования нескольких методов запроса в одном запросе (POST, HEAD)

curl --location http://example.com/1 --next
  --data sendthis http://example.com/2 --next
  --head http://example.com/3

Запрос изображений от 1 до 100, которые инкременты двум, алфавитный диапозон, список, комбинирование:

curl -O http://example.com/[0-100:2].png
curl -O http://example.com/section[a-z].html
curl -O http://example.com/{one,two,three,alpha,beta}.html
curl -O http://example.com/{web,mail}-log[0-6].txt

Сохранение странциы с двух разных сайтов:

curl http://{site,host}.host[1-5].example.com -o "subdir/#1_#2"

Иногда требуется передать большое количество значений, воспользуемся чтением из файла:

curl -K cmdline.txt http://example.com

Передача логина:пароля для аутентификации

 curl -u user:12345 http://example.com/

Cжатие

curl --tr-encoding http://example.com/

Ограничение скачивания

curl https://example.com/ --limit-rate 200K

Максимальный размер файла для загрузки

curl --max-filesize 100000 https://example.com/

Назначение определенных портов

curl --local-port 4000-4200 https://example.com/

Через определенный интерфейс или IP адрес

curl --interface eth1 https://www.example.com/
curl --interface 192.168.0.2 https://www.example.com/
curl --interface machine2 https://www.example.com/

Ограничение времени подключения:

curl --connect-timeout 2.781 https://example.com/

Перенаправление:

curl --connect-to www.example.com:80:load1.example.com:80 http://www.example.com

Отправка заголовка Host

curl -H "Host: www.example.com" http://localhost/

Если в течении 15 сек скорость меньше 1000 байт, дропнуть соединение.

curl --speed-time 15 --speed-limit 1000 https://example.com/

Использование Proxy

curl -x proxy.example.com:80 https://example.com/
curl -U daniel:secr3t -x myproxy:80 http://example.com
curl --proxy-header "User-Agent: magic/3000" -x proxy https://example.com/

Заполнение форм

curl -F person=anonymous -F [email protected] http://example.com/submit.cgi

Замена заголовка

curl -F 'name=Dan' -H 'Content-Type: multipart/magic' https://example.com

Сохраняем cookie, создание новых cookie

curl -c cookie-jar.txt https://yandex.ru -o /dev/null
curl -j -b cookies.txt http://example.com
curl -d user=daniel -d secret=qwerty -d id=bc76 https://example.com/login.cgi \ -b cookies -c cookies -o out

Диагностика

Для вывода диагностики требуется добавить -v, если данной информации не достаточно, можно воспользоваться трассировкой:

  • curl --trace dump http://example.com если вместо dump указать "-" это переправит вывод в stdout), так же можно поиграться со значениями --trace-acsii, --trace-time

Фильтрация вывода

Выведем только Type, Code: curl -w "Type: %{content_type}\nCode: %{response_code}\n" http://example.com -o /dev/null

Help

  • Список кодов состояния Code_return
  • У curl свыше 250 опций и с каждым годом значение все растет и растет. В основном для справок достаточно curl --help, curl - h, но проще воспользоваться веб версией: MAN_web
  • curl --manual https://curl.haxx.se/docs/manpage.html |less
  • Книга curl

curl's People

Contributors

andriyenko avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.