⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 url.c

📁 harvest是一个下载html网页得机器人
💻 C
📖 第 1 页 / 共 5 页
字号:
    data->set.http_include_header = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_NOPROGRESS:    /*     * Shut off the internal supported progress meter     */    data->set.hide_progress = va_arg(param, long)?TRUE:FALSE;    if(data->set.hide_progress)      data->progress.flags |= PGRS_HIDE;    else      data->progress.flags &= ~PGRS_HIDE;    break;  case CURLOPT_NOBODY:    /*     * Do not include the body part in the output data stream.     */    data->set.no_body = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_FAILONERROR:    /*     * Don't output the >=300 error code HTML-page, but instead only     * return error.     */    data->set.http_fail_on_error = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_UPLOAD:    /*     * We want to sent data to the remote host     */    data->set.upload = va_arg(param, long)?TRUE:FALSE;    if(data->set.upload)      /* If this is HTTP, PUT is what's needed to "upload" */      data->set.httpreq = HTTPREQ_PUT;    break;  case CURLOPT_FILETIME:    /*     * Try to get the file time of the remote document. The time will     * later (possibly) become available using curl_easy_getinfo().     */    data->set.get_filetime = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_FTP_CREATE_MISSING_DIRS:    /*     * An FTP option that modifies an upload to create missing directories on     * the server.     */     data->set.ftp_create_missing_dirs = va_arg( param , long )?TRUE:FALSE;    break;  case CURLOPT_FTP_RESPONSE_TIMEOUT:    /*     * An FTP option that specifies how quickly an FTP response must be      * obtained before it is considered failure.     */    data->set.ftp_response_timeout = va_arg( param , long );    break;  case CURLOPT_FTPLISTONLY:    /*     * An FTP option that changes the command to one that asks for a list     * only, no file info details.     */    data->set.ftp_list_only = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_FTPAPPEND:    /*     * We want to upload and append to an existing (FTP) file.     */    data->set.ftp_append = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_NETRC:    /*     * Parse the $HOME/.netrc file     */    data->set.use_netrc = va_arg(param, long);    break;  case CURLOPT_FOLLOWLOCATION:    /*     * Follow Location: header hints on a HTTP-server.     */    data->set.http_follow_location = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_UNRESTRICTED_AUTH:    /*     * Send authentication (user+password) when following locations, even when     * hostname changed.     */    data->set.http_disable_hostname_check_before_authentication =      va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_HTTP_VERSION:    /*     * This sets a requested HTTP version to be used. The value is one of     * the listed enums in curl/curl.h.     */    data->set.httpversion = va_arg(param, long);    break;  case CURLOPT_TRANSFERTEXT:    /*     * This option was previously named 'FTPASCII'. Renamed to work with     * more protocols than merely FTP.     *     * Transfer using ASCII (instead of BINARY).     */    data->set.ftp_ascii = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_PUT:    /*     * Use the HTTP PUT request to transfer data if this is TRUE.  If this is     * FALSE, don't set the httpreq. We can't know what to revert it to!     */    if(va_arg(param, long))      data->set.httpreq = HTTPREQ_PUT;    break;  case CURLOPT_TIMECONDITION:    /*     * Set HTTP time condition. This must be one of the defines in the     * curl/curl.h header file.     */    data->set.timecondition = va_arg(param, long);    break;  case CURLOPT_TIMEVALUE:    /*     * This is the value to compare with the remote document with the     * method set with CURLOPT_TIMECONDITION     */    data->set.timevalue = va_arg(param, long);    break;  case CURLOPT_SSLVERSION:    /*     * Set explicit SSL version to try to connect with, as some SSL     * implementations are lame.     */    data->set.ssl.version = va_arg(param, long);    break;  case CURLOPT_COOKIESESSION:    /*     * Set this option to TRUE to start a new "cookie session". It will     * prevent the forthcoming read-cookies-from-file actions to accept     * cookies that are marked as being session cookies, as they belong to a     * previous session.     *     * In the original Netscape cookie spec, "session cookies" are cookies     * with no expire date set. RFC2109 describes the same action if no     * 'Max-Age' is set and RFC2965 includes the RFC2109 description and adds     * a 'Discard' action that can enforce the discard even for cookies that     * have a Max-Age.     *     * We run mostly with the original cookie spec, as hardly anyone implements     * anything else.     */    data->set.cookiesession = (bool)va_arg(param, long);    break;#ifndef CURL_DISABLE_HTTP  case CURLOPT_COOKIEFILE:    /*     * Set cookie file to read and parse. Can be used multiple times.     */    cookiefile = (char *)va_arg(param, void *);    if(cookiefile)      /* append the cookie file name to the list of file names, and deal with         them later */      data->change.cookielist =        curl_slist_append(data->change.cookielist, cookiefile);    break;  case CURLOPT_COOKIEJAR:    /*     * Set cookie file name to dump all cookies to when we're done.     */    data->set.cookiejar = (char *)va_arg(param, void *);    /*     * Activate the cookie parser. This may or may not already     * have been made.     */    data->cookies = Curl_cookie_init(data, NULL, data->cookies,                                     data->set.cookiesession);    break;#endif  case CURLOPT_WRITEHEADER:    /*     * Custom pointer to pass the header write callback function     */    data->set.writeheader = (void *)va_arg(param, void *);    break;  case CURLOPT_COOKIE:    /*     * Cookie string to send to the remote server in the request.     */    data->set.cookie = va_arg(param, char *);    break;  case CURLOPT_ERRORBUFFER:    /*     * Error buffer provided by the caller to get the human readable     * error string in.     */    data->set.errorbuffer = va_arg(param, char *);    break;  case CURLOPT_FILE:    /*     * FILE pointer to write to or include in the data write callback     */    data->set.out = va_arg(param, FILE *);    break;  case CURLOPT_FTPPORT:    /*     * Use FTP PORT, this also specifies which IP address to use     */    data->set.ftpport = va_arg(param, char *);    data->set.ftp_use_port = data->set.ftpport?1:0;    break;  case CURLOPT_FTP_USE_EPRT:    data->set.ftp_use_eprt = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_FTP_USE_EPSV:    data->set.ftp_use_epsv = va_arg(param, long)?TRUE:FALSE;    break;      case CURLOPT_HTTPHEADER:    /*     * Set a list with HTTP headers to use (or replace internals with)     */    data->set.headers = va_arg(param, struct curl_slist *);    break;  case CURLOPT_CUSTOMREQUEST:    /*     * Set a custom string to use as request     */    data->set.customrequest = va_arg(param, char *);    /* we don't set       data->set.httpreq = HTTPREQ_CUSTOM;       here, we continue as if we were using the already set type       and this just changes the actual request keyword */    break;  case CURLOPT_HTTPPOST:    /*     * Set to make us do HTTP POST     */    data->set.httppost = va_arg(param, struct HttpPost *);    if(data->set.httppost)      data->set.httpreq = HTTPREQ_POST_FORM;    break;  case CURLOPT_HTTPGET:    /*     * Set to force us do HTTP GET     */    if(va_arg(param, long)) {      data->set.httpreq = HTTPREQ_GET;      data->set.upload = FALSE; /* switch off upload */    }    break;  case CURLOPT_INFILE:    /*     * FILE pointer to read the file to be uploaded from. Or possibly     * used as argument to the read callback.     */    data->set.in = va_arg(param, FILE *);    break;  case CURLOPT_INFILESIZE:    /*     * If known, this should inform curl about the file size of the     * to-be-uploaded file.     */    data->set.infilesize = va_arg(param, long);    break;  case CURLOPT_LOW_SPEED_LIMIT:    /*     * The low speed limit that if transfers are below this for     * CURLOPT_LOW_SPEED_TIME, the transfer is aborted.     */    data->set.low_speed_limit=va_arg(param, long);    break;  case CURLOPT_LOW_SPEED_TIME:    /*     * The low speed time that if transfers are below the set     * CURLOPT_LOW_SPEED_LIMIT during this time, the transfer is aborted.     */    data->set.low_speed_time=va_arg(param, long);    break;  case CURLOPT_URL:    /*     * The URL to fetch.     */    if(data->change.url_alloc) {      /* the already set URL is allocated, free it first! */      free(data->change.url);      data->change.url_alloc=FALSE;    }    data->set.set_url = va_arg(param, char *);    data->change.url = data->set.set_url;    data->change.url_changed = TRUE;    break;  case CURLOPT_PORT:    /*     * The port number to use when getting the URL     */    data->set.use_port = va_arg(param, long);    break;  case CURLOPT_POST:    /* Does this option serve a purpose anymore? Yes it does, when       CURLOPT_POSTFIELDS isn't used and the POST data is read off the       callback! */    if(va_arg(param, long))      data->set.httpreq = HTTPREQ_POST;    break;  case CURLOPT_POSTFIELDS:    /*     * A string with POST data. Makes curl HTTP POST.     */    data->set.postfields = va_arg(param, char *);    if(data->set.postfields)      data->set.httpreq = HTTPREQ_POST;    break;  case CURLOPT_POSTFIELDSIZE:    /*     * The size of the POSTFIELD data, if curl should now do a strlen     * to find out. Enables binary posts.     */    data->set.postfieldsize = va_arg(param, long);    break;  case CURLOPT_REFERER:    /*     * String to set in the HTTP Referer: field.     */    if(data->change.referer_alloc) {      free(data->change.referer);      data->change.referer_alloc = FALSE;    }    data->set.set_referer = va_arg(param, char *);    data->change.referer = data->set.set_referer;    break;  case CURLOPT_AUTOREFERER:    /*     * Switch on automatic referer that gets set if curl follows locations.     */    data->set.http_auto_referer = va_arg(param, long)?1:0;    break;  case CURLOPT_PROXY:    /*     * Set proxy server:port to use as HTTP proxy.     *     * If the proxy is set to "" we explicitly say that we don't want to use a     * proxy (even though there might be environment variables saying so).     *     * Setting it to NULL, means no proxy but allows the environment variables     * to decide for us.     */    if(data->change.proxy_alloc) {      /*       * The already set string is allocated, free that first       */      data->change.proxy_alloc=FALSE;;      free(data->change.proxy);    }    data->set.set_proxy = va_arg(param, char *);    data->change.proxy = data->set.set_proxy;    break;  case CURLOPT_HTTPPROXYTUNNEL:    /*     * Tunnel operations through the proxy instead of normal proxy use     */    data->set.tunnel_thru_httpproxy = va_arg(param, long)?TRUE:FALSE;    break;  case CURLOPT_PROXYPORT:    /*     * Explicitly set HTTP proxy port number.     */    data->set.proxyport = va_arg(param, long);    break;  case CURLOPT_TIMEOUT:    /*     * The maximum time you allow curl to use for a single transfer     * operation.     */    data->set.timeout = va_arg(param, long);    break;  case CURLOPT_CONNECTTIMEOUT:    /*     * The maximum time you allow curl to use to connect.     */    data->set.connecttimeout = va_arg(param, long);    break;  case CURLOPT_MAXREDIRS:    /*     * The maximum amount of hops you allow curl to follow Location:     * headers. This should mostly be used to detect never-ending loops.     */    data->set.maxredirs = va_arg(param, long);    break;  case CURLOPT_USERAGENT:    /*     * String to use in the HTTP User-Agent field     */    data->set.useragent = va_arg(param, char *);    break;  case CURLOPT_ENCODING:    /*     * String to use at the value of Accept-Encoding header. 08/28/02 jhrg     *     * If the encoding is set to "" we use an Accept-Encoding header that     * encompasses all the encodings we support.     * If the encoding is set to NULL we don't send an Accept-Encoding header     * and ignore an received Content-Encoding header.     *     */    data->set.encoding = va_arg(param, char *);    if(data->set.encoding && !*data->set.encoding)      data->set.encoding = (char*)ALL_CONTENT_ENCODINGS;    break;  case CURLOPT_HTTPAUTH:    /*     * Set HTTP Authentication type BITMASK.     */  {    long auth = va_arg(param, long);    /* switch off bits we can't support */#ifndef USE_SSLEAY    auth &= ~CURLAUTH_NTLM; /* no NTLM without SSL */#endif#ifndef HAVE_GSSAPI    auth &= ~CURLAUTH_GSSNEGOTIATE; /* no GSS-Negotiate without GSSAPI */#endif    if(!auth)      return CURLE_FAILED_INIT; /* no supported types left! */    data->set.httpauth = auth;  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -