How to curl with a proxy

Linux use curl command with proxy

First set the http_proxy:


## proxy server, 202.54.1.1, port: 3128, user: foo, password: bar ##
export http_proxy=http://foo:bar@202.54.1.1:3128
export https_proxy=$http_proxy
## Use the curl command ##
curl -I https://www.cyberciti.biz
curl -v -I https://www.cyberciti.biz

Sample outputs:

* Rebuilt URL to: www.cyberciti.biz/
*   Trying 202.54.1.1...
* Connected to 1202.54.1.1 (202.54.1.1) port 3128 (#)
* Proxy auth using Basic with user 'foo'
> HEAD HTTP://www.cyberciti.biz/ HTTP/1.1
> Host: www.cyberciti.biz
> Proxy-Authorization: Basic x9VuUml2xm0vdg93MtIz
> User-Agent: curl/7.43.0
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Server: nginx
Server: nginx
< Date: Sun, 17 Jan 2016 11:49:21 GMT
Date: Sun, 17 Jan 2016 11:49:21 GMT
< Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=UTF-8
< Vary: Accept-Encoding
Vary: Accept-Encoding
< X-Whom: Dyno-l1-com-cyber
X-Whom: Dyno-l1-com-cyber
< Vary: Cookie
Vary: Cookie
< Link: <http://www.cyberciti.biz/wp-json/>; rel="https://api.w.org/"
Link: <http://www.cyberciti.biz/wp-json/>; rel="https://api.w.org/"
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; mode=block
< X-Cache: MISS from server1
X-Cache: MISS from server1
< X-Cache-Lookup: MISS from server1:3128
X-Cache-Lookup: MISS from server1:3128
< Connection: keep-alive
Connection: keep-alive
 
< 
* Connection # to host 10.12.249.194 left intact

In this example, I’m downloading a pdf file: OR use the -x option: Sample outputs: Fig.01: curl in action (click to enlarge)

CONNECTION OPTIONS

CURLOPT_TIMEOUT

Timeout for the entire request. See CURLOPT_TIMEOUT

CURLOPT_TIMEOUT_MS

Millisecond timeout for the entire request. See CURLOPT_TIMEOUT_MS

CURLOPT_LOW_SPEED_LIMIT

Low speed limit to abort transfer. See CURLOPT_LOW_SPEED_LIMIT

CURLOPT_LOW_SPEED_TIME

Time to be below the speed to trigger low speed abort. See CURLOPT_LOW_SPEED_TIME

CURLOPT_MAX_SEND_SPEED_LARGE

Cap the upload speed to this. See CURLOPT_MAX_SEND_SPEED_LARGE

CURLOPT_MAX_RECV_SPEED_LARGE

Cap the download speed to this. See CURLOPT_MAX_RECV_SPEED_LARGE

CURLOPT_MAXCONNECTS

Maximum number of connections in the connection pool. See CURLOPT_MAXCONNECTS

CURLOPT_FRESH_CONNECT

Use a new connection. CURLOPT_FRESH_CONNECT

CURLOPT_FORBID_REUSE

Prevent subsequent connections from re-using this. See CURLOPT_FORBID_REUSE

CURLOPT_MAXAGE_CONN

Limit the age of connections for reuse. See CURLOPT_MAXAGE_CONN

CURLOPT_CONNECTTIMEOUT

Timeout for the connection phase. See CURLOPT_CONNECTTIMEOUT

CURLOPT_CONNECTTIMEOUT_MS

Millisecond timeout for the connection phase. See CURLOPT_CONNECTTIMEOUT_MS

CURLOPT_IPRESOLVE

IP version to resolve to. See CURLOPT_IPRESOLVE

CURLOPT_CONNECT_ONLY

Only connect, nothing else. See CURLOPT_CONNECT_ONLY

CURLOPT_USE_SSL

Use TLS/SSL. See CURLOPT_USE_SSL

CURLOPT_RESOLVE

Provide fixed/fake name resolves. See CURLOPT_RESOLVE

CURLOPT_DNS_INTERFACE

Bind name resolves to this interface. See CURLOPT_DNS_INTERFACE

CURLOPT_DNS_LOCAL_IP4

Bind name resolves to this IP4 address. See CURLOPT_DNS_LOCAL_IP4

CURLOPT_DNS_LOCAL_IP6

Bind name resolves to this IP6 address. See CURLOPT_DNS_LOCAL_IP6

CURLOPT_DNS_SERVERS

Preferred DNS servers. See CURLOPT_DNS_SERVERS

CURLOPT_DNS_SHUFFLE_ADDRESSES

Shuffle addresses before use. See CURLOPT_DNS_SHUFFLE_ADDRESSES

CURLOPT_ACCEPTTIMEOUT_MS

Timeout for waiting for the server’s connect back to be accepted. See CURLOPT_ACCEPTTIMEOUT_MS

CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS

Timeout for happy eyeballs. See CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS

CURLOPT_UPKEEP_INTERVAL_MS

Sets the interval at which connection upkeep are performed. See CURLOPT_UPKEEP_INTERVAL_MS

DESCRIPTION

curl_easy_setopt is used to tell libcurl how to behave. By setting the appropriate options, the application can change libcurl’s behavior. All options are set with an option followed by a parameter. That parameter can be a long, a function pointer, an object pointer or a curl_off_t, depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly! You can only set one option in each function call. A typical application uses many curl_easy_setopt calls in the setup phase.

Options set with this function call are valid for all forthcoming transfers performed using this handle. The options are not in any way reset between transfers, so if you want subsequent transfers with different options, you must change them between the transfers. You can optionally reset all options back to internal default with curl_easy_reset.

Strings passed to libcurl as ‘char *’ arguments, are copied by the library; thus the string storage associated to the pointer argument may be overwritten after curl_easy_setopt returns. The only exception to this rule is really CURLOPT_POSTFIELDS, but the alternative that copies the string CURLOPT_COPYPOSTFIELDS has some usage characteristics you need to read up on.

The order in which the options are set does not matter.

Before version 7.17.0, strings were not copied. Instead the user was forced keep them available until libcurl no longer needed them.

The handle is the return code from a curl_easy_init or curl_easy_duphandle call.

NETWORK OPTIONS

CURLOPT_URL

URL to work on. See CURLOPT_URL

CURLOPT_PATH_AS_IS

Disable squashing /../ and /./ sequences in the path. See CURLOPT_PATH_AS_IS

CURLOPT_PROTOCOLS

Allowed protocols. See CURLOPT_PROTOCOLS

CURLOPT_REDIR_PROTOCOLS

Protocols to allow redirects to. See CURLOPT_REDIR_PROTOCOLS

CURLOPT_DEFAULT_PROTOCOL

Default protocol. See CURLOPT_DEFAULT_PROTOCOL

CURLOPT_PROXY

Proxy to use. See CURLOPT_PROXY

CURLOPT_PRE_PROXY

Socks proxy to use. See CURLOPT_PRE_PROXY

CURLOPT_PROXYPORT

Proxy port to use. See CURLOPT_PROXYPORT

CURLOPT_PROXYTYPE

Proxy type. See CURLOPT_PROXYTYPE

CURLOPT_NOPROXY

Filter out hosts from proxy use. CURLOPT_NOPROXY

CURLOPT_HTTPPROXYTUNNEL

Tunnel through the HTTP proxy. CURLOPT_HTTPPROXYTUNNEL

CURLOPT_CONNECT_TO

Connect to a specific host and port. See CURLOPT_CONNECT_TO

CURLOPT_SOCKS5_AUTH

Socks5 authentication methods. See CURLOPT_SOCKS5_AUTH

CURLOPT_SOCKS5_GSSAPI_SERVICE

Socks5 GSSAPI service name. CURLOPT_SOCKS5_GSSAPI_SERVICE

CURLOPT_SOCKS5_GSSAPI_NEC

Socks5 GSSAPI NEC mode. See CURLOPT_SOCKS5_GSSAPI_NEC

CURLOPT_PROXY_SERVICE_NAME

Proxy authentication service name. CURLOPT_PROXY_SERVICE_NAME

CURLOPT_HAPROXYPROTOCOL

Send an HAProxy PROXY protocol v1 header. See CURLOPT_HAPROXYPROTOCOL

CURLOPT_SERVICE_NAME

Authentication service name. CURLOPT_SERVICE_NAME

CURLOPT_INTERFACE

Bind connection locally to this. See CURLOPT_INTERFACE

CURLOPT_LOCALPORT

Bind connection locally to this port. See CURLOPT_LOCALPORT

CURLOPT_LOCALPORTRANGE

Bind connection locally to port range. See CURLOPT_LOCALPORTRANGE

CURLOPT_DNS_CACHE_TIMEOUT

Timeout for DNS cache. See CURLOPT_DNS_CACHE_TIMEOUT

CURLOPT_DNS_USE_GLOBAL_CACHE

OBSOLETE Enable global DNS cache. See CURLOPT_DNS_USE_GLOBAL_CACHE

CURLOPT_DOH_URL

Use this DOH server for name resolves. See CURLOPT_DOH_URL

CURLOPT_BUFFERSIZE

Ask for alternate buffer size. See CURLOPT_BUFFERSIZE

CURLOPT_PORT

Port number to connect to. See CURLOPT_PORT

CURLOPT_TCP_FASTOPEN

Enable TFO, TCP Fast Open. See CURLOPT_TCP_FASTOPEN

CURLOPT_TCP_NODELAY

Disable the Nagle algorithm. See CURLOPT_TCP_NODELAY

CURLOPT_ADDRESS_SCOPE

IPv6 scope for local addresses. See CURLOPT_ADDRESS_SCOPE

CURLOPT_TCP_KEEPALIVE

Enable TCP keep-alive. See CURLOPT_TCP_KEEPALIVE

CURLOPT_TCP_KEEPIDLE

Idle time before sending keep-alive. See CURLOPT_TCP_KEEPIDLE

CURLOPT_TCP_KEEPINTVL

Interval between keep-alive probes. See CURLOPT_TCP_KEEPINTVL

CURLOPT_UNIX_SOCKET_PATH

Path to a Unix domain socket. See CURLOPT_UNIX_SOCKET_PATH

CURLOPT_ABSTRACT_UNIX_SOCKET


Path to an abstract Unix domain socket. See CURLOPT_ABSTRACT_UNIX_SOCKET

Cookies with libcurl

libcurl offers several ways to enable and interface the cookie engine. These options are the ones provided by the native API. libcurl bindings may offer access to them using other means.

Is used when you want to specify the exact contents of a cookie header to send to the server.

Tell libcurl to activate the cookie engine, and to read the initial set of cookies from the given file. Read-only.

Tell libcurl to activate the cookie engine, and when the easy handle is closed save all known cookies to the given cookiejar file. Write-only.

Provide detailed information about a single cookie to add to the internal storage of cookies. Pass in the cookie as a HTTP header with all the details set, or pass in a line from a netscape cookie file. This option can also be used to flush the cookies etc.

Extract cookie information from the internal cookie storage as a linked list.

Cookie overview

Cookies are pairs that a HTTP server tells the client to hold and then the client sends back those to the server on subsequent requests to the same domains and paths for which the cookies were set.

Cookies are either «session cookies» which typically are forgotten when the session is over which is often translated to equal when browser quits, or the cookies aren’t session cookies they have expiration dates after which the client will throw them away.

Cookies are set to the client with the Set-Cookie: header and are sent to servers with the Cookie: header.

For a very long time, the only spec explaining how to use cookies was the original Netscape spec from 1994.

In 2011, RFC6265 was finally published and details how cookies work within HTTP. In 2016, an update which added support for prefixes was proposed, and in 2017, another update was drafted to deprecate modification of ‘secure’ cookies from non-secure origins. Both of these drafts have been incorporated into a proposal to replace RFC6265. Cookie prefixes and secure cookie modification protection has been implemented by curl.

NAMES and PASSWORDS OPTIONS (Authentication)

CURLOPT_NETRC

Enable .netrc parsing. See CURLOPT_NETRC

CURLOPT_NETRC_FILE

.netrc file name. See CURLOPT_NETRC_FILE

CURLOPT_USERPWD

User name and password. See CURLOPT_USERPWD

CURLOPT_PROXYUSERPWD

Proxy user name and password. See CURLOPT_PROXYUSERPWD

CURLOPT_USERNAME

User name. See CURLOPT_USERNAME

CURLOPT_PASSWORD

Password. See CURLOPT_PASSWORD

CURLOPT_LOGIN_OPTIONS

Login options. See CURLOPT_LOGIN_OPTIONS

CURLOPT_PROXYUSERNAME

Proxy user name. See CURLOPT_PROXYUSERNAME

CURLOPT_PROXYPASSWORD

Proxy password. See CURLOPT_PROXYPASSWORD

CURLOPT_HTTPAUTH

HTTP server authentication methods. See CURLOPT_HTTPAUTH

CURLOPT_TLSAUTH_USERNAME

TLS authentication user name. See CURLOPT_TLSAUTH_USERNAME

CURLOPT_PROXY_TLSAUTH_USERNAME

Proxy TLS authentication user name. See CURLOPT_PROXY_TLSAUTH_USERNAME

CURLOPT_TLSAUTH_PASSWORD

TLS authentication password. See CURLOPT_TLSAUTH_PASSWORD

CURLOPT_PROXY_TLSAUTH_PASSWORD

Proxy TLS authentication password. See CURLOPT_PROXY_TLSAUTH_PASSWORD

CURLOPT_TLSAUTH_TYPE

TLS authentication methods. See CURLOPT_TLSAUTH_TYPE

CURLOPT_PROXY_TLSAUTH_TYPE

Proxy TLS authentication methods. See CURLOPT_PROXY_TLSAUTH_TYPE

CURLOPT_PROXYAUTH

HTTP proxy authentication methods. See CURLOPT_PROXYAUTH

CURLOPT_SASL_AUTHZID

SASL authorisation identity (identity to act as). See CURLOPT_SASL_AUTHZID

CURLOPT_SASL_IR

Enable SASL initial response. See CURLOPT_SASL_IR

CURLOPT_XOAUTH2_BEARER

OAuth2 bearer token. See CURLOPT_XOAUTH2_BEARER

CURLOPT_DISALLOW_USERNAME_IN_URL

Don’t allow username in URL. See CURLOPT_DISALLOW_USERNAME_IN_URL

SSH OPTIONS

CURLOPT_SSH_AUTH_TYPES

SSH authentication types. See CURLOPT_SSH_AUTH_TYPES

CURLOPT_SSH_COMPRESSION

Enable SSH compression. See CURLOPT_SSH_COMPRESSION

CURLOPT_SSH_HOST_PUBLIC_KEY_MD5

MD5 of host’s public key. See CURLOPT_SSH_HOST_PUBLIC_KEY_MD5

CURLOPT_SSH_PUBLIC_KEYFILE

File name of public key. See CURLOPT_SSH_PUBLIC_KEYFILE

CURLOPT_SSH_PRIVATE_KEYFILE

File name of private key. See CURLOPT_SSH_PRIVATE_KEYFILE

CURLOPT_SSH_KNOWNHOSTS

File name with known hosts. See CURLOPT_SSH_KNOWNHOSTS

CURLOPT_SSH_KEYFUNCTION

Callback for known hosts handling. See CURLOPT_SSH_KEYFUNCTION

CURLOPT_SSH_KEYDATA

Custom pointer to pass to ssh key callback. See CURLOPT_SSH_KEYDATA

Unix and Linux curl command with proxy syntax

The syntax is:

## Set the proxy address of your uni/company/vpn network ## 
export http_proxy=http://your-ip-address:port
 
## http_proxy with username and password 
export http_proxy=http://user:password@your-proxy-ip-address:port
 
## HTTPS version ##
export https_proxy=https://your-ip-address:port
export https_proxy=https://user:password@your-proxy-ip-address:port

Another option is to pass the -x option to the curl command. To use the specified proxy:

curl -x <protocol://user:password@proxyhost:port> url
--proxy <protocol://user:password@proxyhost:port> url
--proxy http://user:password@Your-Ip-Here:Port url
-x http://user:password@Your-Ip-Here:Port url

Cookies saved to disk

Netscape once created a file format for storing cookies on disk so that they would survive browser restarts. curl adopted that file format to allow sharing the cookies with browsers, only to see browsers move away from that format. Modern browsers no longer use it, while curl still does.

The netscape cookie file format stores one cookie per physical line in the file with a bunch of associated meta data, each field separated with TAB. That file is called the cookiejar in curl terminology.

When libcurl saves a cookiejar, it creates a file header of its own in which there is a URL mention that will link to the web version of this document.

SSL and SECURITY OPTIONS

CURLOPT_SSLCERT

Client cert. See CURLOPT_SSLCERT

CURLOPT_SSLCERT_BLOB

Client cert memory buffer. See CURLOPT_SSLCERT_BLOB

CURLOPT_PROXY_SSLCERT

Proxy client cert. See CURLOPT_PROXY_SSLCERT

CURLOPT_PROXY_SSLCERT_BLOB

Proxy client cert memory buffer. See CURLOPT_PROXY_SSLCERT_BLOB

CURLOPT_SSLCERTTYPE

Client cert type. See CURLOPT_SSLCERTTYPE

CURLOPT_PROXY_SSLCERTTYPE

Proxy client cert type. See CURLOPT_PROXY_SSLCERTTYPE

CURLOPT_SSLKEY

Client key. See CURLOPT_SSLKEY

CURLOPT_SSLKEY_BLOB

Client key memory buffer. See CURLOPT_SSLKEY_BLOB

CURLOPT_PROXY_SSLKEY

Proxy client key. See CURLOPT_PROXY_SSLKEY

CURLOPT_PROXY_SSLKEY_BLOB

Proxy client key. See CURLOPT_PROXY_SSLKEY_BLOB

CURLOPT_SSLKEYTYPE

Client key type. See CURLOPT_SSLKEYTYPE

CURLOPT_PROXY_SSLKEYTYPE

Proxy client key type. See CURLOPT_PROXY_SSLKEYTYPE

CURLOPT_KEYPASSWD

Client key password. See CURLOPT_KEYPASSWD

CURLOPT_PROXY_KEYPASSWD

Proxy client key password. See CURLOPT_PROXY_KEYPASSWD

CURLOPT_SSL_ENABLE_ALPN

Enable use of ALPN. See CURLOPT_SSL_ENABLE_ALPN

CURLOPT_SSL_ENABLE_NPN

Enable use of NPN. See CURLOPT_SSL_ENABLE_NPN

CURLOPT_SSLENGINE

Use identifier with SSL engine. See CURLOPT_SSLENGINE

CURLOPT_SSLENGINE_DEFAULT

Default SSL engine. See CURLOPT_SSLENGINE_DEFAULT

CURLOPT_SSL_FALSESTART

Enable TLS False Start. See CURLOPT_SSL_FALSESTART

CURLOPT_SSLVERSION

SSL version to use. See CURLOPT_SSLVERSION

CURLOPT_PROXY_SSLVERSION

Proxy SSL version to use. See CURLOPT_PROXY_SSLVERSION

CURLOPT_SSL_VERIFYHOST

Verify the host name in the SSL certificate. See CURLOPT_SSL_VERIFYHOST

CURLOPT_PROXY_SSL_VERIFYHOST

Verify the host name in the proxy SSL certificate. See CURLOPT_PROXY_SSL_VERIFYHOST

CURLOPT_SSL_VERIFYPEER

Verify the SSL certificate. See CURLOPT_SSL_VERIFYPEER

CURLOPT_PROXY_SSL_VERIFYPEER

Verify the proxy SSL certificate. See CURLOPT_PROXY_SSL_VERIFYPEER

CURLOPT_SSL_VERIFYSTATUS

Verify the SSL certificate’s status. See CURLOPT_SSL_VERIFYSTATUS

CURLOPT_CAINFO

CA cert bundle. See CURLOPT_CAINFO

CURLOPT_PROXY_CAINFO

Proxy CA cert bundle. See CURLOPT_PROXY_CAINFO

CURLOPT_ISSUERCERT

Issuer certificate. See CURLOPT_ISSUERCERT

CURLOPT_ISSUERCERT_BLOB

Issuer certificate memory buffer. See CURLOPT_ISSUERCERT_BLOB

CURLOPT_PROXY_ISSUERCERT

Proxy issuer certificate. See CURLOPT_PROXY_ISSUERCERT

CURLOPT_PROXY_ISSUERCERT_BLOB

Proxy issuer certificate memory buffer. See CURLOPT_PROXY_ISSUERCERT_BLOB

CURLOPT_CAPATH

Path to CA cert bundle. See CURLOPT_CAPATH

CURLOPT_PROXY_CAPATH

Path to proxy CA cert bundle. See CURLOPT_PROXY_CAPATH

CURLOPT_CRLFILE

Certificate Revocation List. See CURLOPT_CRLFILE

CURLOPT_PROXY_CRLFILE

Proxy Certificate Revocation List. See CURLOPT_PROXY_CRLFILE

CURLOPT_CERTINFO

Extract certificate info. See CURLOPT_CERTINFO

CURLOPT_PINNEDPUBLICKEY

Set pinned SSL public key . See CURLOPT_PINNEDPUBLICKEY

CURLOPT_PROXY_PINNEDPUBLICKEY

Set the proxy’s pinned SSL public key. See CURLOPT_PROXY_PINNEDPUBLICKEY

CURLOPT_RANDOM_FILE

Provide source for entropy random data. See CURLOPT_RANDOM_FILE

CURLOPT_EGDSOCKET

Identify EGD socket for entropy. See CURLOPT_EGDSOCKET

CURLOPT_SSL_CIPHER_LIST

Ciphers to use. See CURLOPT_SSL_CIPHER_LIST

CURLOPT_PROXY_SSL_CIPHER_LIST

Proxy ciphers to use. See CURLOPT_PROXY_SSL_CIPHER_LIST

CURLOPT_TLS13_CIPHERS

TLS 1.3 cipher suites to use. See CURLOPT_TLS13_CIPHERS

CURLOPT_PROXY_TLS13_CIPHERS

Proxy TLS 1.3 cipher suites to use. See CURLOPT_PROXY_TLS13_CIPHERS

CURLOPT_SSL_SESSIONID_CACHE

Disable SSL session-id cache. See CURLOPT_SSL_SESSIONID_CACHE

CURLOPT_SSL_OPTIONS

Control SSL behavior. See CURLOPT_SSL_OPTIONS

CURLOPT_PROXY_SSL_OPTIONS

Control proxy SSL behavior. See CURLOPT_PROXY_SSL_OPTIONS

CURLOPT_KRBLEVEL

Kerberos security level. See CURLOPT_KRBLEVEL

CURLOPT_GSSAPI_DELEGATION

Disable GSS-API delegation. See CURLOPT_GSSAPI_DELEGATION

FTP OPTIONS

CURLOPT_FTPPORT

Use active FTP. See CURLOPT_FTPPORT

CURLOPT_QUOTE

Commands to run before transfer. See CURLOPT_QUOTE

CURLOPT_POSTQUOTE

Commands to run after transfer. See CURLOPT_POSTQUOTE

CURLOPT_PREQUOTE

Commands to run just before transfer. See CURLOPT_PREQUOTE

CURLOPT_APPEND

Append to remote file. See CURLOPT_APPEND

CURLOPT_FTP_USE_EPRT

Use EPTR. See CURLOPT_FTP_USE_EPRT

CURLOPT_FTP_USE_EPSV

Use EPSV. See CURLOPT_FTP_USE_EPSV

CURLOPT_FTP_USE_PRET

Use PRET. See CURLOPT_FTP_USE_PRET

CURLOPT_FTP_CREATE_MISSING_DIRS

Create missing directories on the remote server. See CURLOPT_FTP_CREATE_MISSING_DIRS

CURLOPT_FTP_RESPONSE_TIMEOUT

Timeout for FTP responses. See CURLOPT_FTP_RESPONSE_TIMEOUT

CURLOPT_FTP_ALTERNATIVE_TO_USER

Alternative to USER. See CURLOPT_FTP_ALTERNATIVE_TO_USER

CURLOPT_FTP_SKIP_PASV_IP

Ignore the IP address in the PASV response. See CURLOPT_FTP_SKIP_PASV_IP

CURLOPT_FTPSSLAUTH

Control how to do TLS. See CURLOPT_FTPSSLAUTH

CURLOPT_FTP_SSL_CCC

Back to non-TLS again after authentication. See CURLOPT_FTP_SSL_CCC

CURLOPT_FTP_ACCOUNT

Send ACCT command. See CURLOPT_FTP_ACCOUNT

CURLOPT_FTP_FILEMETHOD

Specify how to reach files. See CURLOPT_FTP_FILEMETHOD

PROTOCOL OPTIONS

CURLOPT_TRANSFERTEXT

Use text transfer. See CURLOPT_TRANSFERTEXT

CURLOPT_PROXY_TRANSFER_MODE

Add transfer mode to URL over proxy. See CURLOPT_PROXY_TRANSFER_MODE

CURLOPT_CRLF

Convert newlines. See CURLOPT_CRLF

CURLOPT_RANGE

Range requests. See CURLOPT_RANGE

CURLOPT_RESUME_FROM

Resume a transfer. See CURLOPT_RESUME_FROM

CURLOPT_RESUME_FROM_LARGE

Resume a transfer. See CURLOPT_RESUME_FROM_LARGE

CURLOPT_CURLU

Set URL to work on with CURLU *. See CURLOPT_CURLU

CURLOPT_CUSTOMREQUEST

Custom request/method. See CURLOPT_CUSTOMREQUEST

CURLOPT_FILETIME

Request file modification date and time. See CURLOPT_FILETIME

CURLOPT_DIRLISTONLY

List only. See CURLOPT_DIRLISTONLY

CURLOPT_NOBODY

Do not get the body contents. See CURLOPT_NOBODY

CURLOPT_INFILESIZE

Size of file to send. CURLOPT_INFILESIZE

CURLOPT_INFILESIZE_LARGE

Size of file to send. CURLOPT_INFILESIZE_LARGE

CURLOPT_UPLOAD

Upload data. See CURLOPT_UPLOAD

CURLOPT_UPLOAD_BUFFERSIZE

Set upload buffer size. See CURLOPT_UPLOAD_BUFFERSIZE

CURLOPT_MIMEPOST

Post/send MIME data. See CURLOPT_MIMEPOST

CURLOPT_MAXFILESIZE

Maximum file size to get. See CURLOPT_MAXFILESIZE

CURLOPT_MAXFILESIZE_LARGE

Maximum file size to get. See CURLOPT_MAXFILESIZE_LARGE

CURLOPT_TIMECONDITION

Make a time conditional request. See CURLOPT_TIMECONDITION

CURLOPT_TIMEVALUE

Time value for the time conditional request. See CURLOPT_TIMEVALUE

CURLOPT_TIMEVALUE_LARGE

Time value for the time conditional request. See CURLOPT_TIMEVALUE_LARGE

CALLBACK OPTIONS

CURLOPT_WRITEFUNCTION

Callback for writing data. See CURLOPT_WRITEFUNCTION

CURLOPT_WRITEDATA

Data pointer to pass to the write callback. See CURLOPT_WRITEDATA

CURLOPT_READFUNCTION

Callback for reading data. See CURLOPT_READFUNCTION

CURLOPT_READDATA

Data pointer to pass to the read callback. See CURLOPT_READDATA

CURLOPT_IOCTLFUNCTION

Callback for I/O operations. See CURLOPT_IOCTLFUNCTION

CURLOPT_IOCTLDATA

Data pointer to pass to the I/O callback. See CURLOPT_IOCTLDATA

CURLOPT_SEEKFUNCTION

Callback for seek operations. See CURLOPT_SEEKFUNCTION

CURLOPT_SEEKDATA

Data pointer to pass to the seek callback. See CURLOPT_SEEKDATA

CURLOPT_SOCKOPTFUNCTION

Callback for sockopt operations. See CURLOPT_SOCKOPTFUNCTION

CURLOPT_SOCKOPTDATA

Data pointer to pass to the sockopt callback. See CURLOPT_SOCKOPTDATA

CURLOPT_OPENSOCKETFUNCTION

Callback for socket creation. See CURLOPT_OPENSOCKETFUNCTION

CURLOPT_OPENSOCKETDATA

Data pointer to pass to the open socket callback. See CURLOPT_OPENSOCKETDATA

CURLOPT_CLOSESOCKETFUNCTION

Callback for closing socket. See CURLOPT_CLOSESOCKETFUNCTION

CURLOPT_CLOSESOCKETDATA

Data pointer to pass to the close socket callback. See CURLOPT_CLOSESOCKETDATA

CURLOPT_PROGRESSFUNCTION

OBSOLETE callback for progress meter. See CURLOPT_PROGRESSFUNCTION

CURLOPT_PROGRESSDATA

Data pointer to pass to the progress meter callback. See CURLOPT_PROGRESSDATA

CURLOPT_XFERINFOFUNCTION

Callback for progress meter. See CURLOPT_XFERINFOFUNCTION

CURLOPT_XFERINFODATA

Data pointer to pass to the progress meter callback. See CURLOPT_XFERINFODATA

CURLOPT_HEADERFUNCTION

Callback for writing received headers. See CURLOPT_HEADERFUNCTION

CURLOPT_HEADERDATA

Data pointer to pass to the header callback. See CURLOPT_HEADERDATA

CURLOPT_DEBUGFUNCTION

Callback for debug information. See CURLOPT_DEBUGFUNCTION

CURLOPT_DEBUGDATA

Data pointer to pass to the debug callback. See CURLOPT_DEBUGDATA

CURLOPT_SSL_CTX_FUNCTION

Callback for SSL context logic. See CURLOPT_SSL_CTX_FUNCTION

CURLOPT_SSL_CTX_DATA

Data pointer to pass to the SSL context callback. See CURLOPT_SSL_CTX_DATA

CURLOPT_CONV_TO_NETWORK_FUNCTION

Callback for code base conversion. See CURLOPT_CONV_TO_NETWORK_FUNCTION

CURLOPT_CONV_FROM_NETWORK_FUNCTION

Callback for code base conversion. See CURLOPT_CONV_FROM_NETWORK_FUNCTION

CURLOPT_CONV_FROM_UTF8_FUNCTION

Callback for code base conversion. See CURLOPT_CONV_FROM_UTF8_FUNCTION

CURLOPT_INTERLEAVEFUNCTION

Callback for RTSP interleaved data. See CURLOPT_INTERLEAVEFUNCTION

CURLOPT_INTERLEAVEDATA

Data pointer to pass to the RTSP interleave callback. See CURLOPT_INTERLEAVEDATA

CURLOPT_CHUNK_BGN_FUNCTION

Callback for wildcard download start of chunk. See CURLOPT_CHUNK_BGN_FUNCTION

CURLOPT_CHUNK_END_FUNCTION

Callback for wildcard download end of chunk. See CURLOPT_CHUNK_END_FUNCTION

CURLOPT_CHUNK_DATA

Data pointer to pass to the chunk callbacks. See CURLOPT_CHUNK_DATA

CURLOPT_FNMATCH_FUNCTION

Callback for wildcard matching. See CURLOPT_FNMATCH_FUNCTION

CURLOPT_FNMATCH_DATA

Data pointer to pass to the wildcard matching callback. See CURLOPT_FNMATCH_DATA

CURLOPT_SUPPRESS_CONNECT_HEADERS

Suppress proxy CONNECT response headers from user callbacks. See CURLOPT_SUPPRESS_CONNECT_HEADERS

CURLOPT_RESOLVER_START_FUNCTION

Callback to be called before a new resolve request is started. See CURLOPT_RESOLVER_START_FUNCTION

CURLOPT_RESOLVER_START_DATA


Data pointer to pass to resolver start callback. See CURLOPT_RESOLVER_START_DATA

How do I configure and setup curl to permanently use a proxy connection?

Update/edit your ~/.curlrc file using a text editor such as vim: Append the following:

proxy = server1.cyberciti.biz:3128
proxy-user = "foo:bar"

Save and close the file. Another option is create a bash shell alias in your ~/.bashrc file:

## alias for curl command 
## set proxy-server and port, the syntax is
## alias curl="curl -x {your_proxy_host}:{proxy_port}"
alias curl="curl -x server1.cyberciti.biz:3128"

Remember, the proxy string can be specified with a protocol:// prefix to specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or socks5h:// to request the specific SOCKS version to be used. No protocol specified, http:// and all others will be treated as HTTP proxies. If the port number is not specified in the proxy string, it is assumed to be 1080. The -x option overrides existing environment variables that set the proxy to use. If there’s an environment variable setting a proxy, you can set proxy to “” to override it. See curl command man page here for more info.


С этим читают