HTTPie — удобный инструмент похожий на cURL


Содержание

Отличная альтернатива для утилит wget и curl в Linux

Оригинал: What is a good alternative to wget or curl on Linux
Автор: Dan Nanni
Дата публикации: 7 апреля 2015 г.
Перевод: А.Панин
Дата перевода: 13 августа 2020 г.

Если вам понадобится получить доступ к документам с веб-сервера в неинтерактивном режиме из терминала (например, загрузить веб-страницу или протестировать 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 веб-приложений. А что думаете о ней вы?

11 примеров использование команд cURL в режиме реального времени

cURL — инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.

Если вы работаете в службе поддержки, то должны уметь использовать команды cURL для устранения неполадок веб-приложений. cURL — кроссплатформенная утилита для Windows, MAC и UNIX.
Ниже приведены некоторые часто используемые примеры синтаксиса.

1. Проверка возможности подключения к URL-адресу

Если вы работаете в UNIX-системе и пытаетесь подключиться к внешнему URL-адресу, то сначала проверьте наличие доступа к ресурсу через curl . Для этого используйте следующую команду:

2. Сохранение вывод URL / URI в файл

Если нужно сохранить содержимое URL или URI в конкретном файле, используйте следующий синтаксис:

Приведенный выше пример сохранит все содержимое с хоста 74.125.68.100 в файл /tmp/google.html .

3. Показать заголовок запроса и ответа

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

4. Загрузить с предельной скоростью


Если нужно узнать, сколько времени требуется для загрузки с определенной скоростью, то используйте следующую команду:

5. Использование прокси для подключения

Если необходимо проверить, можно ли использовать прокси-сервер, примените следующий синтаксис:

6. Проверка URL-адресас введением заголовка

Для устранения конкретной проблемы можно использовать Curl , чтобы вставить в header свои данные. Рассмотрим следующий пример запроса с Content-Type:

Цукерберг рекомендует:  Css3 - Адаптивная версия дизайна сайта

Мы просим curl передать Content-Type в качестве application / json в заголовок запроса.

7. Добавить дополнительный заголовок

Вы можете добавить заголовок к запросу с помощью синтаксиса — header .

8. Открыть только заголовок ответа

Если вы хотите быстро проверить заголовок ответа, то для этого можно использовать следующий синтаксис.

9. Подключить HTTPS / SSLURL-адрес и игнорировать любые ошибки SSL -сертификата

Если необходимо получить доступ к https URL-адресу, который выдает ошибку сертификата из-за несоответствия имени хоста, можно использовать следующий синтаксис.

10. Подключиться с использованием определенного протокола (SSL / TLS)

Чтобы подключиться к URL- адресу только по протоколу SSL V2 / V3 или TLS ,используйте следующий синтаксис.

Для подключения с использованием SSLV2:

Для подключения с использованием SSLV3:

Для подключения через TLS:

11. Загрузить файл с FTP-сервера

С помощью cURL можно загрузить файл с ftp-сервера , указав имя пользователя и пароль.

Всегда можно использовать «-v» с любым синтаксисом для вывода в подробном режиме.

Использования cURL онлайн

Да, это возможно. Вы можете выполнить cURL удаленно с помощью следующих инструментов.
Online CURL — компактный инструмент для извлечения URL-адреса онлайн и добавления следующих параметров.

cURL command line builder –позволяет создать команду cURL, с помощью которой можно ввести информацию в пользовательский интерфейс.

cURL — полезная утилита для устранения проблем с подключением в режиме реального времени.

Данная публикация представляет собой перевод статьи « 11 cURL Command Usage with Real-Time Example » , подготовленной дружной командой проекта Интернет-технологии.ру

curl vs HTTPie

The main differences as I (Daniel Stenberg) see them. Please consider my bias towards curl since after all, curl is my baby.

Please let me know if you have other thoughts or comments on this document. File issues or pull-requests if you find problems or have improvements.

What both commands do

  • Perform HTTP(S) operations specified as URLs
  • Require an option to follow redirects
  • Support -v to show sent request headers
  • Support HTTP and SOCKS proxies
  • HTTP Range requests
  • netrc support

Transfer performance comparsion

Tranfering 80GB from a localhost Apache HTTP server to /dev/null on Linux.

httpie 0.9.8 needed 153 seconds. 535 MB/sec


curl 7.51.0 needed 25 seconds. 3276 MB/sec

  • Written in C and uses libcurl
  • supports many other protocols as well apart from HTTP(S)
  • supports any amount of URLs on the command line
  • can send binary POSTs
  • Supports multiple HTTP methods in a single command line for different URLs
  • Documented in a man page for offline documentation
  • supports HTTP/1.0 requests
  • features URL «globbing» for ranges and sequences
  • Allows more invasive header modifications, like passing in invalid letters in custom headers ( HГ¶st: ), replacing Content-Length: in a POST and removing the Host: header from a request. Or just adding a header without a space after the colon.
  • Supports happy eyeballs or explicit ipv4/ipv6 use
  • Supports custom connection tricks like with —resolve and —connect-to
  • HTTP/2 support (for both HTTP:// and HTTPS:// URLs)

HTTPie «cURL-like tool for humans»

  • Written in Python and uses Requests
  • Only supports a single URL on the command line
  • Has JSON support
  • Colored output
  • Assumes «name=value» for POSTS. «name:value» or just «data» is impossible to send as arguments and has to be sent to stdin (not to mention POSTing Connection: — which instead will be intepreted as remove that header please)
  • Can you do a multipart POST with two text-only fields?
  • Forbids UTF-8 symbols in HTTP request headers
  • Doesn’t allow a user to change the Content-Length: header
  • Has an «Auth plugin» system that supports many more auth types than curl
  • Can’t send the same header field name multiple times in a request.
  • Has no official man page
  • HTTP/2 ?
  • Happy eyeballs?
  • HTTPS proxy support (HTTPS to the proxy, independently of the server’s protocol) ?
  • brotli support?

Updated: August 13, 2020 17:14 (Central European, Stockholm Sweden)

HTTPie — удобный инструмент похожий на cURL

Программа cURL, разработанная компанией Daniel Stenberg, предназначена для реализации таких функций, как «FTP-клиент», «Http-клиент» и «Интерфейс командной строки». cURL — это бесплатная программа с открытым исходным кодом, работающая на многих платформах, в числе которых BSD, Cygwin и Haiku.

Программа cURL
Лицензия Бесплатная
Исходный код Открытый
Разработчик Daniel Stenberg
Официальный сайт

Найдено 14 аналогов cURL. Эти программы имеют схожий набор функций и отлично подходят для замены.

Найдено 29 похожих программ, которые могут быть использованы только в качестве частичной альтернативы cURL.


Консольные утилиты

MIDNIGHTCOMMANDER — Файловый менеджер

MidnightCommander или mc — это двухпанельный файловый менеджер для операционных систем Linux. Он очень похож на файловый менеджер FAR, известный пользователям Windows. Все рабочее пространство разделено на четыре части — это две панели, командная строка и строка, обозначающая назначение функциональных клавиш.

VIM — Текстовой редактор

Vim — это один из лучших текстовых редакторов для операционной системы Linux, не только среди консольных утилит, но и в целом. Программа имеет очень своеобразный интерфейс и режимы работы, которые позволяют набирать текст и выполнять его наиболее быстро и эффективно, не отрывая рук от клавиатуры.

RTORRENT — Торрент клиент

Как следует из названия, rtorrent — это простой torrent клиент, который, как и другие приложения командной строки работает только через терминал. Программа нетребовательна к ресурсам имеет не очень удобный интерфейс, но работает достаточно быстро и стабильно.

HTOP — Мониторинг ресурсов системы

htop — это монитор использования системных ресурсов в реальном времени с интерфейсом командной строки. Вы можете посмотреть сколько оперативной памяти занято, процент использования процессора, а также какие процессы используют больше всего ресурсов системы.

SAIDER — Мониторинг ресурсов системы

Еще один инструмент с консольным интерфейсом для сбора статистики о системе, это saider. Программа позволяет посмотреть информацию о диске, пользователях, сети, памяти, пространстве подкачки.

Mosh замена SSH

Mosh — является утилитой и имеет похожие функции как и у SSH. Он быстрее, особенно на линках с высокой задержкой, например, в мобильных сетях. Когда набираете любой символ, то его мгновенно можно увидеть на экране, так же, как и в локальном терминале. Не знаете почему так? А все потому, что в mosh внедрен так называемый local line editing и он не ждет ответа от сервера, а сразу все выдает на экран. Работает даже в полноэкранных приложениях, вроде vim или emacs.

NCDU — Анализатор места на диске

Ncdu — консольная утилита с интерфейсом ncurses, на основе du. Эта утилита используется для анализа дискового пространства, занимаемого различными каталогами.

SS замена netstat

ss или Socket statistics это отличная альтернатива для netstat. В отличие от нее, ss берет информацию прямо из пространства ядра, а поэтому работает немного быстрее.

CCZE — Украшает логи

Утилита, украшающая ваши логи.

$ tailf /var/log/syslog | ccze

TREE — Вывод каталога, подкаталогов, файлов

Я использую этот пакет, называемый tree, для отображения подкаталогов и файлов в данном каталоге. Он отлично работает, за исключением того, что он не отображает скрытые файлы.

Supervisor — менеджер процессов

Suppervisor – это менеджер процессов, который существенно упрощает управление долго работающими программами, предоставляя простой и понятный интерфейс.

Tmux — Терминальный мультиплексор

Tmux — это терминальный мультиплексор или иными словами, вы можете в одном терминале запустить несколько терминальных сессий и переключаться между ними или даже разместить их в одном окне, а также отключиться от сессии оставив её работать в фоне, а затем вернуться и посмотреть результат, это может быть очень удобно при работе по SSH. Если вы раньше пользовались утилитой screen, то tmux — это её аналог, который имеет намного больше функций.

cURL — инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.

HTTPIE аналог curl на python

HTTPie — инструмент командной строки для получения или отправки данных с использованием синтаксиса URL.

WGET — качалка файлов

Wget свободная неинтерактивная консольная программа для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также поддерживает работу через HTTP прокси-сервер.

HTTPie — удобный инструмент похожий на cURL

HTTPie: a CLI, cURL-like tool for humans

HTTPie (pronounced aitch-tee-tee-pie) is a command line HTTP client. Its goal is to make CLI interaction with web services as human-friendly as possible. It provides a simple http command that allows for sending arbitrary HTTP requests using a simple and natural syntax, and displays colorized output. HTTPie can be used for testing, debugging, and generally interacting with HTTP servers.

  • Expressive and intuitive syntax
  • Formatted and colorized terminal output
  • Built-in JSON support
  • Forms and file uploads
  • HTTPS, proxies, and authentication

  • Arbitrary request data
  • Custom headers
  • Persistent sessions
  • Wget-like downloads
  • Linux, macOS and Windows support
  • Plugins
  • Documentation
  • Test coverage
Цукерберг рекомендует:  Ios - с iOS на Android

On macOS, HTTPie can be installed via Homebrew (recommended):

A MacPorts port is also available:

Most Linux distributions provide a package that can be installed using the system package manager, for example:

A universal installation method (that works on Windows, Mac OS X, Linux, …, and always provides the latest version) is to use pip:

(If pip installation fails for some reason, you can try easy_install httpie as a fallback.)

Starting with version 2.0.0 (currently under development) Python 3.6+ is required.

You can also install the latest unreleased development version directly from the master branch on GitHub. It is a work-in-progress of a future stable release so the experience might be not as smooth.

On macOS you can install it with Homebrew:

Otherwise with pip :

Verify that now we have the current development version identifier with the -dev suffix, for example:

See also http —help .

See the request that is being sent using one of the output options:

Use Github API to post a comment on an issue with authentication:

Download a file and save it via redirected output:

Download a file wget style:

Use named sessions to make certain aspects or the communication persistent between requests to the same host:

Set a custom Host header to work around missing DNS records:

The name of the HTTP method comes right before the URL argument:

Which looks similar to the actual Request-Line that is sent:

When the METHOD argument is omitted from the command, HTTPie defaults to either GET (with no request data) or POST (with request data).

The only information HTTPie needs to perform a request is a URL. The default scheme is, somewhat unsurprisingly, http:// , and can be omitted from the argument – http example.org works just fine.

If you find yourself manually constructing URLs with querystring parameters on the terminal, you may appreciate the param==value syntax for appending URL parameters. With that, you don’t have to worry about escaping the & separators for your shell. Also, special characters in parameter values, will also automatically escaped (HTTPie otherwise expects the URL to be already escaped). To search for HTTPie logo on Google Images you could use this command:

Additionally, curl-like shorthand for localhost is supported. This means that, for example :3000 would expand to http://localhost:3000 If the port is omitted, then port 80 is assumed.

When HTTPie is invoked as https then the default scheme is https:// ( $ https example.org will make a request to https://example.org ).

You can also use the —default-scheme option to create shortcuts for other protocols than HTTP (possibly supported via plugins). Example for the httpie-unixsocket plugin:

There are a few different request item types that provide a convenient mechanism for specifying HTTP headers, simple JSON and form data, files, and URL parameters.

They are key/value pairs specified after the URL. All have in common that they become part of the actual request that is sent and that their type is distinguished only by the separator used: : , = , := , == , @ , =@ , and :=@ . The ones with an @ expect a file path as value.

Item Type Description
HTTP Headers Name:Value Arbitrary HTTP header, e.g. X-API-Token:123 .
URL parameters name==value Appends the given name/value pair as a query string parameter to the URL. The == separator is used.
Data Fields field=value , field=@file.txt Request data fields to be serialized as a JSON object (default), or to be form-encoded ( —form, -f ).
Raw JSON fields field:=json , field:=@file.json Useful when sending JSON and one or more fields need to be a Boolean , Number , nested Object , or an Array , e.g., meals:='[«ham»,»spam»]’ or pies:=[1,2,3] (note the quotes).
Form File Fields field@/dir/file Only available with —form, -f . For example screenshot@

/Pictures/img.png . The presence of a file field results in a multipart/form-data request.

Note that data fields aren’t the only way to specify request data: Redirected input is a mechanism for passing arbitrary request data.


You can use \ to escape characters that shouldn’t be used as separators (or parts thereof). For instance, foo\==bar will become a data key/value pair ( foo= and bar ) instead of a URL parameter.

Often it is necessary to quote the values, e.g. foo=’bar baz’ .

If any of the field names or headers starts with a minus (e.g., -fieldname ), you need to place all such items after the special token — to prevent confusion with —arguments :

JSON is the lingua franca of modern web services and it is also the implicit content type HTTPie uses by default.

If your command includes some data request items, they are serialized as a JSON object by default. HTTPie also automatically sets the following headers, both of which can be overwritten:

Content-Type application/json
Accept application/json, */*

You can use —json, -j to explicitly set Accept to application/json regardless of whether you are sending data (it’s a shortcut for setting the header via the usual header notation: http url Accept:’application/json, */*’ ). Additionally, HTTPie will try to detect JSON responses even when the Content-Type is incorrectly text/plain or unknown.

Non-string fields use the := separator, which allows you to embed raw JSON into the resulting object. Text and raw JSON files can also be embedded into fields using =@ and :=@ :

Please note that with this syntax the command gets unwieldy when sending complex data. In that case it’s always better to use redirected input:

Submitting forms is very similar to sending JSON requests. Often the only difference is in adding the —form, -f option, which ensures that data fields are serialized as, and Content-Type is set to, application/x-www-form-urlencoded; charset=utf-8 . It is possible to make form data the implicit content type instead of JSON via the config file.

If one or more file fields is present, the serialization and content type is multipart/form-data :

The request above is the same as if the following HTML form were submitted:

Note that @ is used to simulate a file upload form field, whereas =@ just embeds the file content as a regular text field value.

To set custom headers you can use the Header:Value notation:

There are a couple of default headers that HTTPie sets:

Any of these except Host can be overwritten and some of them unset.

To unset a previously specified header (such a one of the default headers), use Header: :

To send a header with an empty value, use Header; :

The —max-headers=n options allows you to control the number of headers HTTPie reads before giving up (the default 0 , i.e., there’s no limit).

HTTP clients send cookies to the server as regular HTTP headers. That means, HTTPie does not offer any special syntax for specifying cookies — the usual Header:Value notation is used:

Send a single cookie:

Send multiple cookies (note the header is quoted to prevent the shell from interpreting the ; ):

If you often deal with cookies in your requests, then chances are you’d appreciate the sessions feature.

The currently supported authentication schemes are Basic and Digest (see auth plugins for more). There are two flags that control authentication:

Есть ли аналог Curl на PHP который не требует установки?

Лучшая библиотека для http запросов на PHP на сегодняшний день — это Guzzle. Работает без curl, если тот не доступен: guzzle.readthedocs.org/en/latest/overview.html#req.

Но она с ООП интерфейсом.

Ну блин. Ровно один запрос в гугл дает отличные результаты, советую пользоваться им.

А вы никогда такое не видели?

. but your computer or network may be sending automated queries. To protect our users, we can’t process your request right now.

See Google Help for more information.

Сначала введение: давайте называть мой продукт «система».

— CDN еще нету, планирую разместить 20 серверов в разных странах на основе Raspberry Pi с кэшем 200Gb на каждом, если я правильно понял, что такое CDN.

— не понимаю о чем вы. Но если я и буду это делать, то это входит в раздел «Панель управления > приложения > оптимизация кода», которая еще разрабатывается.

— какой облачный бекап? если вы о приложениях, то да, все приложения надо загружать на сайт системы, а потом, после проверки, их можно будет устанавливать из менеджера приложений, так что с ними ничего не случится — они всегда на официальных серверах системы. Если уж пользователю хочется установить свое приложение без загрузки на сервера — пожалуйста, правьте код менеджера приложений на здоровье, там всё просто. Бекапы настроек каждого пользователя сохраняются отдельно для каждой его машины в личном кабинете на официальном сайте. Управление системой осуществляется как с официального сайта системы, так и с сервера, на котором система установлена.

— Документация немножко есть — woonem.tk/readme.txt . Надеюсь, вы что-то поймете, если прочитаете. Это еще не движок, а скорее платформа или фреймворк. Это просто набор библиотек и удобная система межпроцессного взаимодействия, вроде D-Bus. То есть на систему можно написать панель управления и установить через менеджер приложений, чем я сейчас и занимаюсь. Исходников еще не выкладывал, кроме отдельных кусков кода, вроде core.php или var_dump.php, так-как пока планирую использовать систему только для личных нужд.

— Уверен. Я на это только и ориентируюсь, хотя есть некоторые функции, за которые php пугает Notic’ами. На всякий случай исходник версии 3.2 выйдет в свет после появления 6 версии php и долгого тестирования.

— что это, я даже не догадываюсь. вы и так знаете, что я говнокодер, зачем еще раз проверять мои знания?

— о какой официальности можно говорить? Поддерживается стандартно MySQL и еще я свою делаю. Смысл моей БД в том, что она полностью интегрирована в PHP и по этому инъекции неосуществимы, а еще она сама написана на PHP, что уменьшает требования к ПО машины, на которой исполняется код. Но вы сами догадываетесь, что лично у меня на это уйдет минимум пол года. Это при том, что после этого её еще надо будет оптимизировать. Вообщем, я рукожоп. Зато без ошибок пишу (я имел в виду русский язык).

— зайдите на hosthack.tk через 2 месяца, когда он заработает, и проверьте свой сайт на уязвимость slow HTTP POST. Потом эту систему и в инструменты буду интегрировать. Пока рано — самой панели управления то нет.

— дело в том, что с момента создания движка я еще ни разу не думал про обратную совместимость, по этому вам бы пришлось переделывать код под новую систему взаимодействия каждый раз после обновления. Спасибо за пинок. Начиная с версии 3.3 будет поддерживаться обратная совместимость с версиями не ниже 3.2 (на данный момент актуальная версия — 3.1.2, стабильная — 3.1.1, разрабатывается — 3.2). Каждое приложение находится в своей папке и начиная с версии 3.2 название папки является названием класса, а название каждого скрипта является названием функции этого класса, то есть расположение файла по пути app/adwert/core.php будет равноценно такому коду:

Но для начала я должен почитать мануалы по классам.

«System» — это приложение, его можно легко обновить через менеджер приложений, как и любое другое приложение. Оповещения об обновлениях появляются в панели управления, благодаря приложению «Notifications», и легко отключаются.
Поддержкой занимаюсь я, а где-то в 2020 году, надеюсь, будет группа.

— в СЕО я не специалист, но есть мета-теги keywords, description и разметка структурированных данных. Но код шаблона страницы пользователь может менять (пока только вручную, в версии 3.2 сможет через панель управления, но всё равно пользователю придется править код через нее), по этому добавит, что надо.

И самое главное: Версия 3.2 будет готова и выпущена 6 сентября 2020 года.

Альтернатива PHP+Curl

Существует ли альтернатива PHP+Curl? PHP+Curl не устраивает ужасным интерфейсом, в частности сложностями при работе с cookies. Хотелось бы OOP интерфейс в котором можно было бы устанавливать/получать cookie через вызов метода а не с костылями типа создания временного файла (что к тому же не безопасно) и его парсинга / парсинга HTTP headers. Хотелось бы чего с API типа:

Если не существует готового решения наверное буду писать свою реализацию HTTP клиента на PHP с использованием fsockopen и т.д. Надоело работать с идиотским интерфейсом курла.

ужасным интерфейсом, в частности сложностями при работе с cookies.

Надоело работать с идиотским интерфейсом курла

У пользователей нет документации. А если бы и была, они её не стали читать.

Существует ли альтернатива PHP+Curl? PHP+Curl не устраивает ужасным интерфейсом, в частности сложностями при работе с cookies

XXI век на дворе, зачем пользоваться низкоуровневым интерфейсом, когда есть composer? Например:
https://github.com/guzzle/guzzle

Сложноват этот guzzle кстати, не просто разобраться. Хотя возможно сказывается небольшой опыт с OOP. А вообще вещь хорошая, надо будет ознакомиться. API doc есть где то? Нашёл только туториал у них на сайте.

Сложноват этот guzzle кстати, не просто разобраться. Хотя возможно сказывается небольшой опыт с OOP.

Видимо, второе. Использование его реально много проще, чем прямое дёргание curl.

По ссылке User Guide. API doc что то ненашёл что бы каждый метод в алфавитном порядке.

Завязывай с пхп. Если хочешь человеческое ООП — это Python / Ruby. На крайняк Java.

бред бредом погоняется

ООП как самоцель?

http://docs.python-requests.org/en/latest/user/quickstart/
Cookies
If a response contains some Cookies, you can get quick access to them:

Гг. Это прекрасно. Здесь нет никакого ООП. Обычный процедурный интерфейс. Использующий простые структуры. ЧТД.

Хотелось бы OOP интерфейс в котором можно было бы устанавливать/получать cookie через вызов метода

Это питон. Хочешь — создай класс и жми точку у класса/экземпляра. Все перечисленные в моем посте питон-конструкции являются объектами, как выглядит «интерфейс» к ним — это лишь ваше виденье. Через точку у них есть методы, которыми я и предлагаю пользоваться вместо быдло-пхп кодятины на CURL :-)

В Python тоже есть интерфейс к курлу и он не особо сильно отличается от php-шного. Использование urllib не всегда приемлемо. Так что для Python тоже не плохо бы использовать прослойку типа guzzle вместо прямой работы с низкоуровневым интерфейсом курла. Кстати что есть наподобие guzzle для python, ruby?

Больше всего нравится OOP в ruby, например краткостью при работе с instance variables, не надо писать self.var или $this->var а просто @var. Это наглядно и удобно.

Что раздражает больше всего в PHP так это все эти костыльные названия функций типа mb_strlen вместо «string».length. В целом PHP язык некрасивый.

С тобой все понятно. Продолжай повторять мантру, что селектор члена это ооп.

Как установить httpie в Ubuntu / Debian

Установка:

Для установки httpie в Ubuntu / Linux Mint / Debian, введите в Терминал :

Подробная информация о пакете:

CLI, cURL-подобный инструмент для людей

HTTPie — это утилита CLI HTTP, которая делает взаимодействие CLI с сервисами на основе HTTP максимально удобным для людей.

HTTPie делает это, предоставляя команду http, которая позволяет выдавать произвольные HTTP-запросы, используя простой и естественный синтаксис и отображая раскрашенные ответы.

Зависимости:

Интерактивный высокоуровневый объектно-ориентированный язык (версия python3 по умолчанию)

Пакет подсветки синтаксиса, написанный на Python 3

Элегантная и простая HTTP-библиотека для Python3, построенная для людей

Как установить httpie в Ubuntu / Debian

Установка:

Для установки httpie в Ubuntu / Linux Mint / Debian, введите в Терминал :

Подробная информация о пакете:

CLI, cURL-подобный инструмент для людей

HTTPie — это утилита CLI HTTP, которая делает взаимодействие CLI с сервисами на основе HTTP максимально удобным для людей.

HTTPie делает это, предоставляя команду http, которая позволяет выдавать произвольные HTTP-запросы, используя простой и естественный синтаксис и отображая раскрашенные ответы.

Зависимости:

Интерактивный высокоуровневый объектно-ориентированный язык (версия python3 по умолчанию)

Пакет подсветки синтаксиса, написанный на Python 3

Элегантная и простая HTTP-библиотека для Python3, построенная для людей

Цукерберг рекомендует:  Phpstorm - Проблема с PhpStormРЕШЕНО
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих