[python] httplib a práce se sms bránou

Martin Stiborský martin.stiborsky na gmail.com
Pondělí Prosinec 15 14:33:19 CET 2008


Zdravím.
Pokouším se odeslat přes skript esemesku do sítě O2. Nedaří se, po
odeslání mi kód vypíše 302 Found, neměl bych spíš vidět 200 OK ?
Koukám do logu z wiresharku při odeslání sms pomocí skriptu a přímo z
webu, ale asi mi něco uniká, možná zapomínám posílat nějakou hlavičku,
která je důležitá, nebo nevím. Nebo mám nějakou faktickou chybu v kódu
?
Chtěl jsem to celé udělat pomocí urllib(2), akorát se nedařilo, tak
jsem zkusil httplib.

# -*- coding: utf-8 -*-

from BeautifulSoup import BeautifulSoup
import urllib
import urllib2
import httplib

cislo = "telefonni cislo"

def getHTML(conn):
	conn.request("GET", "/")
	response = conn.getresponse()
	
	return response.read()


def findAndDownloadCaptcha(html):
	soup = BeautifulSoup(html)
	image = soup.findAll('img', alt=u"kód")[0]
	imageSrc = image.attrMap['src']
	
	target = urllib.urlopen("%s%s" % ("http://sms.1188.cz", imageSrc))
	data = target.read()
	target.close()
		
	out = file("captcha", "w")
	out.write(data)
	out.close

conn = httplib.HTTPConnection("sms.1188.cz:80")
html = getHTML(conn)

findAndDownloadCaptcha(html)

captcha = raw_input("Kod:")

headers = {'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US;
rv:1.9.0.4) Gecko/2008111922 GranParadiso/3.0.4',
	   'Referer' : 'http://sms.1188.cz/',
	   "Content-type": "application/x-www-form-urlencoded"
	   }

#values = {'adress' : '732653452',
          #'code' : captcha,
	  #'replyEmail' : '',
          #'text' : 'ahoj :)',
	  #'send' : 'ODESLAT' }

#data = urllib.urlencode(values)
data = "adress=%s&code=%s&replyEmail=&text=Ahoj&send=ODESLAT" % (cislo, captcha)

conn.request("POST", "/", data, headers)

response = conn.getresponse()

print response.status, response.reason

-- 
S pozdravem
Martin Stiborský

Jabber: stibi na njs.netlab.cz
ICQ: 224-065-849


Další informace o konferenci Python