python pycurl验证basic和digest认证的方法


Posted in Python onMay 02, 2018

简介

pycurl类似于Python的urllib,但是pycurl是对libcurl的封装,速度更快。

本文使用的是pycurl 7.43.0.1版本。

Apache下配置Basic认证

生成basic密码文件

htpasswd -bc passwd.basic test 123456

开启mod_auth_basic

LoadModule auth_basic_module modules/mod_auth_basic.so

配置到具体目录

<Directory "D:/test/basic">
  AuthName "Basic Auth Dir"
  AuthType Basic
  AuthUserFile conf/passwd.basic
  require valid-user
</Directory>

重启Apache

Apache下配置Digest认证

生成Digest密码文件

htdigest -c passwd.digest "Digest Encrypt" test

开启mod_auth_digest

LoadModule auth_digest_module modules/mod_auth_digest.so

配置到具体目录

<Directory "D:/test/digest">
  AuthType Digest
  AuthName "Digest Encrypt" # 要与密码的域一致
  AuthDigestProvider file
  AuthUserFile conf/passwd.digest
  require valid-user
</Directory>

重启Apache

验证Basic认证

# -*- coding: utf-8 -*-
import pycurl
try:
  from io import BytesIO
except ImportError:
  from StringIO import StringIO as BytesIO
buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'http://test/basic/')
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.HTTPAUTH, c.HTTPAUTH_BASIC)
c.setopt(c.USERNAME, 'test')
c.setopt(c.PASSWORD, '123456')
c.perform()
print('Status: %d' % c.getinfo(c.RESPONSE_CODE))
print(buffer.getvalue())
c.close()

验证Digest认证

# -*- coding: utf-8 -*-
import pycurl
try:
  from io import BytesIO
except ImportError:
  from StringIO import StringIO as BytesIO
buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'http://test/digest/')
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.HTTPAUTH, c.HTTPAUTH_DIGEST)
c.setopt(c.USERNAME, 'test')
c.setopt(c.PASSWORD, '123456')
c.perform()
print('Status: %d' % c.getinfo(c.RESPONSE_CODE))
print(buffer.getvalue())
c.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的简单dns查询功能示例
May 24 Python
Python 错误和异常代码详解
Jan 29 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
Python的log日志功能及设置方法
Jul 11 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
django ajax发送post请求的两种方法
Jan 05 Python
pytorch中的自定义数据处理详解
Jan 06 Python
python获取栅格点和面值的实现
Mar 10 Python
python属于解释语言吗
Jun 11 Python
pandas DataFrame运算的实现
Jun 14 Python
只用20行Python代码实现屏幕录制功能
Jun 02 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 #Python
用TensorFlow实现戴明回归算法的示例
May 02 #Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 #Python
Python实现确认字符串是否包含指定字符串的实例
May 02 #Python
详解用TensorFlow实现逻辑回归算法
May 02 #Python
Python获取指定字符前面的所有字符方法
May 02 #Python
Python 查找字符在字符串中的位置实例
May 02 #Python
You might like
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
JQuery基础语法小结
2015/02/27 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python类型强制转换long to int的代码
2013/02/10 Python
python之super的使用小结
2018/08/13 Python
Python类反射机制使用实例解析
2019/12/30 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
学python最电脑配置有要求么
2020/07/05 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
泰国第一在线超市:Tops
2021/02/13 全球购物
积极向上的团队口号
2014/06/06 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
学生会个人总结范文
2015/02/15 职场文书