hashlib
- md5:非对称加密,不可逆的,经常用于加密密码然后存储
- 示例:
```python
import hashlib # 创建hash对象,可以指定需要加密的字符串 md = hashlib.md5(\'123456\'.encode(\'utf-8\')) # 设置加密字符串,创建md5对象就不必指定了,不能两个地方都指定 # md.update(\'123456\'.encode(\'utf-8\')) # 获取加密后的字符串(32位) print(md.hexdigest())
urllib
-
说明:
-
URI:统一资源标识符
-
URL:统一资源定位符,URI的一种形式,如:
http://www.baidu.com:80?name=xiaoming&age=10
-
-
示例:
from urllib.parse import urlencode d = {\'name\':\'dahua\', \'age\':18} print(d) # 转换为:name=dahua&age=18 print(urlencode(d)) from urllib.parse import urlparse url = \'http://www.baidu.com:80/abc/def?page=3&size=5&like=1&like=2\' # 解析出url中所有的参数 p = urlparse(url) print(p) # 请求参数 print(p.query) from urllib.parse import parse_qs # 将url请求参数转换为字典 d = parse_qs(p.query) print(d)
http.client
-
说明:可以模拟浏览器发送http请求(是爬虫的基础)
-
示例:
import http.client # 创建连接(相当于浏览器) connect = http.client.HTTPConnection(\'www.baidu.com\') # 发送请求(GET\POST) connect.request(method=\'GET\', url=\'http://www.baidu.com\') # 获取响应 resp = connect.getresponse() # 打印响应内容,读取并解码 print(resp.read().decode(\'gbk\'))
邮件发送
-
说明:在一个网站中经常使用邮件操作,如:激活、通知、等
-
smtp使用
import smtplib # 将字符串转换为邮件的文本格式 from email.mime.text import MIMEText # 邮箱服务器 mail_server = \'smtp.1000phone.com\' # 用户名 mail_user = \'lijie@1000phone.com\' # 密码或授权码,为了不将密码公开,可以通过环境变量的方式获取 import os mail_password = os.environ.get(\'MAIL_PASSWORD\') or \'123456\' # 邮件消息 message = \'你好,欢迎注册xxx平台,激活请点击右边链接 <a href="http://www.baidu.com">点击激活</a>\' # 将邮件字符串消息转换邮件格式,若内容是HTML需要指定第二个参数为\'html\' message = MIMEText(message, \'html\') # 设置主题 message[\'Subject\'] = \'账户激活\' # 设置发送人 message[\'From\'] = mail_user # 创建邮件对象 mail = smtplib.SMTP(mail_server, 25) # 登录服务器 mail.login(mail_user, mail_password)
接受者,多个使用逗号隔开
to = \'956673351@qq.com\'
发送邮件
mail.sendmail(mail_user, to, message.as_string())
结束
mail.quit()
### 短信发送
- 说明:注册验证码、通知消息、营销短信、...
- 平台:阿里、云之讯、秒嘀、...
- 示例:秒嘀(miaodiyun.com)
```python
# 请求地址 url = \'https://api.miaodiyun.com/20150822/industrySMS/sendSMS\' # 请求头 headers = {\'Content-type\': \'application/x-www-form-urlencoded\'} # 账户sid accountSid = \'1e3808d2bf77467ba838001351c05a07\' # auth token auth_token = \'a6181ae71b78455b8b4ca6d5c6bd793a\' # 时间戳 import time timestamp = time.strftime(\'%Y%m%d%H%M%S\') sig = accountSid + auth_token + timestamp # md5加密一下 import hashlib md = hashlib.md5() md.update(sig.encode(\'utf-8\')) sig = md.hexdigest() # 模板参数 yzm = \'632881\' t = \'5\' param = yzm + \',\' + t # 表单数据 form_data = { \'accountSid\': accountSid, \'templateid\': \'192310431\', \'to\': \'13017629070\', \'timestamp\': timestamp, \'sig\': sig, \'param\': param, } # 将字典转换为url参数形式 from urllib.parse import urlencode form_data = urlencode(form_data) # 创建浏览器对象 import http.client connect = http.client.HTTPConnection(\'api.miaodiyun.com\') # 发送POST请求 connect.request(method=\'POST\', url=url, body=form_data, headers=headers) # 获取响应 resp = connect.getresponse() # 打印响应结果 print(resp.read().decode(\'utf-8\'))
练习:
-
实现邮件发送函数的封装
-
找到一个其他平台,试着发送短信
-
封装一个函数,专门用于短信发送,传递相关参数,返回验证码