Way2SMS python code not sending SMS whereas POSTS returns Success

ε祈祈猫儿з 提交于 2019-12-11 16:11:43

问题


I get Successful status code for my POST requests , Login is working fine , but the SMS is not sent I have gone through all codes on internet, most of them are out-dated, as the site has changed its code.

    import requests as req

    def login_way2sms():
        with req.Session() as mySession:

            url = 'http://www.way2sms.com/re-login'
            home_url = 'http://www.way2sms.com/'
            mobile = [your registered  mobile number]
            password = [your password]
            headers = dict(Referrer="http://www.way2sms.com/")
            before = mySession.get(home_url)
            login_data = dict(mobileNo=mobile, password=password, CatType='', redirectPage='', pid='')
            mySession.post(url, data=login_data, headers=headers)
            after = mySession.get(home_url)
            return mySession

    def send_msg(mysession): #saw sendsms-toss in Inspect under Network tab
            url = 'http://www.way2sms.com/smstoss'
            home_url = 'http://www.way2sms.com/'
            sms_url = 'http://www.way2sms.com/send-sms'
            group_contact_url = 'http://www.way2sms.com/GroupContacts'
            web_msg_count_url = 'http://www.way2sms.com/CheckWebMsgCount'

            headers = dict(Referrer="http://www.way2sms.com/send-sms")
            before = mysession.get(home_url)
            token = '2B7CF7C9D2F14935795B08DAD1729ACF'
            message = 'How to make this work?'
            mobile = '[a valid phone number]'
            ssaction = 'undefined'
            senderid = 'WAYSMS'
            msg_data = dict(Token=token, message=message, toMobile=mobile, ssaction=ssaction, senderId=senderid)

            mysession.post(url, data=msg_data, headers=headers)
            after = mysession.get(home_url)

            mysession.post(group_contact_url, headers=headers)
            group_contacts = mysession.get(sms_url)

            mysession.post(web_msg_count_url, headers=headers)
            web_msg_count = mysession.get(sms_url)

    # last 2 POST requests send after clicking the Send Msg button

    def main():
        login_way2sms() #login using username and password 
        send_msg(currsession) #send sms 


    main()

回答1:


I finally got it right , Thanks for replying. We can do it without using the apikey and secret keys as well, Here take a look at this. And init is just another script where constant urls and login is defined, nothing much there.

import requests as req
import init


def login_way2sms(credential):
    with req.Session() as mySession:
        mobile = credential.username
        password = credential.password
        headers = dict(Referrer="http://www.way2sms.com/")
        login_data = dict(mobileNo=mobile, password=password, CatType='', redirectPage='', pid='')
        mySession.post(init.login_url, data=login_data, headers=headers)
        return mySession


def get_token(mysession):
    cookies = mysession.cookies['JSESSIONID']
    token = cookies[4:]
    return token


def send_msg(mysession, token):
    """
        :rtype: req.Session()
    """
    headers = dict(Referrer="http://www.way2sms.com/send-sms")
    message = 'Hi, I am Upgraded a little!!!'
    mobile = '[valid phone]'
    msg_data = dict(Token=token, message=message, toMobile=mobile, ssaction=init.ssaction, senderId=init.senderid)
    mysession.post(init.sms_url, data=msg_data, headers=headers)


def main():
    credential = init.enter_credentials()
    currsession = login_way2sms(credential)
    reply = currsession.get(init.home_url)
    page_content: str = str(reply.content)
    if (reply.status_code == 200) and (page_content.find('send-sms', 10, 200) != -1):
        print("Login Successful!\n")
    else:
        print("Login Failed ,  Try again\n")
        credential = init.enter_credentials()
        currsession = login_way2sms(credential)
    token = get_token(currsession)
    send_msg(currsession, token)


main()



回答2:


The following method and code worked for me after creating a free account at way2sms (I hope you already did it). Then click on API tab then campaign at left. Then create test API and Secret Key (free with 25 message limit). Then use the following code--

import requests
import json

URL = 'http://www.way2sms.com/api/v1/sendCampaign'

# get request
def sendPostRequest(reqUrl, apiKey, secretKey, useType, phoneNo, senderId, textMessage):
  req_params = {
  'apikey':'your_apiKey',
  'secret':'your_secretKey',
  'usetype':'stage'
  'phone': 'receiving_phone_number',
  'message':'The textMessage I want to send',
  'senderid':'Your Name'
  }
  return requests.post(reqUrl, req_params)

# get response
response = sendPostRequest(URL, 'provided-api-key', 'provided-secret', 'prod/stage', 'valid-to-mobile', 'active-sender-id', 'message-text' )
"""
  Note:-
    you must provide apikey, secretkey, usetype, mobile, senderid and message values
and then requst to api
"""
# print response if you want
print response.text

Just fill the fields and run in python 2.7. Working perfectly on any Indian number.



来源:https://stackoverflow.com/questions/54524376/way2sms-python-code-not-sending-sms-whereas-posts-returns-success

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!