CURLOPT_SOCKS5_AUTH(3) Introduction to Library Functions
CURLOPT_SOCKS5_AUTH - methods for SOCKS5 proxy authentication
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);
Pass a long as parameter, which is set to a bitmask, to tell libcurl
which authentication method(s) are allowed for SOCKS5 proxy
authentication. The only supported flags are CURLAUTH_BASIC, which
allows username/password authentication, CURLAUTH_GSSAPI, which
allows GSS-API authentication, and CURLAUTH_NONE, which allows no
authentication. Set the actual username and password with the
CURLOPT_PROXYUSERPWD(3) option.
The specific socks authentication method is an access property, it
does not change the security context. This means that this option
changes how the connection and access to the proxy happens when a
connection is setup, but it does not affect which proxy connections
libcurl can reuse. libcurl may reuse a connection that was set up
with a different socks authentication method. Proxy connection reuse
still depends on other properties matching, such as the protocol,
proxy hostname, port number, credentials and other settings that
affect the connection.
CURLAUTH_BASIC | CURLAUTH_GSSAPI
This functionality affects all supported protocols
int main(void)
{
CURL *curl = curl_easy_init();
if(curl) {
CURLcode result;
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
/* request to use a SOCKS5 proxy */
curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://user:pass@myproxy.com");
/* enable username/password authentication only */
curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, CURLAUTH_BASIC);
/* Perform the request */
result = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
}
CURLAUTH_* macros became long types in 7.26.0, prior to this version
a long cast was necessary when passed to curl_easy_setopt(3).
Added in curl 7.55.0
curl_easy_setopt(3) returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error
occurred, see libcurl-errors(3).
CURLOPT_PROXY(3), CURLOPT_PROXYTYPE(3)
libcurl 2026-04-29 CURLOPT_SOCKS5_AUTH(3)
NAME
CURLOPT_SOCKS5_AUTH - methods for SOCKS5 proxy authentication
SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_AUTH, long bitmask);
DESCRIPTION
Pass a long as parameter, which is set to a bitmask, to tell libcurl
which authentication method(s) are allowed for SOCKS5 proxy
authentication. The only supported flags are CURLAUTH_BASIC, which
allows username/password authentication, CURLAUTH_GSSAPI, which
allows GSS-API authentication, and CURLAUTH_NONE, which allows no
authentication. Set the actual username and password with the
CURLOPT_PROXYUSERPWD(3) option.
The specific socks authentication method is an access property, it
does not change the security context. This means that this option
changes how the connection and access to the proxy happens when a
connection is setup, but it does not affect which proxy connections
libcurl can reuse. libcurl may reuse a connection that was set up
with a different socks authentication method. Proxy connection reuse
still depends on other properties matching, such as the protocol,
proxy hostname, port number, credentials and other settings that
affect the connection.
DEFAULT
CURLAUTH_BASIC | CURLAUTH_GSSAPI
PROTOCOLS
This functionality affects all supported protocols
EXAMPLE
int main(void)
{
CURL *curl = curl_easy_init();
if(curl) {
CURLcode result;
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
/* request to use a SOCKS5 proxy */
curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://user:pass@myproxy.com");
/* enable username/password authentication only */
curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, CURLAUTH_BASIC);
/* Perform the request */
result = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
}
HISTORY
CURLAUTH_* macros became long types in 7.26.0, prior to this version
a long cast was necessary when passed to curl_easy_setopt(3).
AVAILABILITY
Added in curl 7.55.0
RETURN VALUE
curl_easy_setopt(3) returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error
occurred, see libcurl-errors(3).
SEE ALSO
CURLOPT_PROXY(3), CURLOPT_PROXYTYPE(3)
libcurl 2026-04-29 CURLOPT_SOCKS5_AUTH(3)