Tp-Link M7350 4G LTE 路由器 - 使用带有树莓派的 python 脚本发送短信

问题描述

  • RaspBerry Pi 4B 4GB 和 Pi Os。
  • TP-Link M7350 4G LTE 路由器。

在网上搜索了很长时间如何使用 python 脚本和 M7350 发送短信的指南后,我只找到了型号 MR-6400。


路由器模拟器页面如下: Router emulator page(for password use: "admin")

找到型号 MR-6400 的代码

# -*- coding: utf8 -*-
"""
Send SMS via TP-Link TL-MR6400.
This code shows how to send an SMS using the admin GUI of the above router.
FIXME Todo add error handling,logging
Author: fabio Pani <fabiux@fabiopani.it>
License: see LICENSE
"""
from hashlib import md5
from base64 import b64encode
from datetime import datetime
from time import strftime
import requests

# SMS
router_domain = '192.168.1.1'  # set actual IP or hostname of your router
router_url = 'http://' + router_domain + '/'
router_login_path = 'userRpm/LoginRpm.htm?Save=Save'
router_sms_referer = '/userRpm/_lte_SmsNewMessageCfgRpm.htm'
router_sms_action = '/userRpm/lteWebCfg'
router_admin = 'ADMIN_USERNAME'  # set admin username
router_pwd = 'ADMIN_PASSWORD'  # set admin password


def send_sms(phone_num,msg):
"""
Send an SMS via TP-Link TL-MR6400.
:param phone_num: recipient's phone number
:type phone_num: str
:param msg: message to send
:type msg: str
"""
# SMS payload
sms = {'module': 'message','action': 3,'sendMessage': {
           'to': phone_num,'textContent': msg,'sendTime': strftime('%Y,%-m,%-d,%-H,%-M,%-S',datetime.Now().timetuple())
       }}

# authentication
authstring = router_admin + ':' + md5(router_pwd.encode('utf-8')).hexdigest()
authstring = 'Basic ' + b64encode(authstring.encode('utf-8')).decode('utf-8')
cookie = {'Authorization': authstring,'Path': '/','Domain': router_domain}
s = requests.Session()
r = s.get(router_url + router_login_path,cookies=cookie)
if r.status_code != 200:
    # FIXME Todo log errors
    exit()
hashlogin = r.text.split('/')[3]
sms_form_page = router_url + hashlogin + router_sms_referer
sms_action_page = router_url + hashlogin + router_sms_action

# send SMS
s.headers.update({'referer': sms_form_page})
r = s.post(sms_action_page,json=sms,cookies=cookie)
if r.status_code != 200:
    # FIXME Todo log errors
    pass

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)