python 基本认证
# import requests
#
# response = requests.get('http://127.0.0.1:8080/manager/html', auth=('tomcat', 'tomcat'))
# print(response.content.decode())
import base64
import re
import urllib.request
from urllib.error import HTTPError
class BasicAuth(object):
def __init__(self, username, password, realm=''):
auth_str = f"{username}:{password}"
encode = base64.standard_b64encode(auth_str.encode()).decode()
auth_str = f'Basic {encode}'
self.auth = auth_str
self.realm = realm
def open(self, url):
request = urllib.request.Request(url)
try:
response = urllib.request.urlopen(request)
return response
except HTTPError as e:
auth_type = e.headers['www-authenticate']
auth_str = re.compile(
'(?P<schema>\w*)\s*realm=[\'"](?P<realm>[^\'"]*)[\'"]',
re.IGNORECASE)
match_ = auth_str.match(auth_type)
if match_:
match = match_.groupdict()
schema = match.get('schema')
if schema.lower() == 'basic':
request.add_header("Authorization", self.auth)
try:
response = urllib.request.urlopen(request)
print(response.read().decode())
return response
except HTTPError as e:
print(e.headers)
# base = BasicAuth('tomcat', 'tomcat')
# base.open('http://127.0.0.1:8080/manager/html')
basic_auth = urllib.request.HTTPPasswordMgrWithDefaultRealm()
basic_auth.add_password(None, 'http://127.0.0.1:8080/manager/html', 'tomcat', 'tomcat')
handler = urllib.request.HTTPBasicAuthHandler(basic_auth)
opener = urllib.request.build_opener(handler)
urllib.request.install_opener(opener)
response = urllib.request.urlopen('http://127.0.0.1:8080/manager/html')
print(response.read().decode())
python 基本认证的更多相关文章
- Python api认证
本节内容: 基本的api 升级的api 终极版api 环境:Djanao, 项目名:api_auto, app:api 角色:api端,客户端,黑客端 1.基本的api [api端] #api_aut ...
- python http认证
Requests 库有一个auth 模块专门用来处理HTTP 认证: import requestsfrom requests.auth import AuthBasefrom requests.au ...
- python 自动认证登录
import urllib import base64 import urllib2 def auto_login(urllink,username,password): authstr = 'Bas ...
- CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
安装 系统环境:CentOS 6.5 安装依赖 yum -y install gcc gcc-c++ make git patch openssl-devel zlib-devel readline- ...
- Django用openLDAP做认证
前言 之前有需求要做一个django+ldap用户管理的简单接口,研究了好几个模块,最后终于能实现django用ldap做用户认证了.也是自己的水平有限吧,做了好长时间,现在就和大家分享一下这个过程吧 ...
- 用pyenv和virtualenv搭建单机多版本python虚拟开发环境
作为主流开发语言, 用python 开发的程序越来越多. 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始. 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试 ...
- 用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
作为主流开发语言, 用python 开发的程序越来越多. 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始. 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试 ...
- 使用kafka-python客户端进行kafka kerberos认证
之前说过python confluent kafka客户端做kerberos认证的过程,如果使用kafka python客户端的话同样也可以进行kerberos的认证,具体的认证机制这里不再描述,主要 ...
- drf-Authentication认证
drf-Authentication认证 ## 源码分析 ```python """ 1)APIView的dispath(self, request, *args, ** ...
随机推荐
- 后端视角下的前端框架之Vue.js初探
背景 作为常年搞后端的自己来说,除了多年前学习的一点关于HTML的皮毛,对现在的前端技术栈可谓是一窍不通.但是因为最近在做的内部业务全链路监控系统,负责前端的同事做到一半去搞别的项目了,为了把项目落地 ...
- KindEditor 取不到值 与清空不掉值
var editor; KindEditor.ready(function(K) { editor = K.create('textarea[name="content"]', { ...
- 1、Altium Designer 入门
一.新建工程 File-->new-->Project-->newPCB Project 1.添加原理图 在Project面板选中项目,右键Add New to Project--& ...
- 读spring源码(二)-XmlBeanDefinitionReader-解析BeanDefinition
上次说到ApplicationContext加载BeanDefinition时会创建一个XmlBeanDefinitionReader,将XML解析.BeanDefinition加载委托给XmlBea ...
- c++ Qt向PHP接口POST文件流
Qt调用PHP写的接口,向其传递图片文件,并保存在服务器. 二进制文件无法直接传递,Qt采用Base64进行编码发送,PHP解码保存为文件. 注意:PHP收到数据之后会将POST过来的数据中的加号(+ ...
- python中的MySQL使用 + pickle使用
(1)python中有一个包“sqlite3”,可以用来进行数据库相关的操作: 参考下面一个例子: import sqlite3 import pickle img_list = [('a' , 0) ...
- Rollup.js 实践
音乐分享: B.o.B Ft. Marko Penn - <Roll up> ——————————————————————————————————————————————————————— ...
- mysql 锁的现象和解决
2018-12-3 14:43:11 星期一 数据库锁了的现象: 一个进程进程一直在尝试更新, 而且杀不掉, 重启mysql以后还是会有; 一个update语句执行了很久; 写的业务都不可以, 查询也 ...
- nginx conf_ctx ****
http://blog.chinaunix.net/uid-27767798-id-3840094.html 断断续续看完了,还是没有全部清晰
- webpack打包文件
npm init -y//生成package.json npm install webpack webpack-cli --save-dev//安装webpack和webpack-cli根据入口文件. ...