使用Python3通过way2sms发送短信息

2024-05-13 04:32:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图用way2sms发送免费短信。我在python3上找到了这个链接:https://github.com/shubhamc183/way2sms

我已将此文件保存为way2短信.py公司名称:

import requests
from bs4 import BeautifulSoup

class sms:

def __init__(self,username,password):

    '''
    Takes username and password as parameters for constructors
    and try to log in
    '''

    self.url='http://site24.way2sms.com/Login1.action?'

    self.cred={'username': username, 'password': password}

    self.s=requests.Session()           # Session because we want to maintain the cookies

    '''
    changing s.headers['User-Agent'] to spoof that python is requesting
    '''

    self.s.headers['User-Agent']="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0"

    self.q=self.s.post(self.url,data=self.cred)

    self.loggedIn=False             # a variable of knowing whether logged in or not

    if "http://site24.way2sms.com/main.action" in self.q.url:           # http status 200 == OK

        print("Successfully logged in..!")

        self.loggedIn=True

    else:

        print("Can't login, once check credential..!")

        self.loggedIn=False

    self.jsid=self.s.cookies.get_dict()['JSESSIONID'][4:]       # JSID is the main KEY as JSID are produced every time a session satrts

def msgSentToday(self):

    '''
    Returns number of SMS sent today as there is a limit of 100 messages everyday..!
    '''

    if self.loggedIn == False:
        print("Can't perform since NOT logged in..!")
        return -1

    self.msg_left_url='http://site24.way2sms.com/sentSMS?Token='+self.jsid

    self.q=self.s.get(self.msg_left_url)

    self.soup=BeautifulSoup(self.q.text,'html.parser')      #we want the number of messages sent which is present in the

    self.t=self.soup.find("div",{"class":"hed"}).h2.text        # div element with class "hed" -> h2

    self.sent=0

    for self.i in self.t:

        if self.i.isdecimal():

            self.sent=10*self.sent+int(self.i)

    return self.sent

def send(self,mobile_no,msg):

    '''
    Sends the message to the given mobile number
    '''

    if self.loggedIn == False:
        print("Can't perform since NOT logged in..!")
        return False

    if len(msg)>139 or len(mobile_no)!=10 or not mobile_no.isdecimal(): #checks whether the given message is of length more than 139

        return False                            #or the mobile_no is valid

    self.payload={'ssaction':'ss',
            'Token':self.jsid,                  #inorder to visualize how I came to these payload,
                'mobile':mobile_no,                 #must see the NETWORK section in Inspect Element
                 'message':msg,                     #while messagin someone from your browser
                'msgLen':'129'
                 }

    self.msg_url='http://site24.way2sms.com/smstoss.action'

    self.q=self.s.post(self.msg_url,data=self.payload)

    if self.q.status_code==200:

        return True

    else:
        return False

def sendLater(self, mobile_no, msg, date, time):                #Function for future SMS feature.
                                        #date must be in dd/mm/yyyy format
                                        #time must be in 24hr format. For ex: 18:05

    if self.loggedIn == False:
        print("Can't perform since NOT logged in..!")
        return False

    if len(msg)>139 or len(mobile_no)!=10 or not mobile_no.isdecimal():
        return False

    dateparts = date.split('/')         #These steps to check for valid date and time and formatting
    timeparts = time.split(':')
    if int(dateparts[0])<1 or int(dateparts[0])>32 or int(dateparts[1])>12 or int(dateparts[1])<1 or int(dateparts[2])<2017 or int(timeparts[0])<0 or int(timeparts[0])>23 or int(timeparts[1])>59 or int(timeparts[1])<0:
        return False
    date = dateparts[0].zfill(2) + "/" + dateparts[1].zfill(2) + "/" + dateparts[2]
    time = timeparts[0].zfill(2) + ":" + timeparts[1].zfill(2)

    self.payload={'Token':self.jsid,
            'mobile':mobile_no,
            'sdate':date,
            'stime':time,
            'message':msg,
            'msgLen':'129'
            }

    self.msg_url='http://site24.way2sms.com/schedulesms.action'
    self.q=self.s.post(self.msg_url, data=self.payload)

    if self.q.status_code==200:
        return True
    else:
        return False

def logout(self):

    self.s.get('http://site24.way2sms.com/entry?ec=0080&id=dwks')

    self.s.close()                              # close the Session

    self.loggedIn=False

另一个文件另存为短信.py公司名称:

^{pr2}$

-我试图将用户名作为字符串或其他形式传递。如果密码不是以字符串形式给出,则显示错误。我的用户名和密码都是正确的。 当我执行任务时短信.py... 显示:

>>>Can't login, once check credential..!
Can't perform since NOT logged in..!
Can't perform since NOT logged in..!

有了这么简单的代码,我觉得很容易。但我找不到我错在哪里。是因为我用的是Windows7吗??有谁能帮帮我吗。?在


Tags: orthenoinselfcomfalseurl
3条回答

要使用way2sms帐户发送sms,可以使用下面的代码片段。在

在此之前,您需要从here创建一个API Key

import requests
url = "https://smsapi.engineeringtgr.com/send/"
params = dict(
    Mobile='login username',
    Password='login password',
    Key='generated from above sms api',
    Message='Your message Here',
    To='recipient')

resp = requests.get(url, params)
print(resp, resp.text)

N.B:每天限制约20条短信

import requests

url = "https://www.fast2sms.com/dev/bulk"

payload = "sender_id=FSTSMS&message=Good morning , this is prasad  sending from python.&language=english&route=p&numbers=9052766763,7013514480"

headers = {

'authorization': "your app key",

'Content-Type': "application/x-www-form-urlencoded",

'Cache-Control': "no-cache",

}

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)

首先,如果不尝试使用pip3下载请求和bs4之类的依赖项,那么首先要确保这些依赖项都是Python3而不是python2。在

我已经更新了repository。在

The mobilenumber should also be in String format

所以,不是

q=way2sms.sms(1234567890,'password') #username = 1234567890

使用

^{pr2}$

相关问题 更多 >