记录于笔者常用的模块的一些使用方法,基于
Python3
环境
模块
- Requests
- Hashlib
- Pillow
Requests
requests
官方文档:https://docs.python-requests.org/en/master/
Requests是使用Apache2 licensed 许可证的第三方HTTP库,使用python编写,在python内置的urllib模块的基础上进行了高度的封装,从而使得requests能更加简洁,方便,友好的处理URL资源。
requests
模块可使用pip
安装
pip install requests
模块导入
import requests
#导入模块
from requests import *
#导入模块里所有的元素
from requests import [具体元素]
#导入模块中的具体元素,一般用于导入某个具体函数
requests
支持很多HTTP请求方法,例如GET
、POST
、HEAD
、PUT
、DELETE
、OPTIONS
等,经常使用主要是GET
和POST
,其他的一些请求方法一般都会被服务器禁用。
resp = requests.get(
resp = requests.post(
这里的resp
是响应内容的对象,可以从这个对象中获取请求返回的信息,该对象常用的方法有如下:
resp.text 返回响应内容编码后的字符串(有时候会因为编码问题导致解析不正常,需要指定编码输出)
resp.content 返回响应内容的字节码数据
resp.ok 返回请求是否成功的布尔值
resp.url 返回请求的url
resp.raw 返回urllib的原始响应体
resp.status_code 返回http响应状态码
resp.headers 返回以字典对象形式的响应头
resp.cookies 返回响应内容中的cookie
resp.history 返回重定向记录信息
resp.request.headers 返回请求内容中的header信息
resp.request.body 返回整个请求内容的主体
请求方式的参数
设置超时时间,单位s(秒)
resp = requests.get(url=,timeout=1)
GET请求传递变量参数,例如username=mochu&password=1234567
myparams = {"username": "mochu","password": "1234567"}
resp = requests.get(url,params=myparams)
设置请求headers
myheaders = {'User-Agent': 'xxxxxxx', 'Accept': 'xxxxxxx'...}
resp = requests.get(url=',headers=myheaders)
设置cookie
mycookies = {'cookie1': 'xxxxxxx', 'cookie2': 'xxxxxxx'}
resp = requests.get(url=,cookies=mycookies)
POST请求传递参数
mydata = {'username': 'mochu7', 'password': '1234567'}
resp = requests.post(url=data=mydata)
设置代理
myproxies = {'http':'ip1','https':'ip2' }
requests.get(',proxies=myproxies)
推荐个Burp插件,用于从请求包从将请求信息转换成符合requests写法的代码数据,比较实用
Burp-requests: https://github.com/silentsignal/burp-requests/releases/
Hashlib
hashlib
官方文档:https://docs.python.org/zh-cn/3/library/hashlib.html
hashlib
模块定义了用于访问不同加密散列算法的API,使用不同的哈希算法。哈希算法又称摘要算法,散列算法,是通过函数的一系列的加密过程,并且不需要密钥,将任意长度的数据转化为一个长度固定的数据串,通常为16进制的字符串,该过程是不可逆的,只有输入相同的明文数据,经过相同的摘要算法才能得到一个相同的数据串。
hashlib包含MD5和SHA的加密算法,具体支持md5
,sha1
, sha224
, sha256
, sha384
, sha512
等算法
import hashlib
test = hashlib.md5()#创建hashlib的md5对象
test.update('mochu7'.encode('utf-8'))#将字符串载入md5对象,设置字符集
#通过hexdigest()方法,以16进制形式输出加密结果
print(test.hexdigest())#32位的md5
print(test.hexdigest()[8:-8])#16位的md5
#运行结果
874a0300d72a3676c4413ce52454eff7
d72a3676c4413ce5
更简洁的写法
import hashlib
print(hashlib.md5('mochu7'.encode('utf8')).hexdigest())
print(hashlib.md5(b'mochu7').hexdigest())
#运行结果
874a0300d72a3676c4413ce52454eff7
874a0300d72a3676c4413ce52454eff7
接下来看一下md5的加盐操作
import hashlib
salt='7777777'#自定义加盐字符串
md5_str='mochu7_want_a_girlfriend'#加密字符串
salt_md5=hashlib.md5((md5_str+salt).encode('utf-8')).hexdigest()
str_md5=hashlib.md5(md5_str.encode('utf-8')).hexdigest()
print("没有加盐:"+str_md5)
print("加盐之后:"+salt_md5)
#运行结果
没有加盐: b77deebf6ba784e1f8a8717a069c5bc3
加盐之后: 65b020fd109abb9c0ef4cf7e47c71f7c
from hashlib import *
hashstr = 'mochu7_want_a_girlfriend'
hashmd5 = md5(hashstr.encode('utf8')).hexdigest()
print('MD5: ',hashmd5)
hashsha1 = sha1(hashstr.encode('utf8')).hexdigest()
print('SHA1: ',hashsha1)
hashsha256 = sha256(hashstr.encode('utf8')).hexdigest()
print('SHA256: ',hashsha256)
hashsha512 = sha512(hashstr.encode('utf8')).hexdigest()
print('SHA512: ',hashsha512)
MD5: b77deebf6ba784e1f8a8717a069c5bc3
SHA1: 2099abd1e809d3e1ec959da37546c06182ea134f
SHA256: 6c2200d63b031fc8705c2918cbedb92c499dd39cadec73febbb39a7a3ce74c75
SHA512: bf2e29a0787be8dc119e82a342ee1ab5e1bd296b69045882f26e9498bb9786b8e52943c7d4826e4c5a637cf834b8e6f7a850a5f5aadd450cdb9275625187b43a
Pillow