一、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. 【noip模拟】局部最小值

    TimeLimit: 1000ms               MemoryLimit: 256MB Description 有一个n行m列的整数矩阵,其中1到n×m之间的每个整数恰好出现一次.如果一 ...

  2. UML 中extend和include的区别

    在UML用例图中有两种关系——包含和扩展,容易混淆,下面通过一张表来区别一下这两种关系.

  3. C# Redis实战(五)

    五.删除数据 在C# Redis实战(四)中讲述了如何在Redis中写入key-value型数据,本篇将讲述如何删除Redis中数据. 1.void Delete(T entity);删除函数的运用 ...

  4. Django用户登录与注册系统

    一.创建项目 1.1.创建项目和app python manage.py startproject mysite_login python manage.py startapp login 1.2.设 ...

  5. 牛客小白月赛1 A-简单题

    描述 Etéreo 是个爱学习的好孩子.在年假期间,他依然热情于数学.他最近发现了一个高大上的东西:,他觉得这里的  非常的厉害!然后他又告诉你:,,他会告诉你  和  ,想请你告诉他  的值.当然这 ...

  6. 性能优化之reflow和repaint

    本文主要介绍一下什么是reflow,repaint, 怎样避免它们造成的不良影响, 怎么通过工具查看分析它们. 一.首先对浏览器渲染引擎下网页呈现过程简要说一下: 浏览器的渲染引擎开始解析html构建 ...

  7. 设计模式——桥接模式(C++实现)

    [root@ ~/learn_code/design_pattern/18_bridge]$ cat Abstraction.h #ifndef _ABSTRACTION_H_ #define _AB ...

  8. APIcloud 移动端常用事件

    1.监听按键事件 返回键 api.addEventListener({ name:'keyback' }, function(ret, err){ if( ret ){ alert( JSON.str ...

  9. IPFS: BitSwap协议(数据块交换)

    原创 2018-01-11 飞向未来 IPFS指南 BitSwap协议 IPFS节点之间是如何进行数据交换的?本文来讲一下这个问题. IPFS在BitTorrent的基础上实现了p2p数据交换协议:B ...

  10. python基础学习笔记一

    1.变量 为了节省内存,python解释器会对一些简单的字符串以及小整型数,做出一些优化,当要定义的新变量的内容与定义过的内容相同时,会让两者使用同一个内存空间. 例如: 在这个例子里面,'old'是 ...