python关于SSL的认证--pycurl模块使用
今天在做微信支付退款接口的时候,因为需要使用到双向证书的认证,所以一开始是没有头绪的,后来在网上找到了相类似的教程,发现了pycurl模块,才成功实现了证书认证,教程链接:http://blog.csdn.net/yueguanghaidao/article/details/41451711/。
然后因为是直接copy下来的代码,所以自己后面花了点时间来熟悉一下这个模块,因为我是想达到使用证书post的目的, 所以就编写了一个函数
def postXmlSSL(self, xml, url, second=30, cert=True, post=True):
# 使用证书进行post
curl = pycurl.Curl() #创建pcurl对象
curl.setopt(pycurl.SSL_VERIFYHOST, False) #对于某些采用HTTPS的网站,有时会因为证书验证失败而无法正常访问,pycurl模块提供了取消验证过程的功能。
curl.setopt(pycurl.SSL_VERIFYPEER, False)
curl.setopt(pycurl.HEADER, False) #设置不输出header
curl.setopt(pycurl.URL, url) #设置url
curl.setopt(pycurl.TIMEOUT, second) #连接超时时间
if cert: #如果是存在证书,就会有证书和密钥,python使用的是两个pem证书,然后定义类型,输入证书路径就ok了。
curl.setopt(pycurl.SSLKEYTYPE, "PEM")
curl.setopt(pycurl.SSLKEY, "###")
curl.setopt(pycurl.SSLCERTTYPE, "PEM")
curl.setopt(pycurl.SSLCERT, "###")
if post: #使用的是post方法,然后post内容是xml格式的。
curl.setopt(pycurl.POST, True)
curl.setopt(pycurl.POSTFIELDS, xml)
buff = BytesIO() #python3使用的是io模块的字节流,而不是教程中的StingIO,那个是python2使用的
curl.setopt(pycurl.WRITEFUNCTION, buff.write) #pycurl模块不具备存储的功能,所以将数据写入字节流当中 curl.perform() #执行操作
return buff.getvalue().decode("utf-8") #返回字节流中的数据,返回之前要解码,我是从微信接口获取的数据,所以是用utf-8来解码。
搞完这些发现了一个专门讲pycurl模块的文档,哔了狗,要是早点发现就好了。。。。贴出文档链接:https://mp.weixin.qq.com/s?__biz=MzIwMDYxMjgyMg==&mid=2650361142&idx=1&sn=b11ad13a718b8c91280eab1ffbe62b98
python关于SSL的认证--pycurl模块使用的更多相关文章
- python pycurl模块
一.pycurl概述 PycURl是一个C语言写的libcurl的python绑定库.libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库.它的功能很强大,在PyCURL的主页上介 ...
- Python 的PyCurl模块使用
PycURl是一个C语言写的libcurl的python绑定库.libcurl 是一个自由的,并且容易使用的用在客户端的 URL 传输库.它的功能很强大,PycURL 是一个非常快速(参考多并发操作) ...
- 6.python探测Web服务质量方法之pycurl模块
才开始学习的时候有点忽略了这个模块,觉得既然Python3提供了requests库,为什么多此一举学习这个模块.后来才发现pycurl在探测Web服务器的时候的强大. pycurl是一个用c语言写的l ...
- 转python版本的curl工具pycurl学习
一 pycurl介绍 pycurl模块为libcurl库提供了一个python接口.libcurl是一个开源免费且方便快捷的基于客户端的url传输库,支持FTP,HTTP,HTTPS,IMAP,IMA ...
- Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块
Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fab ...
- python学习之算法、自定义模块、系统标准模块(上)
算法.自定义模块.系统标准模块(time .datetime .random .OS .sys .hashlib .json和pickle) 一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1. ...
- Django 2.0 学习(17):Django 用户认证(auth模块)
Django 用户认证(auth模块) 一.认证登陆 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中:如果用户存在于数据库中,然后再验证用户输入 ...
- 在 kafka 的 broke 和 client 之间加入 SSL 双向认证
在 kafka 的 broke 和 client 之间加入 SSL 双向认证https://blog.csdn.net/hohoo1990/article/details/79110031 kafka ...
- http服务需要pycurl模块这样去监控服务
最近运维还是比较空闲,写篇自己的心得体会.做过运维的应该都做过http服务了.像一些电子商城,或者是一些互联网公司,web的服务之类是至关重要的,近期看了刘天斯大哥的书觉得自己运维平台应该也可以这样去 ...
随机推荐
- apicloud含有微信支付。支付宝支付和苹果内购的代码
apicloud含有微信支付.支付宝支付和苹果内购的代码 <!DOCTYPE html> <html> <head> <meta charset=" ...
- XML配置报错
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springfram ...
- StringBuild
* StringBuild 初始容量是 32 * 1.属性: * Length:现有内容长度: * Capacity:StringBuild当前最大容量 * * 2. * 通过 设置Length=10 ...
- 【转】gdb的调试与使用
转载自:https://www.jianshu.com/p/7a06b0bda2d8 gdb的调试与使用 这篇应该是我见过的总结最详细的gdb调试指南了,这位博主是个很强的人,他的博客对萌新比较友好, ...
- 再次体会wireshark的威力!
今天一位同学给我打电话,说是重启了客户机房里的一台服务器A,重启之后此台服务器不能与B服务器通信了,要命的是A台服务器上有关键数据需要与B服务器进行通信交互.客户大发雷霆,同学的老板也发火一再催促要尽 ...
- python 异常try/except语句
异常模式的写法 try: 执行正常的模块 except X: 执行异常X的代码 except: 其他的异常执行模块except 必须在except X之后 else: 没有异常,则会执行完try,而后 ...
- day2_窗口句柄切换
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/7/16 14:21 # @Author : 大坏男孩 # @File : d ...
- day7_面向对象特性
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/7/12 14:50 # @Author : 大坏男孩 # @File : d ...
- 使用python发邮件:
import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr#定义发送的内容:msg = M ...
- vue-cli2 打包
npm run build 打包安装 相当于静态资源 解决vue-cli项目打包出现空白页和路径错误的问题 路径错误的问题解决方式: 打开config文件夹下的 index.js 找到如下图所示区域: ...