oA(lin)
WվWվ
͑͑
WվģWվģ
P҂P҂
F(xin)ڵλã >> _l(f) >> _l(f)gYӍ _l(f)gYӍ|
# -*- coding: utf-8 -*- #/usr/bin/env python __version__ = '0.1' __author__ = 'http://weibo.com/wtmmac' ''' ServerģM ''' import sys, urllib, httplib, time, hashlib, random # interface_url = 'www.xxx.net' interface_path = '/interface/weixin.php' Token = 'weixin' messages = { # ÑPעϢ 'subscribe' : '''<xml><ToUserName><![CDATA[yԇՎ̖]]></ToUserName> <FromUserName><![CDATA[С]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[EVENTKEY]]></EventKey> </xml>''', # Ñl(f)ıϢ 'text': '''<xml> <ToUserName><![CDATA[yԇՎ̖]]></ToUserName> <FromUserName><![CDATA[С]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[ܽ܂]]></Content> <MsgId>1234567890123456</MsgId> </xml>''' } def make_post(action): '''ģMÑОaϢύoӿڳ''' conn = httplib.HTTPConnection(interface_url) headers = { "Content-type": "text/xml", "Content-Length": "%d" % len(messages[action])} # ɺP׃ timestamp = int(time.time()) nonce = random.randint(1,100000) signature = makeSignature(Token, timestamp, nonce) params = urllib.urlencode({'signature': signature, 'timestamp': timestamp, 'nonce': nonce}) conn.request("POST", interface_path + "?" +params, "", headers) conn.send(messages[action]) response = conn.getresponse() print response.status, response.reason print response.read() conn.close() def makeSignature(Token, timestamp, nonce): '''ɺ''' try: Token = int(Token) except Exception, e: pass sorted_arr = map(str, sorted([Token, timestamp, nonce])) sha1obj = hashlib.sha1() sha1obj.update(''.join(sorted_arr)) hash = sha1obj.hexdigest() return hash def listAction(): print("======Supported actions:======") for i in messages.keys(): print(i) print("==============================") if __name__ == '__main__': if len(sys.argv) < 2: print (u"Please input your action") listAction() else: if (messages.has_key(sys.argv[1])): make_post(sys.argv[1]) else: print("No this action") listAction() |