http://pycurl.sourceforge.net/download/
http://pycurl.sourceforge.net/doc/curlobject.html
wget http://nick.txtcc.com/nickfiles/curl-7.25.0.tar.gz
wget http://nick.txtcc.com/nickfiles/pycurl-7.19.0.tar.gz
编译安装以上两个即可。
ldconfig
Python
1 2 3 4 5 6 7 8 9 10 11 12 | import pycurl c = pycurl.Curl() c.setopt(pycurl.URL, "http://google.com/") c.setopt(pycurl.HTTPHEADER, ["Accept:"]) import StringIO b = StringIO.StringIO() c.setopt(pycurl.WRITEFUNCTION, b.write) c.setopt(pycurl.FOLLOWLOCATION, 1) c.setopt(pycurl.MAXREDIRS, 5) c.perform() print b.getvalue() print c.getinfo(pycurl.INFO_FILETIME) |
curl_easy_setopt
告诉 libcurl 的如何做事 CURLOPT_WRITEFUNCTION: 写(下载)回传函数,传递一个写指针供外部操作, 一次回调内容大小在 CURL_MAX_WRITE_SIZE (curl.h头文件)中设置 CURLOPT_WRITEDATA: 直接写文件,指定一个文件名如c.setopt(pycurl.WRITEDATA, 'E:\WebSite\py\1.txt') 注win下不能用 CURLOPT_READFUNCTION: 读(上传)回传函数 CURLOPT_SEEKFUNCTION: 数据指针移动,int function(void *instream, curl_off_t offset, int origin);SEEK_SET, SEEK_CUR and SEEK_END,返回CURL_SEEKFUNC_OK或CURL_SEEKFUNC_FAIL或CURL_SEEKFUNC_CANTSEEK (0,1,2) CURLOPT_OPENSOCKETFUNCTION: CURLOPT_HEADERFUNCTION:只接收头数据 size_t function( void *ptr, size_t size, size_t nmemb, void *userdata); CURLOPT_DEBUGFUNCTION: int curl_debug_callback (CURL *, curl_infotype, char *, size_t, void *); CURLOPT_VERBOSE: 参数设置为1 能显示更多详细信息 CURLOPT_HEADER: 设为 1 将在返回的文本中包含头信息 CURLOPT_NOSIGNAL: 不超时 CURLOPT_FOLLOWLOCATION:设置为1告诉libcurl遵循任何访问 CURLOPT_MAXREDIRS: 设定重定向的数目限制,设置为-1表示无限的重定向(默认) CURLOPT_PUT:数据上载相关 CURLOPT_POST: CURLOPT_POSTREDIR: CURLOPT_POSTFIELDS: CURLOPT_POSTFIELDSIZE: CURLOPT_POSTFIELDSIZE_LARGE: CURLOPT_COPYPOSTFIELDS: CURLOPT_HTTPPOST: CURLOPT_UPLOAD: CURLOPT_AUTOREFERER:libcurl自动设置Referer CURLOPT_REFERER: 伪造来源路径 CURLOPT_USERAGENT:自定义USERAGENT CURLOPT_HTTPHEADER:自定义头 CURLOPT_COOKIE: "name1=content1; name2=content2;" CURLOPT_COOKIEFILE: CURLOPT_COOKIEJAR: CURLOPT_COOKIESESSION: 默认情况下,libcurl始终加载和存储所有Cookie CURLOPT_COOKIELIST CURLOPT_HTTPGET CURLOPT_HTTP_VERSION: CURL_HTTP_VERSION_NONE,CURL_HTTP_VERSION_1_0,CURL_HTTP_VERSION_1_1 CURLOPT_IGNORE_CONTENT_LENGTH:忽略内容长度头,针对类似Apache 1.x的服务器 CURLOPT_HTTP_TRANSFER_DECODING:告诉libcurl如何对传输解码,(0,=1) CURLOPT_HTTP200ALIASES:自定义HTTP 200响应别名,有些服务器对200返回不是标准的 CURLOPT_ENCODING:设置接收的内容编码,同 Accept-Encoding, ('','gzip',....) CURLOPT_UNRESTRICTED_AUTH:数设置为1,继续发送认证(用户+密码) NETWORK OPTIONS CURLOPT_URL: http://xxxx,ftp://xxxx CURLOPT_PROXY:HTTP代理,主机名或IP地址 CURLOPT_PROXYPORT:代理端口,也可在PROXY的地址后加":端口",如 :8080 CURLOPT_PROXYTYPE:代理类型,CURLPROXY_HTTP(默认), CURLPROXY_HTTP_1_0,CURLPROXY_SOCKS4,CURLPROXY_SOCKS5,CURLPROXY_SOCKS4A,CURLPROXY_SOCKS5_HOSTNAME, CURLOPT_NOPROXY:不使用代理的域 CURLOPT_HTTPPROXYTUNNEL: CURLOPT_BUFFERSIZE: libcurl的缓冲区大小(以字节为单位) (认证) CURLOPT_NETRC: 此参数控制你的密码,CURL_NETRC_OPTIONAL使用 ~/.netrc 文件, CURL_NETRC_IGNORED(默认):忽略文件,CURL_NETRC_REQUIRED:告诉该文件的使用所需的库,要忽略的URL信息 CURLOPT_NETRC_FILE: 指定 ~/.netrc 文件 CURLOPT_USERNAME: CURLOPT_USERPWD: CURLOPT_PASSWORD: CURLOPT_PROXYUSERNAME: CURLOPT_PROXYUSERPWD: CURLOPT_HTTPAUTH: CURLOPT_PROXYAUTH:
- CURLAUTH_BASIC: HTTP基本验证
- CURLAUTH_DIGEST: HTTP摘要身份验证
- CURLAUTH_DIGEST_IE:
- CURLAUTH_GSSNEGOTIATE: Kerberos5认证 要建立GSS – API
- CURLAUTH_NTLM: NTLM身份验证
- CURLAUTH_ANY: 设置所有选项,ibcurl自动选择一个它认为合适的,安全的验证<
- CURLAUTH_ANYSAFE: 设置基本选项….
- CURLAUTH_ONLY: 强制所有请求使用验证
getinfo
CURLINFO_RESPONSE_CODE: 获得最后收到的HTTP或FTP的代码,如200,404,403,505 代理的CONNECT响应要参考 CURLINFO_HTTP_CONNECTCODE CURLINFO_EFFECTIVE_URL: 最后一次使用有效的URL CURLINFO_HTTP_CONNECTCODE : 长期接受最后收到的代理响应代码 CURLINFO_FILETIME: CURLINFO_TOTAL_TIME: CURLINFO_CONNECT_TIME: CURLINFO_NUM_CONNECTS: 多少个连接 CURLINFO_CONTENT_TYPE: 例:text/html CURLINFO_REQUEST_SIZE: CURLINFO_HEADER_SIZE: CURLINFO_SIZE_DOWNLOAD: 下载总字节量 CURLINFO_SIZE_UPLOAD: CURLINFO_HTTPAUTH_AVAIL: 接收掩码表明身份验证 CURLINFO_PROXYAUTH_AVAIL: 接收掩码表明代理身份验证 CURLINFO_COOKIELIST: 部份使用 INFO_ 如:INFO_COOKIELIST