幽灵资源网 Design By www.bzswh.com
这是我最初学习时自己做的一个python模拟登录webqq的实例代码,具体代码如下
import hashlib
from urllib import request,parse
from http import cookiejar
import re,random,time
import threading as th
import json.encoder as json_encode
import json.decoder as json_decode
class QQ:
"""
Login QQ
"""
__headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.9 Safari/534.30', 'Referer':'http://ui.ptlogin2.qq.com/cgi-bin/login"""
QQ密码加密部份
"""
return hashlib.md5( (self.__md5_3((password).encode('utf-8')) + (verifycode).upper()).encode('utf-8')).hexdigest().upper()
pass
def __md5_3(self,str):
"""
QQ密码md5_3部份
"""
return hashlib.md5(hashlib.md5(hashlib.md5(str).digest()).digest()).hexdigest().upper()
pass
def httpproess(self):
"""
初始化模拟进程
"""
self.__http['cj'] = cookiejar.MozillaCookieJar(self.__cookiepath)
self.__http['opener'] = request.build_opener(request.HTTPCookieProcessor(self.__http['cj']))
return self.__http
pass
def __request(self,url,method='GET',data={},savecookie=False):
"""
请求url
"""
if (method).upper() == 'POST':
data = parse.urlencode(data).encode('utf-8')
self.__http['req'] = request.Request(url,data,self.__headers)
else:
self.__http['req'] = request.Request(url=url,headers=self.__headers)
fp = self.__http['opener'].open(self.__http['req'])
try:
str = fp.read().decode('utf-8')
except UnicodeDecodeError:
str = fp.read()
if savecookie == True:
self.__http['cj'].save(ignore_discard=True,ignore_expires=True)
fp.close()
return str
pass
def __getcookies(self,name):
fp = open(self.__cookiepath)
fp.seek(130)
for read in fp.readlines():
str = read.split(name)
if len(str) == 2:
fp.close()
return str[1].strip()
fp.close()
return None
pass
def __getverifycode(self):
"""
@url:http://ptlogin2.qq.com/check"""
urlv = 'http://ptlogin2.qq.com/check"""
@url:http://ptlogin2.qq.com/login
@params:{u:644826377
p:73DA5C1145E0F82247F60B3A17B89E6A verifycode:!S10 webqq_type:10
remember_uin:1 login2qq:1 aid:1003903 u1:http://webqq.qq.com/loginproxy.html"""
urlv = 'http://ptlogin2.qq.com/login"&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Fstrong%3Dtrue" + '&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert'
str = self.__request(url = urlv,savecookie=True)
if str.find('登录成功') != -1:
#执行二次登录
self.__ptwebqq = self.__getcookies('ptwebqq')
self.__skey = self.__getcookies('skey')
self.__request_post()
elif str.find('不正确') != -1:
print('你输入的帐号或者密码不正确,请重新输入。')
else:
print('登录失败')
pass
def __request_post(self):
'''
http://d.web2.qq.com/channel/login2
r:{"status":"online","ptwebqq":"95b148b95af9be7677757b3a629e3904f52f153d0b714c527f81f8d9e385867a","passwd_sig":"",
"clientid":"21628014","psessionid":null}
clientid:21628014
psessionid:null
'''
self.__headers.update({'Referer':'http://d.web2.qq.com/proxy.html"""
不知道干嘛的,一分钟连接一次,属于长连接,接收消息
@url:http://d.web2.qq.com/channel/poll2
r:{"clientid":"9467930","psessionid":"8368046764001e636f6e6e7365727665725f77656271714031302e3132382e36362e31313500003058000000c0026e040009456f266d0000000a407169446b464737436b6d00000028f8d256743e5c191cb40a2217845fab12fda62acd2e6145ae196976d7a8b3bb11a64d3c9565868322","key":0,"ids":[]}
clientid:9467930
psessionid:8368046764001e636f6e6e7365727665725f77656271714031302e3132382e36362e31313500003058000000c0026e040009456f266d0000000a407169446b464737436b6d00000028f8d256743e5c191cb40a2217845fab12fda62acd2e6145ae196976d7a8b3bb11a64d3c9565868322
"""
self.__headers.update({'Referer':'http://d.web2.qq.com/proxy.html"""
#也不知道是什么,反正一直请求
@url:http://webqq.qq.com/web2/get_msg_tip"""
self.__headers.update({'Referer':'http://webqq.qq.com/'})
self.__rc += 1
num = 100 + self.__rc
t = '%s' % '%d' % time.time() + '%s' % num
urlv = 'http://webqq.qq.com/web2/get_msg_tip"to":3023379661,"face":180,"content":"[\"哈哈\",\"\\n【提示:此用户正在使用WebQQ:http://webqq.qq.com/】\",[\"font\", {\"name\":\"宋体\",\"size\":\"10\",\"style\":[0,0,0],\"color\":\"000000\"}]]","msg_id":31330001,"clientid":"76133590", "psessionid":"s"}
clientid:76133590
psessionid:s
Referer:http://d.web2.qq.com/proxy.html"retcode":0,"result":"ok"}
'''
self.__send_num +=1
msg = "[\""+ msg +"\",[\"font\",{\"name\":\"宋体\",\"size\":\"10\",\"style\":[0,0,0],\"color\":\"000000\"}]]"
self.__headers.update({'Referer':'http://d.web2.qq.com/proxy.html"retcode":0,"result":[{"poll_type":"message","value":{"msg_id":13013,"from_uin":3023379661,"to_uin":644826377,"msg_id2":503935,"msg_type":9,"reply_ip":176752345,"time":1316143960,"content":[["font",{"size":13,"color":"000000","style":[0,0,0],"name":"\u5B8B\u4F53"}],"\u4E0D\u662F\u5427\u3002"]}}]}
'''
self.__send_message(uid,'我是机器人%s' % time.time())
pass
def __send_group_message(self,gid,msg):
'''
@url:http://d.web2.qq.com/channel/send_qun_msg2
r:{"group_uin":1132101900,"content":"[\"哈哈哈,测试\",\"\\n【提示:此用户正在使用WebQQ:http://webqq.qq.com/】\",[\"font\", {\"name\":\"宋体\",\"size\":\"10\",\"style\":[0,0,0],\"color\":\"000000\"}]]","msg_id":31330002,"clientid":"76133590",
"psessionid":"a"}
clientid:76133590
psessionid:a
Referer:http://d.web2.qq.com/proxy.html"retcode":0,"result":"ok"}
'''
self.__send_num +=1
msg = "[\"" +msg + "\",[\"font\",{\"name\":\"宋体\",\"size\":\"10\",\"style\":[0,0,0],\"color\":\"000000\"}]]"
self.__headers.update({'Referer':'http://d.web2.qq.com/proxy.html"retcode":0,"result":[{"poll_type":"group_message","value":{"msg_id":8044,"from_uin":1132101900,"to_uin":644826377,"msg_id2":178306,"msg_type":43,"reply_ip":2886742214,"group_code":317106137,"send_uin":3023379661,"seq":10654,"time":1316143836,"info_seq":32946855,"content":[["font",{"size":13,"color":"000000","style":[0,0,0],"name":"\u5B8B\u4F53"}],"\u5DE5"]}}]}
'''
self.__send_group_message(gid,'我是机器人%s' % time.time())
pass
def __Login(self):
"""
qq登录
"""
self.__qq = input('QQ号:')
self.__pswd = input('QQ密码:')
self.__qq = self.__qq.strip()
self.__pswd = self.__pswd.strip()
self.__verifycode = self.__getverifycode()
self.__pswd = self.__preprocess(
self.__pswd,#密码 '%s' % self.__verifycode[1] #验证码 )
self.__request_login()
pass
s = QQ()
以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。