服务器 python cant open file_python https 链接之pycurl | 学步园

pycurl 可以用在http和https上。

def headerCookie(buf):

print buf

def getEnterRandCode():#从12360得到登录验证码

#得到登录验证码图

curl = pycurl.Curl()

f = StringIO.StringIO()

curl.setopt(pycurl.URL, "https://www.12306.cn/otsweb/passCodeAction.do?rand=sjrand")

curl.setopt(pycurl.WRITEFUNCTION, f.write)

curl.setopt(pycurl.SSL_VERIFYPEER, 0)

curl.setopt(pycurl.SSL_VERIFYHOST, 0)

curl.setopt(pycurl.HEADERFUNCTION, headerCookie)

curl.setopt(pycurl.COOKIE,Cookie)

curl.perform()

backinfo = ''

if curl.getinfo(pycurl.RESPONSE_CODE) == 200:

backinfo = f.getvalue()

curl.close()

return backinfo

从上面可以得知,pycurl链接的大至流程

curl.setopt()#设置发送的数据参数

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: 强制所有请求使用验证

curl.setopt(pycurl.HTTPHEADER,["x-requested-with:XMLHttpRequest",

"Accept:text/plain, */*",

"Referer:https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=init"])

#这是https头

curl.setopt(pycurl.POSTFIELDS,senddata)这里是自己定义的发送数据

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: 例:textml

CURLINFO_REQUEST_SIZE:

CURLINFO_HEADER_SIZE:

CURLINFO_SIZE_DOWNLOAD: 下载总字节量

CURLINFO_SIZE_UPLOAD:

CURLINFO_HTTPAUTH_AVAIL: 接收掩码表明身份验证

CURLINFO_PROXYAUTH_AVAIL: 接收掩码表明代理身份验证

CURLINFO_COOKIELIST:

部份使用 INFO_ 如:INFO_COOKIELIST

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值