python 模块部分补充知识
一、hashlib
hashlib 模块主要用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。
实例代码:
- import hashlib
- # ######## md5 ########
- hash = hashlib.md5()
- # help(hash.update)
- hash.update(bytes('admin', encoding='utf-8'))
- print(hash.hexdigest())
- print(hash.digest())
- ######## sha1 ########
- hash = hashlib.sha1()
- hash.update(bytes('admin', encoding='utf-8'))
- print(hash.hexdigest())
- # ######## sha256 ########
- hash = hashlib.sha256()
- hash.update(bytes('admin', encoding='utf-8'))
- print(hash.hexdigest())
- # ######## sha384 ########
- hash = hashlib.sha384()
- hash.update(bytes('admin', encoding='utf-8'))
- print(hash.hexdigest())
- # ######## sha512 ########
- hash = hashlib.sha512()
- hash.update(bytes('admin', encoding='utf-8'))
- print(hash.hexdigest())
以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
- import hashlib
- # ######## md5 ########
- hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8"))
- hash.update(bytes('admin',encoding="utf-8"))
- print(hash.hexdigest())
python内置还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密。
- import hmac
- h = hmac.new(bytes('898oaFs09f',encoding="utf-8"))
- h.update(bytes('admin',encoding="utf-8"))
- print(h.hexdigest())
二、requests
Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。
- import urllib.request
- f=urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
- result = f.read().decode('utf-8')
- import urllib.request
- req = urllib.request.Request('http://www.example.com/')
- req.add_header('Referer', 'http://www.python.org/')
- r = urllib.request.urlopen(req)
- result = f.read().decode('utf-8')
Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。
使用:
- # 1、无参数实例
- import requests
- ret = requests.get('https://github.com/timeline.json')
- print(ret.url)
- print(ret.text)
- # 2、有参数实例
- import requests
- payload = {'key1': 'value1', 'key2': 'value2'}
- ret = requests.get("http://httpbin.org/get", params=payload)
- print(ret.url)
- print(ret.text)
- GET请求
GET请求
- # 1、基本POST实例
- import requests
- payload = {'key1': 'value1', 'key2': 'value2'}
- ret = requests.post("http://httpbin.org/post", data=payload)
- print(ret.text)
- # 2、发送请求头和数据实例
- import requests
- import json
- url = 'https://api.github.com/some/endpoint'
- payload = {'some': 'data'}
- headers = {'content-type': 'application/json'}
- ret = requests.post(url, data=json.dumps(payload), headers=headers)
- print(ret.text)
- print(ret.cookies)
- POST请求
POST请求
- requests.get(url, params=None, **kwargs)
- requests.post(url, data=None, json=None, **kwargs)
- requests.put(url, data=None, **kwargs)
- requests.head(url, **kwargs)
- requests.delete(url, **kwargs)
- requests.patch(url, data=None, **kwargs)
- requests.options(url, **kwargs)
- # 以上方法均是在此方法的基础上构建
- requests.request(method, url, **kwargs)
- 其他请求
其他请求
实例演示:
- 实例:查看火车停靠信息
- import urllib
- import requests
- from xml.etree import ElementTree as ET
- # 使用内置模块urllib发送HTTP请求,或者XML格式内容
- """
- f = urllib.request.urlopen('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
- result = f.read().decode('utf-8')
- """
- # 使用第三方模块requests发送HTTP请求,或者XML格式内容
- r = requests.get('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
- result = r.text
- # 解析XML格式内容
- root = ET.XML(result)
- for node in root.iter('TrainDetailInfo'):
- print(node.find('TrainStation').text,node.find('StartTime').text,node.tag,node.attrib)
实例:查看火车停靠信息
三、paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。
1、下载安装:
- pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
- pip3 install pycrypto
- pip3 install paramiko
2、模块使用:
- #!/usr/bin/env python
- #coding:utf-8
- import paramiko
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect('192.168.1.108', 22, 'alex', '')
- stdin, stdout, stderr = ssh.exec_command('df')
- print stdout.read()
- ssh.close();
- 执行命令 - 用户名+密码
- import paramiko
- private_key_path = '/home/auto/.ssh/id_rsa'
- key = paramiko.RSAKey.from_private_key_file(private_key_path)
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect('主机名 ', 端口, '用户名', key)
- stdin, stdout, stderr = ssh.exec_command('df')
- print stdout.read()
- ssh.close()
- 执行命令 - 密钥
- import os,sys
- import paramiko
- t = paramiko.Transport(('182.92.219.86',22))
- t.connect(username='wupeiqi',password='')
- sftp = paramiko.SFTPClient.from_transport(t)
- sftp.put('/tmp/test.py','/tmp/test.py')
- t.close()
- import os,sys
- import paramiko
- t = paramiko.Transport(('182.92.219.86',22))
- t.connect(username='wupeiqi',password='')
- sftp = paramiko.SFTPClient.from_transport(t)
- sftp.get('/tmp/test.py','/tmp/test2.py')
- t.close()
- 上传或下载文件 - 用户名+密码
- import paramiko
- pravie_key_path = '/home/auto/.ssh/id_rsa'
- key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
- t = paramiko.Transport(('182.92.219.86',22))
- t.connect(username='wupeiqi',pkey=key)
- sftp = paramiko.SFTPClient.from_transport(t)
- sftp.put('/tmp/test3.py','/tmp/test3.py')
- t.close()
- import paramiko
- pravie_key_path = '/home/auto/.ssh/id_rsa'
- key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
- t = paramiko.Transport(('182.92.219.86',22))
- t.connect(username='wupeiqi',pkey=key)
- sftp = paramiko.SFTPClient.from_transport(t)
- sftp.get('/tmp/test3.py','/tmp/test4.py')
- t.close()
- 上传或下载文件 - 密钥
python 模块部分补充知识的更多相关文章
- 多表查询思路、navicat可视化软件、python操作MySQL、SQL注入问题以及其他补充知识
昨日内容回顾 外键字段 # 就是用来建立表与表之间的关系的字段 表关系判断 # 一对一 # 一对多 # 多对多 """通过换位思考判断""" ...
- 7.python模块补充
此文章是对上节文章模块的补充 一,xml模块 xml是实现不同语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.xml的格式如下 ...
- 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议
Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...
- 031医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------sql补充知识
这个补充知识有一个点很有必要,视屏上的老师提出一点: 内链接关联查询: 如果表A和表B有一个外键关联 ,可以通过外键进行内链接查询 select dictinfo.*, dicttype.typena ...
- #【Python】【基础知识】【模块】【Python的常用模块】
在IDE解释器中,执行help('modules')可查看当前环境可调用的Python模块: >>> help('modules') Please wait a moment whi ...
- python 模块和包的基础知识
1.常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀 2.为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理.这时我们不仅 ...
- python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化
1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fal ...
- Python模块的介绍
Python模块的学习: 1.os模块: 下面只对os模块中几个比较常用的方法做一些简单的示例: os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在do ...
- python/数据库操作补充—模板—Session
python/数据库操作补充—模板—Session 一.创建一个app目录 在models.py只能类进行进行创建表 class Foo: xx= 字段(数据库数据类型) 字段类型 字符串 Email ...
随机推荐
- ECharts组件应用样例代码
一.从Echarts官网上下载最新版本组件 Echarts是百度开发的开源Web图表组件,界面美观,使用简单.组件下载地址:http://echarts.baidu.com/echarts2/doc/ ...
- 清除input[type=number]的默认样式
input[type=number] { -moz-appearance:textfield; } input[type=number]::-webkit-inner-spin-button, inp ...
- MyBatis笔记03
1.动态sql 01.if:单独使用if,后面必须有where 1=1 代码:<!-- 需要注意的事项:01. 在xml文件中 特殊字符的使用 &&必须换成 and或者 & ...
- c# MongoDB Driver 官方教程翻译
先贴官方文档地址:http://mongodb.github.io/mongo-csharp-driver/2.5/getting_started/quick_tour/ 安装部分很简单,nuget搜 ...
- Devstack 安装OpenStack Pike版本(单机环境)
问题背景 最近在研究OpenStack的时候,需要对其源代码进行调试,公司服务器上部署的OpenStack环境又不能随意的进行折腾,为了研究的持续性和方便性,就决定再自己的虚拟机上面使用Devstac ...
- FTP站点设置
0x00前言: 应老师今天教的和题目所需 有了今天的博文 0x01准备: windows server 2008 FTP服务 0x02正文: 1.先安装FTP服务 先打开--服务器管理 点击--添加角 ...
- 引用第三方dll引发的问题解决
引用的程序集错误 如果引用第三方dll,调试出现引用的程序集出现错误,可以下载dependency,查看这个dll的依赖dll,如果本地电脑没有依赖dll或依赖dll出现问题,则下载或取代依赖dll ...
- Algorithm --> 投资组和求最大利润
投资组和求最大利润 题目: 投资人出资一笔费用mount,投资给不同的公司(A,B,C....),求最大获取利润? 例如:投资400百万,给出两家公司A和B: 1.如果投资一百万给A公司,投资3百万给 ...
- Algorithm --> 二分图最大匹配
匈牙利算法 二分图:把一个图的顶点划分为两个不相交集 U 和 V ,使得每一条边都分别连接U . V 中的顶点.如果存在这样的划分,则此图为一个二分图. 匹配:在图论中,一个「匹配」(match ...
- Java 并发编程实践基础 读书笔记: 第一章 JAVA并发编程实践基础
1.创建线程的方式: /** * StudySjms * <p> * Created by haozb on 2018/2/28. */ public class ThreadDemo e ...