南强小屋 Design By 杰米
这是我最初学习时自己做的一个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 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无Python3.2模拟实现webqq登录的评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?