前言:
而今同学们对“python接收短信”都比较关注,兄弟们都需要剖析一些“python接收短信”的相关内容。那么小编同时在网络上网罗了一些有关“python接收短信””的相关文章,希望小伙伴们能喜欢,咱们一起来了解一下吧!前言:
最近做了一个需求,需要接收手机短信验证码。因此我这里考虑到了 GSM 模块。
目前电信已退 2g 网,联通正在退,只剩下移动。不过大家以后可以直接购买 4g 的模块进行使用。
1. 安装依赖
pip install pyserial
2. 窗口连接
import serials = serial.Serial("/dev/ttyUSB0")3. 打电话
s.write("ATD10086;\r\n".encode())4. 发短信设置短信模式为 PDU
s.write(b'AT+CMGF=0\r\n')设置短信编码
s.write(b'AT+CSCS="UCS2"\r\n')手机号码 16 进制 unicode 码
s.write('AT+CMGS="00310030003000380036"\r\n'.encode())短信内容 16 进制 unicode 码
s.write('00680065006c006c006f00204e16754c'.encode())发送代码
s.write(b'\\x1A\r\n')5. 读取短信
import re读取所有短信
s.write(b'AT+CMGL="ALL"\r\n')获取全部返回
res = s.read()while True: count = s.inWaiting() if count == 0: break res += s.read(count)匹配短信文本
msg_list = re.findall('\+CMGL\: (\d+),"REC READ","(.*?)","","(.*?)"\\r\\n(.*?)\\r\\n', res.decode())msg_list = [list(i) for i in msg_list]for msg in msg_list: msg[1] = unicode2str(msg[1]) msg[-1] = unicode2str(msg[-1])print(msg_list)6. 字符串转 16 进制 unicode 码
def str2unicode(text): code = '' for i in text: hex_i = hex(ord(i)) if len(hex_i) == 4: code += hex_i.replace('0x', '00') else: code += hex_i.replace('0x', '') return code7. 16 进制 unicode 码转字符串
def unicode2str(code): text = '' tmp = '' for i in range(len(code)): tmp += code[i] if len(tmp) == 4: text += "\\\u" + tmp tmp = '' text = eval(f'"{text}"') return text
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #python接收短信