Giter Site home page Giter Site logo

Comments (2)

enbiocrypt avatar enbiocrypt commented on July 28, 2024

#Changed Few URLs, Now Working

import requests
from bs4 import BeautifulSoup

#".*//"
class Sms:

def __init__(self, mobileNo, password):

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

	self.base_url = "https://www.way2sms.com/"
	self.login_url = self.base_url + "re-login"
	self.msg_url=  self.base_url + "smstoss"
	self.future_msg_url = self.base_url + "schedulesms"
	self.logout_url = self.base_url + "Logout"

	self.session = requests.Session()	# Session because we want to maintain the cookies
	self.session.headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
	self.session.get(self.base_url)		# once do a http GET to get the cookies       

	self.session.headers['Referer'] = self.base_url
	self.session.headers['Host'] = "www.way2sms.com"
	self.session.headers['X-Requested-With'] = 'XMLHttpRequest'
	#self.session.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
	#self.session.headers['Content-Length'] = '43'
	self.set_cookies_header()

	self.payload = {'mobileNo': mobileNo, 'password': password, 'CatType' : ''}
	self.q = self.session.post(self.login_url, data=self.payload)		# POST the payload
	self.logged_in = False				# a variable of knowing whether logged in or not

	if self.q.status_code == 200 and self.q.text == "send-sms":	# http status 200 == OK
		print("Successfully logged in..!")
		self.logged_in=True
	else:
		print("Can't login, once check credential..!",self.q.status_code,self.q.text)
		self.logged_in=False

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

def set_cookies_header(self):
	self.session.headers['Cookie'] = "JSESSIONID=" + self.session.cookies.get_dict()['JSESSIONID']

def msgSentToday(self):

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

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

	self.msg_left_url='http://www.way2sms.com/sentSMS?Token='+self.jsid
	self.q=self.session.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.logged_in == 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 and mobile numnber is valid
		return False							

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

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

	if self.q.status_code==200 and self.q.text == '0':
		return True
	else:
		return False

def send_later(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.logged_in == 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,
					'toMobile' : mobile_no,
					'sdate' : date,
					'stime' : time,
					'message' : msg,
				}

	self.q = self.session.post(self.future_msg_url, data=self.payload)
	if self.q.status_code == 200:
		return True
	else:
		return False

def logout(self):
	self.session.get(self.logout_url)
	self.session.close()								# close the Session
	self.logged_in=False

from way2sms.

sahilmore-git avatar sahilmore-git commented on July 28, 2024

Just Try this if you are getting error as not logged in :
1.Import way2sms Locally as follows :
import sys
sys.path.append('way-to-sms-localmodule-path'
2.Go to way2sms file and change the website from http://www.way2sms.com/ to https://www.way2sms.com/ wherever you see.
3. Re run the script.

from way2sms.

Related Issues (8)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.