记录于笔者常用的模块的一些使用方法,基于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请求方法,例如GETPOSTHEADPUTDELETEOPTIONS等,经常使用主要是GETPOST,其他的一些请求方法一般都会被服务器禁用。

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/

Python模块学习笔记_数据

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