摘要:本方法基于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

步骤

  1. 安装好环境,用pip install -r requirements.txt导入库;
  2. 安装火狐浏览器(如果有请接着下一步);
  3. https://github.com/mozilla/geckodriver/releases下载适合你版本的geckodriver,解压,将geckodriver.exe复制到你火狐的安装目录里(一般是C:\Program Files\Mozilla Firefox)
  4. 编辑环境变量:在桌面将鼠标移动到此电脑图标,右键,选择“属性”,再选择“高级系统设置”,选择“环境变量”
    在系统变量里的“path”新增一个环境变量“C:\Program Files\Mozilla Firefox”(即你火狐的安装目录)
  5. 提前在excel表填好收信人和内容
  6. 将网卡插入电脑或电脑连接上无线网卡的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/

Last modification:September 18th, 2019 at 11:40 pm
If you think my article is useful to you, please feel free to appreciate