摘要:本方法基于python的splinter库,通过调用火狐浏览器访问网页实现华为e8372随行wifi自动发短信。
背景
博主半年前买了华为e8372随行wifi和一张40G限速的联通学生卡来充当23点断网后的宿舍wifi(没错,我们学校晚上11点断网)。在 http://192.168.8.1/html/home.html 上有一个短信服务,可发送和接收信息,除了平常用来接码以外在想能不能利用一下里面的400条免费短信,所以想做个自动发信息的程序。网上搜了下有人使用splinter这个库来模拟网页操作,点击之类的,觉得可以,就来试试。
项目地址
https://github.com/ishelo/Send_Messages_Automatically_By_Huawei_Mobile_Broadhand
步骤
- 安装好环境,用
pip install -r requirements.txt
导入库; - 安装火狐浏览器(如果有请接着下一步);
- 在https://github.com/mozilla/geckodriver/releases下载适合你版本的geckodriver,解压,将geckodriver.exe复制到你火狐的安装目录里(一般是C:\Program Files\Mozilla Firefox)
- 编辑环境变量:在桌面将鼠标移动到此电脑图标,右键,选择“属性”,再选择“高级系统设置”,选择“环境变量”
在系统变量里的“path”新增一个环境变量“C:\Program Files\Mozilla Firefox”(即你火狐的安装目录) - 提前在excel表填好收信人和内容
- 将网卡插入电脑或电脑连接上无线网卡的wifi,运行send.py
程序运行视频
结语
这个程序还不是很完善,发短信的速度很慢。如果加入多线程可能会比较好。如果是日常发送验证码之类的也是可以满足的。如果各位大佬有更好的方法,希望能告诉我一下哈。
源代码
# -*- coding:utf-8 -*-
import time
from splinter import Browser
import xlrd
def datainput(): #导入数据
path = 'sms.xlsx'
rb = xlrd.open_workbook(path)
data_sheet = rb.sheets()[0]
rowNum = data_sheet.nrows
pop_Num = []
pop_Text = []
for i in range(1, rowNum):
pop_Num.append(int(data_sheet.cell_value(i, 0)))
pop_Text.append(data_sheet.cell_value(i, 1))
print("手机号和内容导入成功")
# print(pop_Num)
# print(pop_Text)
return pop_Num, pop_Text
def sms(send_Num, send_Text):
url = 'http://192.168.8.1/html/home.html'
browser = Browser()
browser.visit(url) # login Huawei telenor websize
time.sleep(1) # wait web element loading
browser.find_by_id('logout_span').click() # click the button of login
browser.find_by_id('username').fill('admin') # fill in account and password
browser.find_by_id('password').fill('zxcvbnm123')
browser.find_by_id('pop_login').click() # click the button of login
time.sleep(1)
browser.find_by_id('sms').click() # click the button of sms
time.sleep(1)
browser.find_by_id('message').click() # click the button of message
time.sleep(1)
browser.find_by_id('recipients_number').fill(send_Num) # fill in recipients_number and message_content
browser.find_by_id('message_content').fill(send_Text)
browser.find_by_id('pop_send').click() # click the button of send
time.sleep(5)
browser.find_by_id('pop_OK').click() # click the button of OK
browser.quit() # close the window of brower
if __name__ == '__main__':
pop_Num, pop_Text = datainput()
n = int(len(pop_Num))
for i in range(n):
send_Num = pop_Num[i]
send_Text = pop_Text[i]
sms(send_Num, send_Text)
print('''收信人:{}
内容:{}
发送成功'''.format(send_Num, send_Text))
参考资料
https://splinter.readthedocs.io/en/latest/
版权声明:本文为原创文章,版权归 Helo 所有。
本文链接:https://www.ishelo.com/archives/129/
商业转载请联系作者获得授权,非商业转载请注明出处。