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 27 Python
Python中的urllib模块使用详解
Jul 07 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
python实现画一颗树和一片森林
Jun 25 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
在Pandas中处理NaN值的方法
Jun 25 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
python数据预处理方式 :数据降维
Feb 24 Python
详解Python yaml模块
Sep 23 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实现简单的计算器
2020/08/28 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
JavaScript canvas实现文字时钟
2021/01/10 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
详解Python多线程
2016/11/14 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
Python中is与==判断的区别
2017/03/28 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
教师考察材料范文
2014/06/03 职场文书
师范生见习报告范文
2014/11/03 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书