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 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
跟老齐学Python之Python文档
Oct 10 Python
在Python中使用列表生成式的教程
Apr 27 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Pytest参数化parametrize使用代码实例
Feb 22 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
python爬虫实现POST request payload形式的请求
Apr 30 Python
Python extract及contains方法代码实例
Sep 11 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读取和编写XML DOM的实现代码
2011/02/03 PHP
php读取3389的脚本
2014/05/06 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
Node.js事件驱动
2015/06/18 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
Python实现身份证号码解析
2015/09/01 Python
Python作用域用法实例详解
2016/03/15 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
党组织公开承诺书
2014/03/29 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers