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.
预定义常量
下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。
Descriptions and uses for these constants are described within the curl_setopt() and curl_getinfo() documentation.
-
CURLOPT_AUTOREFERER(integer) - 从PHP 5.1.0开始可用
-
CURLOPT_COOKIESESSION(integer) - 从PHP 5.1.0开始可用
-
CURLOPT_DNS_USE_GLOBAL_CACHE(integer)
-
CURLOPT_DNS_CACHE_TIMEOUT(integer)
-
CURLOPT_FTP_SSL(integer) - 从PHP 5.2.0开始可用
-
CURLFTPSSL_TRY(integer) - 从PHP 5.2.0开始可用
-
CURLFTPSSL_ALL(integer) - 从PHP 5.2.0开始可用
-
CURLFTPSSL_CONTROL(integer) - 从PHP 5.2.0开始可用
-
CURLFTPSSL_NONE(integer) - 从PHP 5.2.0开始可用
-
CURLOPT_PRIVATE(integer) - 从PHP 5.2.4开始可用
-
CURLOPT_FTPSSLAUTH(integer) - 从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) - 当PHP配置open_basedir或 safe_mode被启用时,该常量不 可用。
-
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) - 从PHP 5.2.1开始可用
-
CURLOPT_POSTFIELDS(integer)
-
CURLOPT_PROGRESSFUNCTION(integer) - 从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_COOKIE(integer)
-
CURLOPT_SSLCERT(integer)
-
CURLOPT_SSLCERTPASSWD(integer)
-
CURLOPT_WRITEHEADER(integer)
-
CURLOPT_SSL_VERIFYHOST(integer)
-
CURLOPT_COOKIEFILE(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_COOKIEJAR(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)
-
CURLCLOSEPOLICY_LEAST_RECENTLY_USED(integer)
-
CURLCLOSEPOLICY_LEAST_TRAFFIC(integer)
-
CURLCLOSEPOLICY_SLOWEST(integer)
-
CURLCLOSEPOLICY_CALLBACK(integer)
-
CURLCLOSEPOLICY_OLDEST(integer)
-
CURLINFO_PRIVATE(integer) - 从PHP 5.2.4开始可用
-
CURLINFO_EFFECTIVE_URL(integer)
-
CURLINFO_HTTP_CODE(integer)
-
CURLINFO_HEADER_OUT(integer) - 从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_SHARE_IN_USE(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) - 从PHP 5.1.0开始可用
-
CURLFTPAUTH_SSL(integer) - 从PHP 5.1.0开始可用
-
CURLFTPAUTH_TLS(integer) - 从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)
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.
