Beware of CURLE_* constants!
On the official site:
http://curl.haxx.se/libcurl/c/libcurl-errors.html
some constants are different, some missing compared to the PHP implementation.
Some examples:
in PHP the curl error number 28 is called
CURLE_OPERATION_TIMEOUTED
while in the official site is:
CURLE_OPERATION_TIMEDOUT
So if you use the second, it won't march the error 28 because in PHP it is not defined that way.
The same is for these:
CURLE_HTTP_RETURNED_ERROR
CURLE_UPLOAD_FAILED
CURLE_INTERFACE_FAILED
CURLE_SSL_CERTPROBLEM
CURLE_SEND_FAIL_REWIND
CURLE_LOGIN_DENIED
CURLE_AGAIN
that are in someway named differently or missing from PHP.
Predefined Constants
The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.
Descriptions and uses for these constants are described within the curl_setopt() and curl_getinfo() documentation.
-
CURLOPT_AUTOREFERER(integer) - Available since PHP 5.1.0
- Available since PHP 5.1.0
-
CURLOPT_DNS_USE_GLOBAL_CACHE(integer)
-
CURLOPT_DNS_CACHE_TIMEOUT(integer)
-
CURLOPT_FTP_SSL(integer) - Available since PHP 5.2.0
-
CURLFTPSSL_TRY(integer) - Available since PHP 5.2.0
-
CURLFTPSSL_ALL(integer) - Available since PHP 5.2.0
-
CURLFTPSSL_CONTROL(integer) - Available since PHP 5.2.0
-
CURLFTPSSL_NONE(integer) - Available since PHP 5.2.0
-
CURLOPT_PRIVATE(integer) - Available since PHP 5.2.4
-
CURLOPT_FTPSSLAUTH(integer) - Available since PHP 5.1.0
-
CURLOPT_PORT(integer)
-
CURLOPT_FILE(integer)
-
CURLOPT_INFILE(integer)
-
CURLOPT_INFILESIZE(integer)
-
CURLOPT_URL(integer)
-
CURLOPT_PROXY(integer)
-
CURLOPT_VERBOSE(integer)
-
CURLOPT_HEADER(integer)
-
CURLOPT_HTTPHEADER(integer)
-
CURLOPT_NOPROGRESS(integer)
-
CURLOPT_NOBODY(integer)
-
CURLOPT_FAILONERROR(integer)
-
CURLOPT_UPLOAD(integer)
-
CURLOPT_POST(integer)
-
CURLOPT_FTPLISTONLY(integer)
-
CURLOPT_FTPAPPEND(integer)
-
CURLOPT_FTP_CREATE_MISSING_DIRS(integer)
-
CURLOPT_NETRC(integer)
-
CURLOPT_FOLLOWLOCATION(integer) - This constant is not available when open_basedir or safe_mode are enabled.
-
CURLOPT_FTPASCII(integer)
-
CURLOPT_PUT(integer)
-
CURLOPT_MUTE(integer)
-
CURLOPT_USERPWD(integer)
-
CURLOPT_PROXYUSERPWD(integer)
-
CURLOPT_RANGE(integer)
-
CURLOPT_TIMEOUT(integer)
-
CURLOPT_TIMEOUT_MS(integer)
-
CURLOPT_TCP_NODELAY(integer) - Available since PHP 5.2.1
-
CURLOPT_POSTFIELDS(integer)
-
CURLOPT_PROGRESSFUNCTION(integer) - Available since PHP 5.3.0
-
CURLOPT_REFERER(integer)
-
CURLOPT_USERAGENT(integer)
-
CURLOPT_FTPPORT(integer)
-
CURLOPT_FTP_USE_EPSV(integer)
-
CURLOPT_LOW_SPEED_LIMIT(integer)
-
CURLOPT_LOW_SPEED_TIME(integer)
-
CURLOPT_RESUME_FROM(integer)
-
CURLOPT_SSLCERT(integer)
-
CURLOPT_SSLCERTPASSWD(integer)
-
CURLOPT_WRITEHEADER(integer)
-
CURLOPT_SSL_VERIFYHOST(integer)
-
CURLOPT_SSLVERSION(integer)
-
CURLOPT_TIMECONDITION(integer)
-
CURLOPT_TIMEVALUE(integer)
-
CURLOPT_CUSTOMREQUEST(integer)
-
CURLOPT_STDERR(integer)
-
CURLOPT_TRANSFERTEXT(integer)
-
CURLOPT_RETURNTRANSFER(integer)
-
CURLOPT_QUOTE(integer)
-
CURLOPT_POSTQUOTE(integer)
-
CURLOPT_INTERFACE(integer)
-
CURLOPT_KRB4LEVEL(integer)
-
CURLOPT_HTTPPROXYTUNNEL(integer)
-
CURLOPT_FILETIME(integer)
-
CURLOPT_WRITEFUNCTION(integer)
-
CURLOPT_READFUNCTION(integer)
-
CURLOPT_PASSWDFUNCTION(integer)
-
CURLOPT_HEADERFUNCTION(integer)
-
CURLOPT_MAXREDIRS(integer)
-
CURLOPT_MAXCONNECTS(integer)
-
CURLOPT_CLOSEPOLICY(integer)
-
CURLOPT_FRESH_CONNECT(integer)
-
CURLOPT_FORBID_REUSE(integer)
-
CURLOPT_RANDOM_FILE(integer)
-
CURLOPT_EGDSOCKET(integer)
-
CURLOPT_CONNECTTIMEOUT(integer)
-
CURLOPT_CONNECTTIMEOUT_MS(integer)
-
CURLOPT_SSL_VERIFYPEER(integer)
-
CURLOPT_CAINFO(integer)
-
CURLOPT_CAPATH(integer)
-
CURLOPT_SSL_CIPHER_LIST(integer)
-
CURLOPT_BINARYTRANSFER(integer)
-
CURLOPT_NOSIGNAL(integer)
-
CURLOPT_PROXYTYPE(integer)
-
CURLOPT_BUFFERSIZE(integer)
-
CURLOPT_HTTPGET(integer)
-
CURLOPT_HTTP_VERSION(integer)
-
CURLOPT_SSLKEY(integer)
-
CURLOPT_SSLKEYTYPE(integer)
-
CURLOPT_SSLKEYPASSWD(integer)
-
CURLOPT_SSLENGINE(integer)
-
CURLOPT_SSLENGINE_DEFAULT(integer)
-
CURLOPT_SSLCERTTYPE(integer)
-
CURLOPT_CRLF(integer)
-
CURLOPT_ENCODING(integer)
-
CURLOPT_PROXYPORT(integer)
-
CURLOPT_UNRESTRICTED_AUTH(integer)
-
CURLOPT_FTP_USE_EPRT(integer)
-
CURLOPT_HTTP200ALIASES(integer)
-
CURLOPT_HTTPAUTH(integer)
-
CURLAUTH_BASIC(integer)
-
CURLAUTH_DIGEST(integer)
-
CURLAUTH_GSSNEGOTIATE(integer)
-
CURLAUTH_NTLM(integer)
-
CURLAUTH_ANY(integer)
-
CURLAUTH_ANYSAFE(integer)
-
CURLOPT_PROXYAUTH(integer)
-
CURLOPT_MAX_RECV_SPEED_LARGE(integer) - Available since PHP 5.4.0 and cURL 7.15.5
-
CURLOPT_MAX_SEND_SPEED_LARGE(integer) - Available since PHP 5.4.0 and cURL 7.15.5
-
CURLCLOSEPOLICY_LEAST_RECENTLY_USED(integer)
-
CURLCLOSEPOLICY_LEAST_TRAFFIC(integer)
-
CURLCLOSEPOLICY_SLOWEST(integer)
-
CURLCLOSEPOLICY_CALLBACK(integer)
-
CURLCLOSEPOLICY_OLDEST(integer)
-
CURLINFO_PRIVATE(integer) - Available since PHP 5.2.4
-
CURLINFO_EFFECTIVE_URL(integer)
-
CURLINFO_HTTP_CODE(integer)
-
CURLINFO_HEADER_OUT(integer) - Available since PHP 5.1.3
-
CURLINFO_HEADER_SIZE(integer)
-
CURLINFO_REQUEST_SIZE(integer)
-
CURLINFO_TOTAL_TIME(integer)
-
CURLINFO_NAMELOOKUP_TIME(integer)
-
CURLINFO_CONNECT_TIME(integer)
-
CURLINFO_PRETRANSFER_TIME(integer)
-
CURLINFO_SIZE_UPLOAD(integer)
-
CURLINFO_SIZE_DOWNLOAD(integer)
-
CURLINFO_SPEED_DOWNLOAD(integer)
-
CURLINFO_SPEED_UPLOAD(integer)
-
CURLINFO_FILETIME(integer)
-
CURLINFO_SSL_VERIFYRESULT(integer)
-
CURLINFO_CONTENT_LENGTH_DOWNLOAD(integer)
-
CURLINFO_CONTENT_LENGTH_UPLOAD(integer)
-
CURLINFO_STARTTRANSFER_TIME(integer)
-
CURLINFO_CONTENT_TYPE(integer)
-
CURLINFO_REDIRECT_TIME(integer)
-
CURLINFO_REDIRECT_COUNT(integer)
-
CURL_TIMECOND_IFMODSINCE(integer)
-
CURL_TIMECOND_IFUNMODSINCE(integer)
-
CURL_TIMECOND_LASTMOD(integer)
-
CURL_VERSION_IPV6(integer)
-
CURL_VERSION_KERBEROS4(integer)
-
CURL_VERSION_SSL(integer)
-
CURL_VERSION_LIBZ(integer)
-
CURLVERSION_NOW(integer)
-
CURLE_OK(integer)
-
CURLE_UNSUPPORTED_PROTOCOL(integer)
-
CURLE_FAILED_INIT(integer)
-
CURLE_URL_MALFORMAT(integer)
-
CURLE_URL_MALFORMAT_USER(integer)
-
CURLE_COULDNT_RESOLVE_PROXY(integer)
-
CURLE_COULDNT_RESOLVE_HOST(integer)
-
CURLE_COULDNT_CONNECT(integer)
-
CURLE_FTP_WEIRD_SERVER_REPLY(integer)
-
CURLE_FTP_ACCESS_DENIED(integer)
-
CURLE_FTP_USER_PASSWORD_INCORRECT(integer)
-
CURLE_FTP_WEIRD_PASS_REPLY(integer)
-
CURLE_FTP_WEIRD_USER_REPLY(integer)
-
CURLE_FTP_WEIRD_PASV_REPLY(integer)
-
CURLE_FTP_WEIRD_227_FORMAT(integer)
-
CURLE_FTP_CANT_GET_HOST(integer)
-
CURLE_FTP_CANT_RECONNECT(integer)
-
CURLE_FTP_COULDNT_SET_BINARY(integer)
-
CURLE_PARTIAL_FILE(integer)
-
CURLE_FTP_COULDNT_RETR_FILE(integer)
-
CURLE_FTP_WRITE_ERROR(integer)
-
CURLE_FTP_QUOTE_ERROR(integer)
-
CURLE_HTTP_NOT_FOUND(integer)
-
CURLE_WRITE_ERROR(integer)
-
CURLE_MALFORMAT_USER(integer)
-
CURLE_FTP_COULDNT_STOR_FILE(integer)
-
CURLE_READ_ERROR(integer)
-
CURLE_OUT_OF_MEMORY(integer)
-
CURLE_OPERATION_TIMEOUTED(integer)
-
CURLE_FTP_COULDNT_SET_ASCII(integer)
-
CURLE_FTP_PORT_FAILED(integer)
-
CURLE_FTP_COULDNT_USE_REST(integer)
-
CURLE_FTP_COULDNT_GET_SIZE(integer)
-
CURLE_HTTP_RANGE_ERROR(integer)
-
CURLE_HTTP_POST_ERROR(integer)
-
CURLE_SSL_CONNECT_ERROR(integer)
-
CURLE_FTP_BAD_DOWNLOAD_RESUME(integer)
-
CURLE_FILE_COULDNT_READ_FILE(integer)
-
CURLE_LDAP_CANNOT_BIND(integer)
-
CURLE_LDAP_SEARCH_FAILED(integer)
-
CURLE_LIBRARY_NOT_FOUND(integer)
-
CURLE_FUNCTION_NOT_FOUND(integer)
-
CURLE_ABORTED_BY_CALLBACK(integer)
-
CURLE_BAD_FUNCTION_ARGUMENT(integer)
-
CURLE_BAD_CALLING_ORDER(integer)
-
CURLE_HTTP_PORT_FAILED(integer)
-
CURLE_BAD_PASSWORD_ENTERED(integer)
-
CURLE_TOO_MANY_REDIRECTS(integer)
-
CURLE_UNKNOWN_TELNET_OPTION(integer)
-
CURLE_TELNET_OPTION_SYNTAX(integer)
-
CURLE_OBSOLETE(integer)
-
CURLE_SSL_PEER_CERTIFICATE(integer)
-
CURLE_GOT_NOTHING(integer)
-
CURLE_SSL_ENGINE_NOTFOUND(integer)
-
CURLE_SSL_ENGINE_SETFAILED(integer)
-
CURLE_SEND_ERROR(integer)
-
CURLE_RECV_ERROR(integer)
-
CURLE_SSL_CERTPROBLEM(integer)
-
CURLE_SSL_CIPHER(integer)
-
CURLE_SSL_CACERT(integer)
-
CURLE_BAD_CONTENT_ENCODING(integer)
-
CURLE_LDAP_INVALID_URL(integer)
-
CURLE_FILESIZE_EXCEEDED(integer)
-
CURLE_FTP_SSL_FAILED(integer)
-
CURLFTPAUTH_DEFAULT(integer) - Available since PHP 5.1.0
-
CURLFTPAUTH_SSL(integer) - Available since PHP 5.1.0
-
CURLFTPAUTH_TLS(integer) - Available since PHP 5.1.0
-
CURLPROXY_HTTP(integer)
-
CURLPROXY_SOCKS5(integer)
-
CURL_NETRC_OPTIONAL(integer)
-
CURL_NETRC_IGNORED(integer)
-
CURL_NETRC_REQUIRED(integer)
-
CURL_HTTP_VERSION_NONE(integer)
-
CURL_HTTP_VERSION_1_0(integer)
-
CURL_HTTP_VERSION_1_1(integer)
-
CURLM_CALL_MULTI_PERFORM(integer)
-
CURLM_OK(integer)
-
CURLM_BAD_HANDLE(integer)
-
CURLM_BAD_EASY_HANDLE(integer)
-
CURLM_OUT_OF_MEMORY(integer)
-
CURLM_INTERNAL_ERROR(integer)
-
CURLMSG_DONE(integer)
-
CURLOPT_KEYPASSWD(integer)
-
CURLOPT_SSH_AUTH_TYPES(integer)
-
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5(integer)
-
CURLOPT_SSH_PRIVATE_KEYFILE(integer)
-
CURLOPT_SSH_PUBLIC_KEYFILE(integer)
-
CURLSSH_AUTH_ANY(integer)
-
CURLSSH_AUTH_DEFAULT(integer)
-
CURLSSH_AUTH_HOST(integer)
-
CURLSSH_AUTH_KEYBOARD(integer)
-
CURLSSH_AUTH_NONE(integer)
-
CURLSSH_AUTH_PASSWORD(integer)
s dot coletta at unidata dot it ¶
3 years ago
Ron ¶
5 years ago
<?
/*
* Author: Ron
* Released: August 4, 2007
* Description: An example of the disguise_curl() function in order to grab contents from a website while remaining fully camouflaged by using a fake user agent and fake headers.
*/
$url = 'http://www.ericgiguere.com/tools/http-header-viewer.html';
// disguises the curl using fake headers and a fake user agent.
function disguise_curl($url)
{
$curl = curl_init();
// Setup headers - I used the same headers from Firefox version 2.0.0.6
// below was split up because php.net said the line was too long. :/
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // browsers keep this blank.
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$html = curl_exec($curl); // execute the curl command
curl_close($curl); // close the connection
return $html; // and finally, return $html
}
// uses the function and displays the text off the website
$text = disguise_curl($url);
echo $text;
?>
~Ron
Kelvin Lim ¶
4 years ago
Note that CURLAUTH_NTLM refers specifically to NTLMv1 authentication. As of this writing, the cURL library does not yet support NTLMv2.
