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的Flask框架中实现单元测试的教程
Apr 20 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python实现的Excel文件读写类
Jul 30 Python
使用python遍历指定城市的一周气温
Mar 31 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
python创建与遍历List二维列表的方法
Aug 16 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
python爬虫要用到的库总结
Jul 28 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中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
为超链接加上disabled后的故事
2010/12/10 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
python求前n个阶乘的和实例
2020/04/02 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
幼儿园大班毕业感言
2014/02/06 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
清明节演讲稿
2014/05/27 职场文书
SQL Server内存机制浅探
2022/04/06 SQL Server