2005年06月21日 星期二 08:49
代码如下: # -*- coding: cp936 -*- """2005-06-15 看到微程朋友分析基于http的QQ协议,于是准备写一个QQ程序。原以为有些包不能用了,后来灰衣人朋友的帮助下,才知道http通讯需要打开一次,关闭一次的。而不能象socket样,一直打开不关闭。 感谢微程和灰衣人朋友的帮助。关于协议大家可以看他的blog http://spaces.msn.com/members/mprogramer/Blog/cns!1pKnbff3FpJuGZcrsAlNZmZQ!147.entry 本程序为MIT授权 如果需要转载本程序,请保留版权信息""" import urllib,httplib,md5,time class qq: def __init__(self,qq="",pwd=""): self.pwd=md5.new(pwd).hexdigest() self.headers="" self.qq=qq def getdata(self): self.conn= httplib.HTTPConnection("tqq.tencent.com:8000")#这里是tqq.tencent.com的ip地址,也可以直接用域名 self.conn.request("POST","", self.headers) response = self.conn.getresponse() print response.read().decode('utf-8').encode("cp936") self.conn.close def Login(self):#登陆 self.headers=("VER=1.0&CMD;=Login&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&PS;="+\ self.pwd+\ "&M5;=1&LC;=9326B87B234E7235") self.getdata() def Query_Stat(self):#在线好友 self.headers=("VER=1.0&CMD;=Query_Stat&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&TN;=50&UN;=0") self.getdata() def List(self):#好友列表 self.headers=("VER=1.0&CMD;=List&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&TN;=160&UN;=0") self.getdata() def GetInfo(self,friend=""):#指定QQ号码的详细内容 self.headers=("VER=1.0&CMD;=GetInfo&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&LV;=2&UN;="+\ friend) self.getdata() def AddToList(self,friend=""):#增加指定QQ号码为好友 self.headers=("VER=1.0&CMD;=AddToList&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&UN;="+\ friend) self.getdata() def GetMsg(self):#获取消息 self.headers=("VER=1.0&CMD;=GetMsgEx&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq) self.getdata() def SendMsg(self,friend="",msg=""):#发送消息 self.headers=("VER=1.0&CMD;=CLTMSG&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&UN;="+\ friend+"&MG;="+\ msg.decode("cp936").encode('utf-8')) self.getdata() def Logout(self):#退出登陆 self.headers=("VER=1.0&CMD;=Logout&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq) self.getdata() test=qq('号码','密码') test.Login() test.Query_Stat() test.List() test.GetInfo('他人QQ号码') test.AddToList('他人QQ号码') test.GetMsg() i=0 while i<1000: print i time.sleep(0.9) test.SendMsg('他人QQ号码',"一共有1000条消息,这是第"+str(i)+"条消息") i = i+1 test.Logout() 详细的请到http://bbs.chinaunix.net/forum/viewtopic.php?t=563093&show;_type=new查看。 -- 梅劲松
2005年06月21日 星期二 09:30
好贴,好贴... 请教梅大虾一个问题. 你是如何得到它的HTTP数据的..是用sniffer 吗??还是其它什么东东.得到 数据后怎样分析呢??? 请介绍一下如何抓数据包和分析包.. 我很想学这方面的东东..写下面的程序不难.难得是我不知怎样得到QQ的数 据...并分析.. 例如:网游的外挂...哈哈. 这样说吧:不是有个故事吗?一个人向你讨饭..你是把你刚钓的鱼给他,还是教会他 钓鱼呢。。 道理是一样的..下面程序你给我们.我们是可以用.但我们根本不知它是如何实现 的.. 再让我们写一个MSN的,POPO的..我们还是不会啊...还得上来问 你!!!! 无论是socket 还是http,smtp,nntp,pop...... 它的操作很简单就是send,receive. 难在抓数据包和分析包. 可能对有些人来说.抓数据包和分析包很简单...但对我们没接触过的人来说...根本不 知怎样 走进这个门槛儿. Neo Chan (netkiller) Best Regards, 73 de BG7NYT Amateur Radio Callsign: BG7NYT CQCQCQ This is BG7NYT Calling CQ and Stand By. 439.460MHz -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of 梅劲松 Sent: Tuesday, June 21, 2005 8:50 AM To: python-chinese at lists.python.cn Subject: [python-chinese] 基于HTTP的QQ协议代码,Python实现登陆等操作! 代码如下: # -*- coding: cp936 -*- """2005-06-15 看到微程朋友分析基于http的QQ协议,于是准备写一个QQ程序。原以为有些包不能用 了,后来灰衣人朋友的帮助下,才知道http通讯需要打开一次,关闭一次的。而不能象 socket样,一直打开不关闭。 感谢微程和灰衣人朋友的帮助。关于协议大家可以看他的blog http://spaces.msn.com/members/mprogramer/Blog/cns!1pKnbff3FpJuGZcrsAlNZmZQ!1 47.entry 本程序为MIT授权 如果需要转载本程序,请保留版权信息""" import urllib,httplib,md5,time class qq: def __init__(self,qq="",pwd=""): self.pwd=md5.new(pwd).hexdigest() self.headers="" self.qq=qq def getdata(self): self.conn= httplib.HTTPConnection("tqq.tencent.com:8000")#这里是tqq.tencent.com的ip地 址,也可以直接用域名 self.conn.request("POST","", self.headers) response = self.conn.getresponse() print response.read().decode('utf-8').encode("cp936") self.conn.close def Login(self):#登陆 self.headers=("VER=1.0&CMD;=Login&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&PS;="+\ self.pwd+\ "&M5;=1&LC;=9326B87B234E7235") self.getdata() def Query_Stat(self):#在线好友 self.headers=("VER=1.0&CMD;=Query_Stat&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&TN;=50&UN;=0") self.getdata() def List(self):#好友列表 self.headers=("VER=1.0&CMD;=List&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&TN;=160&UN;=0") self.getdata() def GetInfo(self,friend=""):#指定QQ号码的详细内容 self.headers=("VER=1.0&CMD;=GetInfo&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&LV;=2&UN;="+\ friend) self.getdata() def AddToList(self,friend=""):#增加指定QQ号码为好友 self.headers=("VER=1.0&CMD;=AddToList&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&UN;="+\ friend) self.getdata() def GetMsg(self):#获取消息 self.headers=("VER=1.0&CMD;=GetMsgEx&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq) self.getdata() def SendMsg(self,friend="",msg=""):#发送消息 self.headers=("VER=1.0&CMD;=CLTMSG&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq+"&UN;="+\ friend+"&MG;="+\ msg.decode("cp936").encode('utf-8')) self.getdata() def Logout(self):#退出登陆 self.headers=("VER=1.0&CMD;=Logout&SEQ;="+\ str(int(time.time()*100)%(10**5))+"&UIN;="+\ self.qq) self.getdata() test=qq('号码','密码') test.Login() test.Query_Stat() test.List() test.GetInfo('他人QQ号码') test.AddToList('他人QQ号码') test.GetMsg() i=0 while i<1000: print i time.sleep(0.9) test.SendMsg('他人QQ号码',"一共有1000条消息,这是第"+str(i)+"条消息") i = i+1 test.Logout() 详细的请到 http://bbs.chinaunix.net/forum/viewtopic.php?t=563093&show;_type=new查看。 -- 梅劲松 -------------- next part -------------- A non-text attachment was scrubbed... Name: Neo Chan.vcf Type: text/x-vcard Size: 1081 bytes Desc: not available Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20050621/4a3b64fc/NeoChan.vcf
2005年06月21日 星期二 09:42
Skipped content of type multipart/mixed-------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3066 bytes Desc: not available Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20050621/2e76accc/smime-0001.bin
Zeuux © 2025
京ICP备05028076号