Skip to content

Commit

Permalink
Clean up code slightly.
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonmc committed Jul 31, 2011
1 parent 9096830 commit 3b0329a
Showing 1 changed file with 54 additions and 55 deletions.
109 changes: 54 additions & 55 deletions meteorsms.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,101 +2,100 @@
from BeautifulSoup import BeautifulSoup
import re
import urllib
from urlparse import urljoin


import sys, logging
logger = logging.getLogger("mechanize")
logger.addHandler(logging.StreamHandler(sys.stdout))
logger.setLevel(logging.INFO)
# import sys, logging
# logger = logging.getLogger("mechanize")
# logger.addHandler(logging.StreamHandler(sys.stdout))
# logger.setLevel(logging.INFO)
#logger.setLevel(logging.DEBUG)


USERNAME = "REDACTED"
PASSWORD = "REDACTED"

br = mechanize.Browser()

br.addheaders = [("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7")]
def getphonebook():
"""Parse the meteorsms phoenbook"""
pass


br.open("http://meteor.ie")

def send_text(number,text):

for f in br.forms():
if f.attrs['id'] == "MyMeteorLogin":
loginForm = f
assert(number.isdigit())

assert(loginForm)
br = mechanize.Browser()

br.form = loginForm
#TODO: save and loading of cookies!

br.set_handle_robots(False)
br.addheaders = [("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7")]
br.set_handle_robots(False) # sorry, but otherwise it looks for a non-existent robots.txt and seems to block


br["msisdn"] = "REDACTED"
br["pin"] = "REDACTED"
br.open("http://meteor.ie")

r2 = br.submit()

for f in br.forms():
if f.attrs['id'] == "MyMeteorLogin":
loginForm = f
assert(loginForm)
br.form = loginForm

l = br.find_link(url_regex="freeweb")

br.follow_link(l)
br["msisdn"] = USERNAME
br["pin"] = PASSWORD

login_response = br.submit()


br.follow_link(br.find_link(url_regex="freeweb"))

d = br.response().get_data()
soup = BeautifulSoup(d)
print "Texts remaining:", soup.find(id = "numfreesmstext")['value']

data = br.response().get_data()
soup = BeautifulSoup(data)
print "Texts remaining:", soup.find(id = "numfreesmstext")['value']

regex = re.compile("var CFID = (\d*);")
r = regex.search(d)
cfid = r.groups()[0]
regex = re.compile("var CFTOKEN = (\d*);")
r = regex.search(d)
cftoken = r.groups()[0]

regex = re.compile("var CFID = (\d*);")
try:
r = regex.search(data)
cfid = r.groups()[0]
except:
raise Exception("Could not get CFID!")
regex = re.compile("var CFTOKEN = (\d*);")
try:
r = regex.search(data)
cftoken = r.groups()[0]
except:
raise Exception("Could not get CFTOKEN!")


#we can't click anything anymore, let's do the ajax requests ourselves

#we can't click anything anymore, let's do the ajax requests ourselves

url = "/mymeteorapi/index.cfm?event=smsAjax&CFID=%s&CFTOKEN=%s&func=addEnteredMsisdns" % (cfid,cftoken)
data = "ajaxRequest=addEnteredMSISDNs&remove=-&add=" + urllib.quote(("0|" + number).encode("utf-8"))
r1 = br.open(url,data)

number = "0|REDACTED" #TODO: might need to prepend "0|"

number = urllib.quote(number.encode("utf-8"))
url = "/mymeteorapi/index.cfm?event=smsAjax&func=sendSMS&CFID=%s&CFTOKEN=%s" %(cfid,cftoken)
data = "ajaxRequest=sendSMS&messageText=" + urllib.quote(text.encode("utf-8"))
r2 = br.open(url,data)

#TODO: ensure these responses are 200 OK and not 301 moved temporarily

#geturl "/mymeteorapi/index.cfm?event=smsAjax&CFID=99999&CFTOKEN=99999&func=addEnteredMsisdns"
#urlencoded form query: "ajaxRequest=addEnteredMSISDNs&remove=-&add="+encodeURI(number)
#TODO: make these neater by using encodeuri to build the data part

url = "/mymeteorapi/index.cfm?event=smsAjax&CFID=%s&CFTOKEN=%s&func=addEnteredMsisdns" % (cfid,cftoken)
url = urljoin(br.geturl(),url)
data = "ajaxRequest=addEnteredMSISDNs&remove=-&add="+number

r1 = br.open(url,data)

def main():

send_text("REDACTED","cool")






text = "can't believe it works!!"

text = urllib.quote(text.encode("utf-8"))

#geturl "/mymeteorapi/index.cfm?event=smsAjax&func=sendSMS&CFID=REDACTED&CFTOKEN=REDACTED"
#urlencoded form query: "ajaxRequest=sendSMS&messageText=" + encodeURI(text)

url = "/mymeteorapi/index.cfm?event=smsAjax&func=sendSMS&CFID=%s&CFTOKEN=%s" %(cfid,cftoken)
url = urljoin(br.geturl(),url)
data = "ajaxRequest=sendSMS&messageText=" + text

r2 = br.open(url,data)


if __name__ == "__main__":
main()



Expand Down

0 comments on commit 3b0329a

Please sign in to comment.