NAME
curl - transfer a URLSynopsis
curlDESCRIPTION
curlЦе інструмент для передачі даних з або до сервера, використовуючи один з підтримуваних протоколів (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP або FILE). Command is designed to work without user interaction.curl offers busload of useful tricks як proxy support, user authentication, ftp upload, HTTP post, SSL (https:) connections, cookies, file transfer resume and more. As you will see below, the amount of features will make your head spin!
curl is powered by libcurl for all transfer-related features. See (3) for details.
URL
URL syntax є protocol dependent. You"ll find a detailed description в RFC 3986.Ви можете скористатися різними URL-адресами або частинами URL-адреси, щоб записати частину електронної пошти з braces as in:
or you can get sequences of alphanumeric series using as in:
Нічого не з'являти згоди є підтриманий на момент, але ви можете використовувати декілька next до всіх інших:
Ви можете визначити будь-яку URL-адресу на лінію. Вони будуть бути виконані в послідовному manner в спеціальному порядку.
Since curl 7.15.1 Ви можете або конкретний крок counter для ranges, якщо ви можете отримати все Nth number or letter:
Якщо ви знайдете конкретну URL-адресу без протоколу // prefix, curl буде вірити, що ви думаєте, що протокол ви маєте велике бажання. Це буде вказати на HTTP, але намагаються інші протоколи, що базуються на встановлених-застосованих host name prefixes. Для прикладу, для host names starting with "ftp." curl will assume you want to speak FTP.
PROGRESS METER
curl normally displays a progress meter під час operations, indicating amount transfered data, transfer speeds and estimated time left etc.However, sin curl displays data to the terminal by default, if you invoke curl до operation and it is about to write data to the terminal, it disables progress meter astherwise it would mess up the output mixing progress meter and response data.
Якщо ви намагаєтеся запустити метр для HTTP POST або PUT requests, вам потрібна відповідь, щоб відобразити відповідь на файл, використовуючи shell redirect (>), -o або подібний.
Це не трапляється, щоб FTP завантажити як те, що функціонування не буде спустити над будь-якою відповіддю на terminal.
Якщо ви впевнені в прогресі "bar" встановлюйте регулярний метр, -# is your friend.
OPTIONS
-a/--append (FTP) Якщо він використовувався в FTP upload, це буде тлі curl до підрахунку до target file instead of overwriting it. Якщо це файл не існує, він буде створений.Якщо ця опція використовується twice, вдруге буде заблоковано append mode again. -A/--user-agent
Якщо цей варіант є більше, ніж один раз, останній один буде бути одним, що використовується. This is done by first doing a request and checking the response-headers, thus inducing an extra network round-trip. --basic, --digest, --ntlm, and --negotiate.
Зверніть увагу на те, що будь-який спосіб не залежати від того, як ви збираєтеся з stdin, тому що це може бути необхідний для того, щоб бути двадцять і для клієнта повинні бути заздалегідь. Якщо потрібна вага буде, коли uploading from stdin, upload operation will fail.
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються. -b/--cookie
Якщо немає "=" літер, він використовувався в мережу, вона використовується як файл ім'я, щоб використовувати read previously stored cookie lines from, which should be used in this session if they match. За допомогою цього методу також activates "cookie parser", які будуть робити curl record incoming cookies too, які можуть бути handy if you"re using this in combination with the -L/--location option. Файл формату файлу до read cookie з повинен бути плагін HTTP headers або Netscape/Mozilla cookie файл формату.
NOTE that the file specified with -b/--cookie is only used as input. No cookies буде stored in the file. Store cookies, use the -c/--cookie-jar option or you could even save the HTTP headers to a file using -D/--dump-header!
Якщо цей варіант є більше, ніж один раз, то останній буде бути одним, який використовувався. that ends with ";type=A".
Якщо ця опція використовується twice, вдруге буде заблоковано ASCII usage. --basic (HTTP) Tells curl to use HTTP Basic authentication. Це означає, що ця функція використовується, як правило, неточна, неможлива, щоб використовувати її для попереднього набору параметрів, які мають різну authentication method (such as --ntlm, --digest and --negotiate).
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються. --ciphers (SSL) Специфіки, які циферки використовують у зв'язку. List of ciphers must be using valid ciphers. Read up on SSL cipher list details on this URL: http://www.openssl.org/docs/apps/ciphers.html
Якщо ця функція використовує кілька разів, в останній день будезавжди інші. --compressed (HTTP) Використовується для відключеного відповіді за допомогою одного з логотипів libcurl supports, і повернення до uncompressed document. Якщо ця функція використовується і сервери, які не підтримуються, curl буде повідомити про помилку.
Якщо ця функція використовується впродовж декількох днів, всі випадки буде запускати його на/вниз. --connect-timeout
Якщо ця option is used several times, the last one will be used. -c/--cookie-jar
NOTEЯкщо cookie jar може бути створений або написаний, у всьому curl operation буде невпинним або навіть report an error clearly. За допомогою -v буде варіювати відтворений, але що є тільки visible feedback ви збираєтеся про це ймовірно lethal situation.
Якщо ця опція використовується в короткий час, останній конкретний файл name буде використовуватися. -C/--continue-at
Використовуйте "-C -" для того, щоб перевірити, щоб автоматично виконати where/how to resume the transfer. Це будуть використовувати given output/input files до фігури that out.
Якщо ця option is used several times, the last one will be used. --create-dirs Якщо ви використовувалися в з'єднанні з -o опціями, curl буде створювати необхідність локальної директорії hierarchy як необхідно. Ця опція створить dirs mentioned with -o option, nothing else. Якщо -o file name не буде повідомлено, або якщо мова йде про mentions або існують, то не буде створюватися.
Для створення remote directories при використанні FTP, try --ftp-create-dirs. --crlf (FTP) Перевірити LF на CRLF в upload. Useful for MVS (OS/390).
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються. -d/--data (HTTP) Показує конкретні дані в POST-рефекті на HTTP-сервері, в спосіб, що може emulate, якщо ваш користувач має зв'язок в HTML-формі і натиснуто на кнопку. Зауважте, що ці дані є винятково виразними з необов'язковим процесом (з усіма новими лінійками вирізати). The data is expected to be "url-encoded". Це буде викликати дзвінок до програвання даних до сервера, використовуючи content-type application/x-www-form-urlencoded. Compare to -F/--form. Якщо ця функція використовує більше, ніж один раз на тому, як один рядок, ці сторінки конкретні будуть merged together with separating &-letter. Thus, using "-d name=daniel -d skill=lousy" буде generate a post chunk that looks like "name=daniel&skill=lousy".
Якщо ви натиснете data з листом @, залиште, щоб файл name був read the data from, or - if you want curl to read the data from stdin. Показники файлу повинні бутизавантажені. Multiple files може бути specified. Posting data from a file named "foobar" would thus be done with --data@foobar".
To post data purely binary, ви повинні instead use the --data-binary option.
-d/--data is the same as --data-ascii.
Якщо ця функція використовує кілька разів, ця мова продовжується в першу чергу. --data-ascii (HTTP) This is an alias for the -d/--data option.
Якщо ця функція використовує кілька разів, ця мова продовжується в першу чергу. --data-binary (HTTP) --data-ascii does, алеякщо за допомогою цього параметра в контексті конфіденційної інформації є kept as-is. If you want to post a binary файл без strip-newlines feature of the --data-ascii option, this is for you.
Якщо ця функція використовує кілька разів, ця мова продовжується в першу чергу. --digest (HTTP) Enables HTTP Digest authentication. Це є вірогідність того, що помилки password from being sent over wire in clear text. Use this in combination with the normal -u/--user option to set user name and password. See also --ntlm, --negotiate and --anyauth for related options.
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються. --disable-eprt (FTP) Tell curl до disable the use of the EPRT and LPRT commands when doing active FTP transfers. Curl буде звичайно завжди перша спроба використовувати EPRT, тоді LPRT перед використанням PORT, але з цим варіантом, це буде використовувати PORT праворуч. EPRT і LPRT є розширення до оригіналу FTP протоколу, не можуть працювати на всіх серверах, але можуть бути більш функціональними в будь-який спосіб, ніж традиційний PORT command.
Якщо ця функція використовує кілька разів, всі випадки буде скинути це на/поза. --disable-epsv (FTP) Tell curl to disable the use of the EPSV command when doing passive FTP transfers. Curl буде, як правило, першим, щоб скористатися використанням EPSV перед PASV, але з цією функцією, вона не намагається використовувати EPSV.
Якщо ця функція використовує кілька разів, всі випадки буде скинути це на/поза. -D/--dump-header
Ця опція є зручним для використання, коли ви збираєтеся headers, що на HTTP site sends to you. Cookies from the headers could then be read in a second curl invoke by using the -b/--cookie option! The -c/--cookie-jar option is however a better way to store cookies.
Якщо використовується на FTP, ftp server response lines are consideraed being "headers" і thus are saved there.
Якщо ця option is used several times, the last one will be used. -e/--referer
Якщо ця option is used several times, the last one will be used. --engine
Якщо ця функція використовує кілька разів, всі випадки буде скинути це на/поза. --egd-file
Якщо ця option is used several times, the last one will be used. --cert-type
Якщо ця option is used several times, the last one will be used. --cacert
curl recognizes the environment variable назви "CURL_CA_BUNDLE" if це те, що є, і використовує given path as path to a CA cert bundle. Ця опція overrides that variable.
Windows version curl буде автоматично дивитися на CA certs file, що називається "curl-ca-bundle.crt", або в тому ж повідомленні як curl.exe, або в поточному робочому об'єкті, або в будь-який час протягом всього вашого PATH.
Якщо ця option is used several times, the last one will be used. --capath
Якщо ця option is used several times, the last one will be used. -f/--fail (HTTP) Проблема невідповідно (не відтворюється на всіх) на серверах errors. Це найбільше усвідомлює це, щоб отримати потрібні scripts, etc. У звичайних випадках, коли HTTP-сервери позначаються на вкладці документа, його відновлюють HTML документ, який міститься (який міститься також описані де і більше). Цю flag буде запобігти curl від outputting that and return error 22.
Якщо ця опція використовується twice, вдруге буде позбавлятись безглуздої невдачі. --ftp-account (FTP) When an FTP server asks for "account data" після user name і password буде been provided, this data is sent off using the ACCT command. (Added in 7.13.0)
Якщо ця опція використовується twice, другий буде заздалегідь використати. --ftp-create-dirs (FTP) Якщо у FTP URL/operation використовується шлях, що не існує поточно на сервері, стандартний рух curl is to fail. .
Якщо ця опція використовується twice, вдруге буде запобігти розробці directory створення. --ftp-method (FTP) Перевірка того, що метод curl повинен використовуватися для отримання файлу на FTP(S) server. Метод argument може бути одним з наступних альтернатив: multicwd curl does a single CWD operation for each path part in the given URL. Для глибоких hierarchies this means very many commands. Це is how RFC1738 says it should be done. Це є default but the slowest behavior. nocwd curl does no CWD at all. curl will do SIZE, RETR, STOR і т.д. server for all these commands. Це є чудовий behavior. Singlecwd curl does один CWD з повним target directory і функціонують на файлі "normally" (відповідно в multicwd case). Це єщось більше стандартів, що складають, що "nocwd", але без повної penalty "multicwd". --ftp-pasv (FTP) За допомогою PASV при перехіді. PASV є внутрішньою деталізацією behavior, але за допомогою цієї опції може бути використана для попередньої --ftp-port option. (Added in 7.11.0)
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються.
Ftp-alternative-to-user
Ця опція не впливає на те, що PORT, EPRT або EPSV використовується використовуваний PASV.
Якщо ця опція використовується twice, вдруге буде використовувати сервер "s suggested address. t support SSL/TLS. (Added in 7.11.0)
Якщо ця option is used twice, the second will again disable this. --ftp-ssl-reqd (FTP) Require SSL/TLS для підключення до FTP. Terminates the connection if the server doesn"t support SSL/TLS. (Added in 7.15.5)
Якщо ця option is used twice, the second will again disable this. -F/--form
Наприклад, для того, щоб прослухати свій файл файлу до сервера, де "password" є name of the form-field для того, щоб /etc/passwd will be the input:
Для читання файлу "з вмістом від stdin включено файл, використовуйте - де файл файлу повинен бути". Це goes for both @ and< constructs.
Ви можете також скористатися те, що Content-Type використовуватиметься "type=", в manner similar to:
curl-F " [email protected];type=text/html" url.com
curl-F "name=daniel;type=text/foo" url.com
Ви можете також explicitly change name field of file upload part by setting filename=, як це:
curl-F "file=@localfile;filename=nameinpost" url.com
Натисніть на кілька examples and details в MANUAL.
Це може бути використане багато разів. --form-string
Якщо він встановлюється в комбінації з -I, POST data буде введено, щоб бути прийнятим до URL з HEAD request.
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються. -h/--help Usage help. -H/--header
curl will make sure that each header you add/replace get sent with proper end of line marker, you should thus not add that as apart of the header content: do not add newlines або carriage returns they will only mess things up for you.
See also the -A/--user-agent and -e/--referer options.
Ця опція може бути використана кілька разів до add/replace/remove multiple headers. --ignore-content-length (HTTP) Ignore the Content-Length header. Це особливе використання для серверів, що беруть участь в Apache 1.x, які будуть повідомити неправильно Контент-Length для файлів велику, ніж 2 gigabytes. -i/--include (HTTP) Включає HTTP-header в output. HTTP-header включає things як server-name, date of the document, HTTP-version and more...
Якщо ця опція використовується twice, вдруге буде заблоковано клавіатуру. --interface
Якщо ця option is used several times, the last one will be used. -I/--head (HTTP/FTP/FILE) Fetch the HTTP-header тільки! HTTP-сервери позначають клавішу HEAD ,яка ця функція використовується, але не потрібна функція документа. Якщо він використовувався на FTP або FILE файлі, curl відтворюють файл файлу і останній термін зміни тільки.
Якщо ця option is used twice, the second will again disable header only. -j/--junk-session-cookies (HTTP) Коли curl є для read cookies з given file, ця опція буде робити це записувати всі "session cookies". Це буде basically have same effect as if a new session is started. Typical browsers always discard session cookies коли they"re closed down.
Якщо ця функція використовує кілька разів, всі випадки буде скинути це на/поза. -k/--insecure (SSL) Цей параметр explicitly allows curl to perform "insecure" SSL connections and transfers. Всі SSL зв'язки будуть встановлені для збереження безпеки, використовуючи CA certificate bundle, налаштовану за помилкою. Це дає змогу всі зв'язки, що розглядаються як "невідповідність" до неузгодженості -k/--insecure is used.
Якщо ця опція використовується twice, в секунду буде заборонено. --key
Якщо ця option is used several times, the last one will be used. --key-type
Якщо ця option is used several times, the last one will be used. --krb4
Ця опція вимагає, що library була побудована з kerberos4 support. Це не дуже спільний. Use -V/--versionщоб скористатися ним.
Якщо ця option is used several times, the last one will be used. -K/--config
Specify filename як "-" для отримання curl read the file from stdin.
Зверніть увагу на те, що це можливо для URL в config file, ви повинні specify it using the --url option, and not simply writing the URL on its own line. So, it could look similar to this:
Це може бути використане багато разів.
When curl is invoked, it always (unless -q is used) checks for default config file and uses it if found. Більше config file checked for in following places in this order:
1) curl tries to find the "home dir": Це перші перевірки для CURL_HOME і then HOME environmentálnі variables. Failing that, it uses getpwuid() on unix-like systems (яких відновлюють домашню мову, щоб дати поточного користувача в вашій системі). У Windows, це checks for APPDATA variable, or as last resort the "%USERPROFILE%Application Data".
2) На windows, якщо немає файлу файлу _curlrc в домашній dir, його перевірки для одного в тому ж значенні executable curl is placed. On unix-like systems, it will simply try to load .curlrc від визначеного home dir. --limit-rate
Given speed is measured in bytes/second, unless a suffix is appended. Використовуючи "k" або "K", буде число в кілоbytes, "m" або M", що його megabytes, коли "g" або "G", що gigabytes.Examples: 200K, 3m і 1G.
If you are also using the -Y/--speed-limit option, що option буде приймати послідовність і мій нестерпний швидкий-лімітування легше, щоб допомогти керувати швидким обмеженням логічного працюючого.
Якщо ця option is used several times, the last one will be used. -l/--list-only (FTP) Якщо ви натискаєте на FTP directory, це перемикання зв'язку, а також лише один вид. Особливо корисні, якщо ви хочете, щоб компоненти для вмісту FTP-директорів не виключали з використанням стандартного перегляду directory, використовуючи стандартний перегляд або формат.
Ця опція припускає FTP NLST command to be sent. Деякі FTP-сервери містять лише файли в їх відповіді до NLST; вони не включають subdirectories and symbolic links.
Якщо ця опція використовується twice, вдруге буде заборонено розмістити лист тільки. --local-port
Якщо ця опція використовується twice, вдруге буде заборонено розміщення. --location-trusted (HTTP/HTTPS) Як -L/--location, але буде дозволити, щоб повідомити назву + password до всіх hosts, що на сайті можна redirect to. Це не може або не може бути введено в безпечний бік, якщо веб-ресурси ви знайдете на якому ви знайдете будь-яку authentication info (який є plaintext в випадку HTTP Basic authentication).
Якщо ця опція використовується twice, вдруге буде заборонено розміщення. --max-filesize
NOTE: File size is not always known prior to download, and for such files this option no effect even if the file transfer ends up being larger thhan this given limit. Це сполучення між FTP і HTTP transfers. -m/--max-time
Якщо ця option is used several times, the last one will be used. -M/--manual Manual. Display the huge help text. -n/--netrc Makes curl scan the .netrc file in the user"s home directory for login name and password. This is typically used for ftp on unix. If used with http, curl will enable user authentication. (4) or (1) for details на файлі формату. Curl will not complain if that file hasn"t the right permissions (it should not be world nor group readable). Environment variable "HOME" is used to find the home directory.
Quick and very simple example of how to setup a .netrcнатиснути на curl до ftp до машини host.domain.com з user name "myself" і password "secret" should look similar to:
machine host.domain.com login myself password secret
Якщо ця опція використовується twice, вдруге буде заблоковано netrc usage. --netrc-optional Very similar to --netrc, but this option makes the .netrc usage optional and not mandatory as the --netrc does. --negotiate (HTTP) Enables GSS-Negotiate authentication. GSS-Negotiate method був розроблений Microsoft і використовується в їх веб-застосунках. Це є першорядним способом як підтримка для Kerberos5 authentication but may be also used along with another authentication methods. Більше інформації IETF draft draft-brezak-spnego-http-04.txt.
Ця опція вимагає, що library була побудована з GSSAPI support. Це не дуже спільний. Use -V/--versionВи можете скористатися GSS-Negotiate.
Якщо Ви використовуєте цю функцію, Ви повинні також надати fake -u/--user option для активації authentication code properly. Посилання на "-u:" є добрим як user name і password від -u option aren"t використовується.
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються. -N/--no-buffer Disable buffering of output stream. У звичайних робочих місцях, curl буде використовувати стандартний буфферований output stream, що буде мати ефект, що він буде output the data in chunks, не необхідно exactly when the data arrives. За допомогою цієї опції буде відхилено, що buffering.
Якщо ця опція використовується twice, вдруге буде перемикатися на buffering. --ntlm (HTTP) Enables NTLM authentication. NTLM authentication method був designed by Microsoft і is used by IIS web servers. Він є власним протоколом, перетвореним на людину за допомогою людей і впроваджується в curl заснований на своїх ефектах. Цей вид behavior не повинен бути об'єднаний, ви повинні набрати кожну, яка використовує NTLM для перемикання на громадську і спрямовану authentication метод instead. Such as Digest.
Якщо ви намагаєтеся надати NTLM для вашого authentication proxy, буде використовувати --proxy-ntlm.
Ця опція вимагає, що library була побудована з SSL support. Use -V/--versionВи можете скористатися функцією NTLM.
Якщо ця функція використовує кілька разів, наступні випадки не відрізняються. -o/--output
Ви можете використовувати цей варіант як багато разів як ви маєте номер URL.
See also the --create-dirs option to create the local directories динамічно. -O/--remote-name Write output до локального файлу називається remote file we get. (Тільки в файлі частина remote file використовується, cestа cut off.)
remote file name to use for saving is extracted from the given URL, nothing else.
Ви можете використовувати цей варіант як багато разів як ви маєте номер URL. --pass
Якщо ця option is used several times, the last one will be used. --proxy-anyauth Tells curl to pick a suitable authentication метод коли комунікація з given proxy. Це буде спричинено додатковим запитом/response round-trip. (Added in 7.13.2)
Якщо ця опція використовується twice, вдруге буде заборонено проксі use-any authentication. --proxy-basic Tells curl для використання HTTP Basic authentication when communicating with the given proxy. Use --basic for enabling HTTP Basic with a remote host. Основним є дефектні норми методу curl використання з proxies.
Якщо ця опція використовується twice, вдруге буде заблоковано HTTP Basic authentication. --proxy-digest Tells curl до використання HTTP Digest authentication when communicating with the given proxy. Use --digest for enabling HTTP Digest with a remote host.
Якщо ця опція використовується twice, вдруге буде заблоковано HTTP Digest. --proxy-ntlm Tells curl use HTTP NTLM authentication when communicating with the given proxy. Use --ntlm for enabling NTLM with remote host.
Якщо ця опція використовується twice, вдруге буде запобігти disable proxy HTTP NTLM. -p/--proxytunnel When an HTTP proxy is used ( -x/--proxy), ця опція буде викликати не-HTTP-протоколи до переходу до тюнінгу через proxy instead of merely using it to HTTP-like operations. Пристрій approach є зроблений з HTTP proxy CONNECT request and requires that proxy дозволить direct connect to remote port number curl wants to tunnel through to.
Якщо ця опція використовується twice, вдруге буде позбавитися від неактивного proxy tunnel. -P/--ftp-port
(FTP) Reverses the initiator/listener roles when connecting with ftp. Це перемикання керує використанням PORT Command instead of PASV. У практиці, PORT натисне на сервер для з'єднання з клієнтом", конкретні адреси та port, при якому PASV вибирає сервер для ip-адреси і port для з'єднання. Ви повинні бути одним з: i.e "eth0" на особливість, яке встановлює IP-адресу, яку Ви можете використовувати (Unix only) IP-адреса i.e "192.168.10.1" на specify exact IP number host name i.e "my.host.domain" to specify machine - make curl pick the same IP address that is already used for the control connectionЯкщо ця option is used several times, the last one will be used. Disable the use of PORT with --ftp-pasv. Застосовувати attempt to use the EPRT command instead of PORT by using --disable-eprt. EPRT є дійсно PORT++. -q If used as the first parameter on the command line, the curlrc config file will not be read and used. See the -K/--configдля докладних відомостей про те, що config file search path default. -Q/--quote
Це може бути використане багато разів. --random-file
(*) = NOTE, що це буде викликати сервер до reply with multipart response!
Ви повинні також усвідомити, що багато HTTP/1.1 servers не можуть мати цей характер, якщо ви будете вірити, щоб отримати рівне, ви збираєтеся отримати весь документ.
FTP range downloads тільки підтримує simple syntax "start-stop" (optionally with one of the numbers omitted). Це залежить від non-RFC command SIZE.
Якщо ця option is used several times, the last one will be used. -R/--remote-time Якщо ви використовуєте, це буде зробити libcurl примітка до пункту від часу мітки з remote file, і якщо це можливе виконання локального файлу get that same timestamp.
Якщо ця опція використовується twice, в 2-х time disables this again. --retry
Коли curl is about retry a transfer, it will first wait one second and then for all forthcoming retries it will double the waiting time until it reaches 10 minutes which then will be the delay between the rest of the retries. By using --retry-delayви можете задати цей послідовний backoff algoritm. See also --retry-max-timeдо граничного терміну, що надається, для retries. (Added in 7.12.3)
Якщо ця опція використовується найчастішими моментами, останній випадок вирішується назавжди. --retry-delay
Якщо ця опція використовується найчастішими моментами, останній випадок вирішується назавжди. --retry-max-time
Якщо ця опція використовується найчастішими моментами, останній випадок вирішується назавжди. -s/--silent Silent mode. Don't show progress meter or error messages. Makes Curl mute.
Якщо ця функція використовується двадцять, вдруге буде заборонено безглуздий режим. -S/--show-error When used with -s it makes curl show error message if it fails.
Якщо ця опція використовується twice, вдруге буде заборонено show show error. --socks4
-x/--proxy
Якщо ця option is used several times, the last one will be used. --socks5
Ця опція overrides any previous use of -x/--proxy, як вони є mutually exclusive.
Якщо ця option is used several times, the last one will be used. (Ця опція була попередньо вірно documented and used as --socks without number appended.) --stderr
Якщо ця option is used several times, the last one will be used. --tcp-nodelay Turn на TCP_NODELAY option. See the (3) man page for details про це рішення. (Added in 7.11.2)
Якщо ця функція використовує кілька разів, всі випадки торкаються цього on/off. -t/--telnet-option
TTYPE=
XDISPLOC=
NEW_ENV= Sets an environment variable. -T/--upload-file
Використовуйте файл name "-" (a single dash) для використання stdin instead of given file.
Ви можете скористатися одним -T для всіх URL на command line. Each -T + URL типи specifies what to upload and to where. curl also supports "globbing" of -T argument, meanning, що ви можете завантажити кілька файлів до однієї URL за допомогою тієї ж URL-адреси globbing style supported in the URL, як це:
FILES
~/.curlrc Default config file, see -K/--config for details.ENVIRONMENT
http_proxyEXIT CODES
Вони існують в різних different error codes і їх відповідних error messages that may appear during bad conditions. При часі цього повідомлення, запису кодів є: 1 Unsupported protocol. Ця будова curl не підтримує цей протокол. 2 Failed to initialize. 3 URL malformat. The syntax був некоректний. 4 URL-адреса malformatted. User-part of URL syntax був некоректним. 5 Couldn't resolve proxy. The given proxy host не може бути resolved. 6 Couldn't resolve host. Given remote host був невідповідний. 7 Використовується для підключення до host. 8 FTP weird server reply. The server sent data curl couldn't parse. 9 FTP access denied. . 10 FTP user/password incorrect. Будь-який один або один був неприйнятий на сервер. 11 FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request. 13 FTP weird PASV reply, Curl couldn"t parse the reply sent to the PASV request. 14 FTP weird 227 format. Curl couldn"t parse the 227-line the server sent. 15 FTP може бути використаний. 16 FTP може бути невід'єднаним. 17 FTP couldn't set binary. Couldn't change transfer method to binary. 18 Partial file. Лише частина файлу була переведена. 19 FTP couldn"t download/access the given file, the RETR (or similar) command failed. 20 FTP write error. The transfer was reported bad by the server. HTTP page no retrieved.The requested url was not found or returned another error with HTTP error code being 400 or above. -f/--fail is used. 23 Write error. Curl couldn't write data to local filesystem or similar. 24 Malformed user. Server позбавляє STOR operation, використовуваного для FTP uploading. 26 Read error. Різні reading проблем. 27 Out of memory. A memory allocation request failed. 28 Operation timeout. Відповідний time-out період був відновлений відповідно до умов. 29 FTP couldn"t set ASCII. The server returned an unknown reply. 30 FTP PORT failed. The PORT command failed. The REST command failed. Цей Command використовується для обміну FTP transfers. 32 FTP може бути використаний SIZE. SIZE command failed. Command is extension to the original FTP spec RFC 959. 33 HTTP range error. The range "command" didn"t work. 34 HTTP post error. Internal post-request generation error. 35 SSL connect error. The SSL handshaking failed. 36 FTP bad download resume. Couldn't continue an earlier aborted download. 37 FILE couldn't read file. Помітно, щоб відкрити файл. Permissions? 38 LDAP не може бути. LDAP bind operation failed. 39 LDAP search failed. 40 Library not found. The LDAP library був невідомий. 41 Function not found. A функція LDAP не була заснована. 42 Aborted by callback. An application told curl до abort the operation. 43 Internal error. A функція була названа з поганим параметром. 44 Internal error. A функція була названа в поганому порядку. 45 Interface error. A specified outgoing interface could not be used. 46 Bad password entered. An error був signaled when the password був введений. 47 Too many redirects. Коли випливають реdirects, curl hit the maximum amount. 48 Unknown TELNET option specified. 49 Malformed telnet option. 51 Слухатиме SSL certificate wasn"t ok 52 The server didn"t reply anything, which here is considered error. 53 SSL crypto engine not found 54 Cannot set SSL crypto engine as default 55 отримання мережі data 57 Share is in use (internal error) 58 Проблема з локальним з'єднанням 59 Процедура використання спеціального SSL cipher 60 Problem with the CA cert (Path? Permission?) 61 Unrecognized transfer encoding 62 Invalid LDAP URL 63 exceeded 64 Requested FTP SSL рівень помилок 65 Попередження про те, що вимагається, що помилка 66 Захищена до процесу SSL Engine 67 На дисковому просторі на TFTP-сервері 71 Ilegal TFTP operation 72 Unknown TFTP transfer ID 73 File already exists (TFTP) 74 No such user (TFTP) 75 Character conversion failed 76 Character conversion functions required . Существующие ones є meant to never change.Пропонуємо до вашої уваги новий курс від команди The Codeby- "Тестування Веб-Додатків на проникнення з нуля". Загальна теорія, підготовка робочого оточення, пасивний фазинг та фінгерпринт, Активний фазинг, Вразливості, Пост-експлуатація, Інструментальні засоби, Social Engeneering та багато іншого.
Джерело:
cURL — це пакет програмного забезпечення, що складається з утиліти командного рядка та бібліотеки для передачі даних із використанням синтаксису URL.
cURL підтримує безліч протоколів, серед них DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet та TFTP.
Завантажити окремий файл
Наступна команда отримає вміст URL і відобразить його у стандартному виведенні (тобто у терміналі).
Curl https://mi-al.ru/ > mi-al.htm 100 14378 0 14378 0 0 5387 0 --:--:- - 0:00:02 --:--:-- 5387
Збереження виводу cURL у файл
- -o(o нижнього регістру) результат буде збережено у файлі, заданому в командному рядку
- -O(O верхній регістр) ім'я файлу буде взято з URL і буде використано для збереження отриманих даних.
Тепер буде збережено сторінку gettext.html у файлі під назвою 'mygettext.html'. Коли curl запущена з опцією -o вона відображає шкалу прогресу завантаження наступним чином.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 0 74 0 0:00:31 0:00:31 --:--:-- 68987
Коли ви використовуєте curl -O (O верхнього регістра), вона сама по собі збереже вміст у файл під назвою gettext.html на локальній машині.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Примітка: Коли curl повинна писати дані в термінал, вона відключає шкалу прогресу, щоб не було плутанини в надрукованих даних. Ми можемо використовувати '>'|'-o'|'-O' опції для передачі результатів у файл.
Вибірка декількох файлів одночасно
Ми можемо завантажити кілька файлів за один раз, задавши всі URL у командному рядку.
Curl -O URL1 -O URL2
Команда нижче завантажить обидва index.html і gettext.html і збереже їх з тими самими іменами в поточній директорії.
Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Будь ласка, зверніть увагу, коли ми завантажуємо кілька файлів з одного сервера, як показано вище, curl спробує повторно використовувати з'єднання.
Слідуємо за HTTP Location у заголовках з опцією -L
За замовчуванням, CURL не слідує за HTTP Location у заголовках (редиректи). Коли запитана веб-сторінка переміщена в інше місце, відповідна відповідь буде передана в заголовках HTTP Location.
Наприклад, коли хтось друкує google.com у рядку браузера зі своєї країни, вони автоматично будуть перенаправлені на google.co.xx. Це робиться на основі заголовка HTTP Location як показано нижче.
Curl https://www.google.com/?gws_rd=ssl
302 Moved
The document has moved here.Наведений вище висновок каже, що запитуваний документ було переміщено до 'http://www.google.co.th/'.
Ви можете вказати curl слідувати редиректам, це робиться за допомогою опції -L як показано нижче. Тепер буде завантажено вихідний код html із https://www.google.co.th/?gws_rd=ssl.
Curl -L https://www.google.com/?gws_rd=ssl
Продовження/Відновлення попереднього закачування
Використовуючи опцію -C ви можете продовжити завантаження, яке було зупинено з будь-яких причин. Це буде корисним при обриві великих файлів.
Якщо ми говоримо '-C -', curl буде шукати, з якого місця відновити завантаження. Ми також можемо поставити '-C<смещение>'. Задане усунення байт буде пропущено з початку вихідного файла.
Почніть велике завантаження з curl і натисніть Ctrl-C для зупинки посеред завантаження.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1%
Закачування було зупинено на 20.1%. Використовуючи “curl -C -” ми можемо продовжити завантаження з місця, де ми зупинилися. Тепер завантаження продовжиться з 20.1%.
Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%
Обмеження швидкості передачі даних
Ви можете обмежити величину швидкості передачі опцією -limit-rate. Ви можете передати максимальну швидкість як аргумент.
$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Команда вище обмежить швидкість передачі на 1000 байт/секунду. curl може використовувати швидкість вище на піках. Але середня швидкість буде приблизно 1000 байт/секунду.
Нижче показано індикатор прогресу для представленої команди. Ви можете бачити, що поточна швидкість близько 1000 байт.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 10 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999
Завантажити файл тільки якщо він змінений до/після заданого часу
Ви можете отримати файли, які були змінені після певного часу за допомогою опції -z в curl. Це буде працювати і для FTP, і для HTTP.
$ curl -z 20-Aug-14Команда вище завантажить yy.html тільки якщо він змінювався пізніше, ніж задана дата і час.
Команда вище завантажить файл file.html, якщо він змінювався до заданої дати та часу.
Наберіть 'man curl_getdate', щоб дізнатися більше про різні підтримувані синтаксиси для виразів дати.
Проходження аутентифікації HTTP у cURL
Іноді веб-сайти потребують ім'я користувача та пароль для перегляду вмісту. За допомогою опції -u можна передати ці облікові дані з cURL на веб-сервер як показано нижче.
$curl -u username:password URL
Примітка: За промовчанням curl використовує базову HTTP автентифікацію. Ми можемо задати інші методи аутентифікації за допомогою -ntlm | -digest.
Завантаження файлів з сервера FTP
cURL також може використовуватися для завантаження файлів з FTP серверів. Якщо заданий FTP шлях є директорією, за промовчанням буде виведено список файлів у ній.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
Команда вище завантажить файл xss.php з ftp-сервера та збереже його у локальній директорії.
$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
Тут URL надсилає до директорії. Отже, cURL зробить список файлів та директорій за заданою URL-адресою.
Список/Завантаження за допомогою діапазонів.
CURL підтримує діапазони, задані в URL. Коли даний діапазон буде завантажено відповідні файли всередині цього діапазону. Це буде корисним при завантаженні пакетів із сайтів FTP дзеркал.
$ curl ftp://ftp.uk.debian.org/debian/pool/main//
Команда вище зробить список усіх пакетів у діапазоні a-z у терміналі.
Вивантаження файлів на FTP-сервер
Curl також може використовуватися для вивантаження на сервер FTP з опцією -T.
$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
Команда вище завантажить файл з ім'ям myfile.txt на FTP-сервер. Ви можете також вивантажити кілька файлів за один раз, використовуючи діапазони.
$ curl -u ftpuser:ftppass -T "(file1, file2)" ftp://ftp.testserver.com
Опціонально ми можемо використовувати “.” для отримання зі стандартного введення та передачі його на віддалену машину.
$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Команда вище отримає висновок від користувача зі стандартного введення та збереже вміст на ftp-сервері під ім'ям myfile_1.txt.
Ви можете задати '-T' для кожного URL, і кожна пара адрес-файл визначатиме, що куди вивантажувати
Більше інформації зі збільшенням вербальності та опцією трасування
Ви можете дізнатися, що відбувається, використовуючи опцію -v. Опція -v включає вербальний режим і друкуватиме подробиці.
Curl -v https://www.google.co.th/?gws_rd=ssl
Команда вище виведе наступне
* Rebuilt URL to: https://www.google.co.th/?gws_rd=ssl * Hostname was NOT found in DNS cache * Trying 27.123.17.49... * Connected to www.google.co.th (27.123. 17.49) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.38.0 > Host: www.google.co.th > Accept: */* >< HTTP/1.1 200 OK < Date: Fri, 14 Aug 2015 23:07:20 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=windows-874 < P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." * Server gws is not blacklisted < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1439593640:LM=1439593640:V=1:S=FfuoPPpKbyzTdJ6T; expires=Sun, 13-Aug-2017 23:07:20 GMT; path=/; domain=.google.co.th ... ... ...
Якщо вам потрібно більше детальної інформації, то ви можете використовувати опцію -trace. Опція -trace увімкне повний дамп трасування всіх вхідних/вихідних даних для заданого файлу
=> Send header, 169 bytes (0xa9) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 55 76 76 20 63 75 72 6c User-Agent: curl .. 0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1. 0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6 0080: 0d 0a 48 6f 73 74 3a 7 7 .Host: www.goog 0090 : 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.xx..Accept 00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a: */. , assume close after body<= Recv header, 17 bytes (0x11) 0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK. 0010: 0a
Опції збільшення вербальності та трасування стануть у нагоді, коли curl зазнає невдачі з якихось причин і ми не знаємо чому.
Отримуємо визначення слова та його переклад із використанням протоколу DICT
Переглянути список доступних словників можна так:
Curl dict://dict.org/show:db
Отримати переклад слова з англійської на російську можна так:
Curl dict://dict.org/d:girl:fd-eng-ukr 220 pan.alephnull.com dictd 1.12.1/rf on Linux 3.14-1-amd64
Більше інформації по DICT можна знайти прочитавши RFC2229.
Використання проксі для завантаження файлу
Ми можемо вказати cURL використовувати проксі для певних операцій, що робиться опцією -x. Нам потрібно задати хост та порт проксі.
$ curl -x proxysever.test.com:3128 https://www.google.co.in/?gws_rd=ssl
Надсилання електронної пошти з використанням протоколу SMTP у curl
cURL також може бути використана для надсилання електронної пошти через протокол SMTP. Вам потрібно вказати адресу від когось, адресу кому та IP адресу поштового сервера як показано нижче.
$ curl --mail-from [email protected]--mail-rcpt [email protected] smtp://mailserver.com
Коли команда буде введена, почнеться очікування на введення користувачем даних для листа. Коли ви закінчите набирати повідомлення, надрукуйте. (точку) як останній рядок, і лист буде негайно надіслано.
Subject: Testing Це є електронною поштою .
Гарант є довіреним посередником між Учасниками під час угоди.
Пропонуємо до вашої уваги новий курс від команди The Codeby- "Тестування Веб-Додатків на проникнення з нуля". Загальна теорія, підготовка робочого оточення, пасивний фазинг та фінгерпринт, Активний фазинг, Вразливості, Пост-експлуатація, Інструментальні засоби, Social Engeneering та багато іншого.
Навіщо потрібна cURL
- cURL чудово підходить для імітації дій користувача у браузері.
Реальний практичний приклад: потрібно перезавантажити роутер (модем) для зміни IP адреси. Для цього потрібно: авторизуватись у роутері, перейти до сторінки обслуговування та натиснути кнопку «Перезавантаження». Якщо цю дію потрібно виконати кілька разів, процедуру потрібно повторити. Погодьтеся, робити щоразу вручну цю рутину не хочеться. cURL дозволяє все це автоматизувати. Буквально кількома командами cURL можна досягти авторизації та виконання завдання на роутері.
- cURL зручний для отримання даних із веб-сайтів у командному рядку.
Ще один приклад: ми хочемо реалізувати показ загальної статистики для декількох сайтів. Якщо використовувати cURL, то це стає цілком тривіальним завданням: за допомогою cURL ми проходимо автентифікацію на сервісі збору статистики (якщо це потрібно), потім (знову ж таки командами cURL) отримуємо необхідні сторінки, що парсують потрібні нам дані; процедура повторюється всім наших сайтів, потім ми складаємо і виводимо кінцевий результат.
Тобто. випадки використання cURL цілком реальні, хоча в більшості cURL потрібна програмістам, які використовують її для своїх програм.
cURL підтримує безліч протоколів і способів авторизації, вміє передавати файли, правильно працює з кукіз, підтримує SSL сертифікати, проксі та багато іншого.
cURL у PHP та командному рядку
Ми можемо використовувати cURL двома основними способами: у скриптах PHP та у командному рядку.
Щоб увімкнути cURL у PHP на сервері, необхідно у файлі php.ini розкоментувати рядок
Extension=php_curl.dll
А потім перезавантажити сервер.
На Linux потрібно встановити пакет curl.
На Debian, Ubuntu або Linux Mint:
$ sudo apt-get install curl
На Fedora, CentOS або RHEL:
$ sudo yum install curl
Щоб наочно було видно різницю у використанні в PHP та в командному рядку, будемо одні й ті самі завдання виконувати двічі: спочатку у скрипті PHP, а потім у командному рядку. Постараємось при цьому не заплутатися.
Отримання даних за допомогою cURL
Отримання даних за допомогою cURL у PHP
Приклад на PHP:
Все дуже просто:
$target_url- адреса сайту, який нас цікавить. Після адреси сайту можна поставити двокрапку і додати адресу порту (якщо порт відрізняється від стандартного).
curl_init— ініціалізує новий сеанс та повертає дискриптор, який у нашому прикладі присвоюється змінною $ch.
Потім ми виконуємо запит функцією cURL curl_exec, якою як параметр передається дискриптор.
Все дуже логічно, але при виконанні цього скрипту на нашій сторінці відобразиться вміст сайту. А якщо ми не хочемо відображати вміст, а хочемо записати його в змінну (для подальшої обробки або парсингу).
Трохи доповнимо наш скрипт:
0) ( echo "Помилка curl: " . curl_error($ch); ) curl_close($ch); ?>
У нас з'явився рядок curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.
curl_setopt- Задає опції. Повний список опцій можна знайти на цій сторінці: http://php.net/manual/ru/function.curl-setopt.php
$response_data = curl_exec($ch);
Тепер значення скрипта надається змінною $response_data, з якою можна проводити подальші операції. Наприклад, можна вивести її.
If (curl_errno($ch) > 0) ( echo "Помилка curl: " . curl_error($ch); )
служать для налагодження, у разі виникнення помилок.
Отримання даних за допомогою cURL у командному рядку
У командному рядку достатньо набрати
Curl mi-al.ru
де замість mi-al.ru- Адреса Вашого сайту.
Якщо потрібно скопіювати дані до змінної, а не виводити отриманий результат на екран, то робимо так:
Temp=`curl mi-al.ru`
При цьому все одно виводяться деякі дані:
Щоб вони не виводилися, додаємо ключ -s:
Temp=`curl -s mi-al.ru`
Можна подивитися, що записалось:
Echo $ temp | less
Базова аутентифікація та аутентифікація HTTP
Аутентифікація, простіше кажучи, це введення імені користувача та пароля.
Базова автентифікація – це автентифікація засобами сервера. Для цього створюються два файли: .htaccessі .htpasswd
Вміст файлу.htaccess приблизно такий
AuthName "Тільки для зареєстрованих користувачів!" AuthType Basic require valid-user AuthUserFile /home/freeforum.biz/htdocs/.htpassw
Вміст файлу.htpasswd приблизно такий:
Mial:CRdiI.ZrZQRRc
Тобто. логін та хеш пароля.
При спробі отримати доступ до запароленої папки, у браузері з'явиться приблизно таке вікно:
HTTP автентифікація - це той випадок, коли ми вводимо логін та пароль у форму на сайті. Саме така автентифікація використовується при вході в пошту, форуми і т.д.
Базова автентифікація cURL (PHP)
Є сайт http://62.113.208.29/Update_FED_DAYS/, який вимагає від нас авторизуватися:
Пробуємо наш початковий скрипт:
0) ( echo "Помилка curl: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>
Хоча скрипт і вважає, що помилки немає, але результат, що виводиться, нам зовсім не подобається:
Додаємо два рядки:
Curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board: ru-board");
Першим рядком ми задаємо тип аутентифікації – базова. Другий рядок містить ім'я та пароль через двокрапку (у нашому випадку ім'я та пароль однакові – ru-board). Вийшло так:
0) ( echo "Помилка curl: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>
Базова автентифікація cURL (у командному рядку)
Цього ж самого в командному рядку можна досягти одного рядка:
Curl-u ru-board: ru-board http://62.113.208.29/Update_FED_DAYS/
Я не забув вказати тип аутентифікації, просто в cURL базовий тип аутентифікації дефолтний.
У командному рядку все вийшло так швидко, що від розладу я написав таку програму. Вона підключається до сайту та завантажує останнє оновлення:
http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Update_FED_201(1).(2).(2).7z" | uniq | tail -n 1`; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp
Буквально ще кількома командами можна додати:
- розпакування архіву у вказаний каталог;
- запуск оновлень КонсультантПлюс (це оновлення для нього);
- можна реалізувати перевірку — було завантажено останнє доступне оновлення або з'явилося нове;
- додати це все в Cron для щоденних оновлень.
HTTP автентифікація cURL
HTTP автентифікація cURL у PHP
Нам треба знати:
- адресу, куди надсилати дані для автентифікації
- метод відправки GET чи POST
- логін
- пароль
Іноді цих даних виявляється недостатньо. Давайте розберемося.
Адресу, куди потрібно надіслати дані, можна взяти з форми автентифікації. Наприклад: