一、hashlib

hashlib 模块主要用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。

实例代码:

  1. import hashlib
  2.  
  3. # ######## md5 ########
  4. hash = hashlib.md5()
  5. # help(hash.update)
  6. hash.update(bytes('admin', encoding='utf-8'))
  7. print(hash.hexdigest())
  8. print(hash.digest())
  9.  
  10. ######## sha1 ########
  11.  
  12. hash = hashlib.sha1()
  13. hash.update(bytes('admin', encoding='utf-8'))
  14. print(hash.hexdigest())
  15.  
  16. # ######## sha256 ########
  17.  
  18. hash = hashlib.sha256()
  19. hash.update(bytes('admin', encoding='utf-8'))
  20. print(hash.hexdigest())
  21.  
  22. # ######## sha384 ########
  23.  
  24. hash = hashlib.sha384()
  25. hash.update(bytes('admin', encoding='utf-8'))
  26. print(hash.hexdigest())
  27.  
  28. # ######## sha512 ########
  29.  
  30. hash = hashlib.sha512()
  31. hash.update(bytes('admin', encoding='utf-8'))
  32. print(hash.hexdigest())

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

  1. import hashlib
  2.  
  3. # ######## md5 ########
  4.  
  5. hash = hashlib.md5(bytes('898oaFs09f',encoding="utf-8"))
  6. hash.update(bytes('admin',encoding="utf-8"))
  7. print(hash.hexdigest())

python内置还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密。

  1. import hmac
  2.  
  3. h = hmac.new(bytes('898oaFs09f',encoding="utf-8"))
  4. h.update(bytes('admin',encoding="utf-8"))
  5. print(h.hexdigest())

二、requests

Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

  1. import urllib.request
  2.  
  3. f=urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
  4. result = f.read().decode('utf-8')
  1. import urllib.request
  2.  
  3. req = urllib.request.Request('http://www.example.com/')
  4. req.add_header('Referer', 'http://www.python.org/')
  5. r = urllib.request.urlopen(req)
  6.  
  7. result = f.read().decode('utf-8')

Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

使用:

  1. # 1、无参数实例
  2.  
  3. import requests
  4.  
  5. ret = requests.get('https://github.com/timeline.json')
  6.  
  7. print(ret.url)
  8. print(ret.text)
  9.  
  10. # 2、有参数实例
  11.  
  12. import requests
  13.  
  14. payload = {'key1': 'value1', 'key2': 'value2'}
  15. ret = requests.get("http://httpbin.org/get", params=payload)
  16.  
  17. print(ret.url)
  18. print(ret.text)
  19.  
  20. GET请求

GET请求

  1. # 1、基本POST实例
  2.  
  3. import requests
  4.  
  5. payload = {'key1': 'value1', 'key2': 'value2'}
  6. ret = requests.post("http://httpbin.org/post", data=payload)
  7.  
  8. print(ret.text)
  9.  
  10. # 2、发送请求头和数据实例
  11.  
  12. import requests
  13. import json
  14.  
  15. url = 'https://api.github.com/some/endpoint'
  16. payload = {'some': 'data'}
  17. headers = {'content-type': 'application/json'}
  18.  
  19. ret = requests.post(url, data=json.dumps(payload), headers=headers)
  20.  
  21. print(ret.text)
  22. print(ret.cookies)
  23.  
  24. POST请求

POST请求

  1. requests.get(url, params=None, **kwargs)
  2. requests.post(url, data=None, json=None, **kwargs)
  3. requests.put(url, data=None, **kwargs)
  4. requests.head(url, **kwargs)
  5. requests.delete(url, **kwargs)
  6. requests.patch(url, data=None, **kwargs)
  7. requests.options(url, **kwargs)
  8.  
  9. # 以上方法均是在此方法的基础上构建
  10. requests.request(method, url, **kwargs)
  11.  
  12. 其他请求

其他请求

实例演示:

  1. 实例:查看火车停靠信息
  2.  
  3. import urllib
  4. import requests
  5. from xml.etree import ElementTree as ET
  6.  
  7. # 使用内置模块urllib发送HTTP请求,或者XML格式内容
  8. """
  9. f = urllib.request.urlopen('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
  10. result = f.read().decode('utf-8')
  11. """
  12.  
  13. # 使用第三方模块requests发送HTTP请求,或者XML格式内容
  14. r = requests.get('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
  15. result = r.text
  16.  
  17. # 解析XML格式内容
  18. root = ET.XML(result)
  19. for node in root.iter('TrainDetailInfo'):
  20. print(node.find('TrainStation').text,node.find('StartTime').text,node.tag,node.attrib)

实例:查看火车停靠信息

三、paramiko 

    paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

1、下载安装:

  1. pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
  2. pip3 install pycrypto
  3. pip3 install paramiko

2、模块使用:

  1. #!/usr/bin/env python
  2. #coding:utf-8
  3.  
  4. import paramiko
  5.  
  6. ssh = paramiko.SSHClient()
  7. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  8. ssh.connect('192.168.1.108', 22, 'alex', '')
  9. stdin, stdout, stderr = ssh.exec_command('df')
  10. print stdout.read()
  11. ssh.close();
  12.  
  13. 执行命令 - 用户名+密码
  1. import paramiko
  2.  
  3. private_key_path = '/home/auto/.ssh/id_rsa'
  4. key = paramiko.RSAKey.from_private_key_file(private_key_path)
  5.  
  6. ssh = paramiko.SSHClient()
  7. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  8. ssh.connect('主机名 ', 端口, '用户名', key)
  9.  
  10. stdin, stdout, stderr = ssh.exec_command('df')
  11. print stdout.read()
  12. ssh.close()
  13.  
  14. 执行命令 - 密钥
  1. import os,sys
  2. import paramiko
  3.  
  4. t = paramiko.Transport(('182.92.219.86',22))
  5. t.connect(username='wupeiqi',password='')
  6. sftp = paramiko.SFTPClient.from_transport(t)
  7. sftp.put('/tmp/test.py','/tmp/test.py')
  8. t.close()
  9.  
  10. import os,sys
  11. import paramiko
  12.  
  13. t = paramiko.Transport(('182.92.219.86',22))
  14. t.connect(username='wupeiqi',password='')
  15. sftp = paramiko.SFTPClient.from_transport(t)
  16. sftp.get('/tmp/test.py','/tmp/test2.py')
  17. t.close()
  18.  
  19. 上传或下载文件 - 用户名+密码
  1. import paramiko
  2.  
  3. pravie_key_path = '/home/auto/.ssh/id_rsa'
  4. key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
  5.  
  6. t = paramiko.Transport(('182.92.219.86',22))
  7. t.connect(username='wupeiqi',pkey=key)
  8.  
  9. sftp = paramiko.SFTPClient.from_transport(t)
  10. sftp.put('/tmp/test3.py','/tmp/test3.py')
  11.  
  12. t.close()
  13.  
  14. import paramiko
  15.  
  16. pravie_key_path = '/home/auto/.ssh/id_rsa'
  17. key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
  18.  
  19. t = paramiko.Transport(('182.92.219.86',22))
  20. t.connect(username='wupeiqi',pkey=key)
  21.  
  22. sftp = paramiko.SFTPClient.from_transport(t)
  23. sftp.get('/tmp/test3.py','/tmp/test4.py')
  24.  
  25. t.close()
  26.  
  27. 上传或下载文件 - 密钥

python 模块部分补充知识的更多相关文章

  1. 多表查询思路、navicat可视化软件、python操作MySQL、SQL注入问题以及其他补充知识

    昨日内容回顾 外键字段 # 就是用来建立表与表之间的关系的字段 表关系判断 # 一对一 # 一对多 # 多对多 """通过换位思考判断""" ...

  2. 7.python模块补充

    此文章是对上节文章模块的补充 一,xml模块 xml是实现不同语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.xml的格式如下 ...

  3. 8.6 day27 网络编程 osi七层协议 Time模块补充知识 TCP协议

    Time模块补充知识 date和datetime区别是什么? date 就是年月日 datetime就是年月时时分秒 以下代码为什么会报错? import json from datetime imp ...

  4. 031医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------sql补充知识

    这个补充知识有一个点很有必要,视屏上的老师提出一点: 内链接关联查询: 如果表A和表B有一个外键关联 ,可以通过外键进行内链接查询 select dictinfo.*, dicttype.typena ...

  5. #【Python】【基础知识】【模块】【Python的常用模块】

    在IDE解释器中,执行help('modules')可查看当前环境可调用的Python模块: >>> help('modules') Please wait a moment whi ...

  6. python 模块和包的基础知识

    1.常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀 2.为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理.这时我们不仅 ...

  7. python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

    1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fal ...

  8. Python模块的介绍

    Python模块的学习: 1.os模块: 下面只对os模块中几个比较常用的方法做一些简单的示例: os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在do ...

  9. python/数据库操作补充—模板—Session

    python/数据库操作补充—模板—Session 一.创建一个app目录 在models.py只能类进行进行创建表 class Foo: xx= 字段(数据库数据类型) 字段类型 字符串 Email ...

随机推荐

  1. ECharts组件应用样例代码

    一.从Echarts官网上下载最新版本组件 Echarts是百度开发的开源Web图表组件,界面美观,使用简单.组件下载地址:http://echarts.baidu.com/echarts2/doc/ ...

  2. 清除input[type=number]的默认样式

    input[type=number] { -moz-appearance:textfield; } input[type=number]::-webkit-inner-spin-button, inp ...

  3. MyBatis笔记03

    1.动态sql 01.if:单独使用if,后面必须有where 1=1 代码:<!-- 需要注意的事项:01. 在xml文件中 特殊字符的使用 &&必须换成 and或者 & ...

  4. c# MongoDB Driver 官方教程翻译

    先贴官方文档地址:http://mongodb.github.io/mongo-csharp-driver/2.5/getting_started/quick_tour/ 安装部分很简单,nuget搜 ...

  5. Devstack 安装OpenStack Pike版本(单机环境)

    问题背景 最近在研究OpenStack的时候,需要对其源代码进行调试,公司服务器上部署的OpenStack环境又不能随意的进行折腾,为了研究的持续性和方便性,就决定再自己的虚拟机上面使用Devstac ...

  6. FTP站点设置

    0x00前言: 应老师今天教的和题目所需 有了今天的博文 0x01准备: windows server 2008 FTP服务 0x02正文: 1.先安装FTP服务 先打开--服务器管理 点击--添加角 ...

  7. 引用第三方dll引发的问题解决

    引用的程序集错误  如果引用第三方dll,调试出现引用的程序集出现错误,可以下载dependency,查看这个dll的依赖dll,如果本地电脑没有依赖dll或依赖dll出现问题,则下载或取代依赖dll ...

  8. Algorithm --> 投资组和求最大利润

    投资组和求最大利润 题目: 投资人出资一笔费用mount,投资给不同的公司(A,B,C....),求最大获取利润? 例如:投资400百万,给出两家公司A和B: 1.如果投资一百万给A公司,投资3百万给 ...

  9. Algorithm --> 二分图最大匹配

     匈牙利算法 二分图:把一个图的顶点划分为两个不相交集 U  和 V ,使得每一条边都分别连接U . V  中的顶点.如果存在这样的划分,则此图为一个二分图. 匹配:在图论中,一个「匹配」(match ...

  10. Java 并发编程实践基础 读书笔记: 第一章 JAVA并发编程实践基础

    1.创建线程的方式: /** * StudySjms * <p> * Created by haozb on 2018/2/28. */ public class ThreadDemo e ...