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查找相似单词的方法
Mar 05 Python
Python实现的批量下载RFC文档
Mar 10 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
Numpy数组转置的两种实现方法
Apr 17 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
postman和python mock测试过程图解
Feb 22 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
详解python程序中的多任务
Sep 16 Python
Django路由层URLconf作用及原理解析
Sep 24 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
10款实用的PHP开源工具
2015/10/23 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
有关Python的22个编程技巧
2018/08/29 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
DogBuddy荷兰:找到你最完美的狗保姆
2019/04/17 全球购物
机电一体化专业应届生求职信
2013/11/27 职场文书
思想政治教育专业个人求职信范文
2013/12/20 职场文书
企业申诉管理制度
2014/01/30 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android