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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
教你用python3根据关键词爬取百度百科的内容
Aug 18 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
django中模板的html自动转意方法
May 27 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
Python实现的微信支付方式总结【三种方式】
Apr 13 Python
python安装本地whl的实例步骤
Oct 12 Python
Python递归函数特点及原理解析
Mar 04 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
怎么使 Mysql 数据同步
2006/10/09 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
JS event使用方法详解
2008/04/28 Javascript
jQuery 入门讲解1
2009/04/15 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
python3 pygame实现接小球游戏
2019/05/14 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
小学教师的个人自我鉴定
2013/10/26 职场文书
会计学专业自荐信
2014/06/25 职场文书
期中考试复习计划
2015/01/19 职场文书
关于运动会的广播稿
2015/08/19 职场文书
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android