import urllib,re,urllib2 ############################################# #License This code is released under the GNU MIT Open Source License.Base on http://code.google.com/p/phpgooglevoice/ #Author liangkazhe@gmail.com #Website: http://www.zaykl.tk/ ############################################# class GoogleVoice: def __init__(self,username,password): self.username,self.password=username,password self.inboxURL = 'https://www.google.com/voice/m/' self.loginURL = 'https://www.google.com/accounts/ClientLogin' self.smsURL = 'https://www.google.com/voice/m/sendsms' self.status = None self.lastURL = None self.login_auth = None def curl(self,url,referer='',postdata=''): headers = { 'User-Agent':"Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20" } req = urllib2.Request( url = url, headers=headers ) if postdata: req = urllib2.Request( url = url, data = postdata, headers=headers ) if referer: req.add_header('Referer',referer) self.lastURL=url return urllib2.urlopen(req).read() def getLoginAuth(self): self.login_param = "accountType=GOOGLE&Email=%s&Passwd=%s&service=grandcentral&source=lostleonATgmailDOTcom-GoogleVoiceTool"%(self.username,self.password) login_output = self.curl(self.loginURL,referer=self.lastURL, postdata=self.login_param) self.login_auth = self.match('Auth=([A-z0-9_-]+)', login_output); return self.login_auth; def get_rnr_se(self): auth_param = "?auth="+self.getLoginAuth() inbox_output = self.curl(self.inboxURL+auth_param, referer=self.lastURL ,postdata=''); rnr_se = self.match('', inbox_output); return rnr_se; def match(self,regex,data): getre=re.compile(regex) return getre.findall(data)[0] def sms(self,to_phonenumber, smstxt): rnr_se = self.get_rnr_se() sms_param = "id=&c=&number="+to_phonenumber+"&smstext="+smstxt+"&_rnr_se="+rnr_se posturl = self.smsURL+"?auth="+self.login_auth sms_output = self.curl(posturl, self.lastURL, sms_param) self.status = sms_output return sms_output while True: gv=GoogleVoice('liangkazhe','password') tophone=raw_input('Tophone:') msg=raw_input('Message:') gv.sms(tophone,msg)