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类方法__init__和__del__构造、析构过程分析
Mar 06 Python
基于python实现微信模板消息
Dec 21 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
python list元素为tuple时的排序方法
Apr 18 Python
python递归法解决棋盘分割问题
Jul 17 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
python多线程高级锁condition简单用法示例
Nov 07 Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 Python
Django在Model保存前记录日志实例
May 14 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
Python的轻量级ORM框架peewee使用教程
Feb 05 Python
python学习之panda数据分析核心支持库
May 07 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
德劲1107的电路分析与打磨
2021/03/02 无线电
我用php+mysql写的留言本
2006/10/09 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
php中session退出登陆问题
2014/02/27 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
Python中多线程及程序锁浅析
2015/01/21 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python判断无向图环是否存在的示例
2019/11/22 Python
python3的pip路径在哪
2020/06/23 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
计算机专业自荐信
2013/10/14 职场文书
党章学习思想汇报
2014/01/14 职场文书
美德好少年事迹材料
2014/01/19 职场文书
教师自我鉴定范文
2014/03/20 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
预备党员入党感想
2015/08/10 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
Golang的继承模拟实例
2021/06/30 Golang
Spring实现内置监听器
2021/07/09 Java/Android
分享提高 Python 代码的可读性的技巧
2022/03/03 Python