python查看微信好友是否删除自己
本文实例为大家分享了python微信好友删除的具体代码,供大家参考,具体内容如下
#weixin.py #coding:utf-8 #!/usr/bin/envpython #coding=utf-8 #通过该程序可以发现被删除的好友 importos importurllib,urllib2 importre importcookielib importtime importxml.dom.minidom importjson importsys importmath DEBUG=False MAX_GROUP_NUM=35#每组人数 QRImagePath=os.getcwd()+'/qrcode.jpg' tip=0 uuid='' base_uri='' redirect_uri='' skey='' wxsid='' wxuin='' pass_ticket='' deviceId='e000000000000000' BaseRequest={} ContactList=[] My=[] defgetUUID(): globaluuid url='https://login.weixin.qq.com/jslogin' params={ 'appid':'wx782c26e4c19acffb', 'fun':'new', 'lang':'zh_CN', '_':int(time.time()), } request=urllib2.Request(url=url,data=urllib.urlencode(params)) response=urllib2.urlopen(request) data=response.read() #printdata #window.QRLogin.code=200;window.QRLogin.uuid="oZwt_bFfRg=="; regx=r'window.QRLogin.code=(\d+);window.QRLogin.uuid="(\S+?)"' pm=re.search(regx,data) code=pm.group(1) uuid=pm.group(2) ifcode=='200': returnTrue returnFalse defshowQRImage(): globaltip url='https://login.weixin.qq.com/qrcode/'+uuid params={ 't':'webwx', '_':int(time.time()), } request=urllib2.Request(url=url,data=urllib.urlencode(params)) response=urllib2.urlopen(request) tip=1 f=open(QRImagePath,'wb') f.write(response.read()) f.close() ifsys.platform.find('darwin')>=0: os.system('open%s'%QRImagePath) elifsys.platform.find('linux')>=0: os.system('xdg-open%s'%QRImagePath) else: os.system('call%s'%QRImagePath) print'请使用微信扫描二维码以登录' defwaitForLogin(): globaltip,base_uri,redirect_uri url='https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=%s&uuid=%s&_=%s'%(tip,uuid,int(time.time())) request=urllib2.Request(url=url) response=urllib2.urlopen(request) data=response.read() #printdata #window.code=500; regx=r'window.code=(\d+);' pm=re.search(regx,data) code=pm.group(1) ifcode=='201':#已扫描 print'成功扫描,请在手机上点击确认以登录' tip=0 elifcode=='200':#已登录 print'正在登录...' regx=r'window.redirect_uri="(\S+?)";' pm=re.search(regx,data) redirect_uri=pm.group(1)+'&fun=new' base_uri=redirect_uri[:redirect_uri.rfind('/')] elifcode=='408':#超时 pass #elifcode=='400'orcode=='500': returncode deflogin(): globalskey,wxsid,wxuin,pass_ticket,BaseRequest request=urllib2.Request(url=redirect_uri) response=urllib2.urlopen(request) data=response.read() #printdata ''' <error> <ret>0</ret> <message>OK</message> <skey>xxx</skey> <wxsid>xxx</wxsid> <wxuin>xxx</wxuin> <pass_ticket>xxx</pass_ticket> <isgrayscale>1</isgrayscale> </error> ''' doc=xml.dom.minidom.parseString(data) root=doc.documentElement fornodeinroot.childNodes: ifnode.nodeName=='skey': skey=node.childNodes[0].data elifnode.nodeName=='wxsid': wxsid=node.childNodes[0].data elifnode.nodeName=='wxuin': wxuin=node.childNodes[0].data elifnode.nodeName=='pass_ticket': pass_ticket=node.childNodes[0].data #print'skey:%s,wxsid:%s,wxuin:%s,pass_ticket:%s'%(skey,wxsid,wxuin,pass_ticket) ifskey==''orwxsid==''orwxuin==''orpass_ticket=='': returnFalse BaseRequest={ 'Uin':int(wxuin), 'Sid':wxsid, 'Skey':skey, 'DeviceID':deviceId, } returnTrue defwebwxinit(): url=base_uri+'/webwxinit?pass_ticket=%s&skey=%s&r=%s'%(pass_ticket,skey,int(time.time())) params={ 'BaseRequest':BaseRequest } request=urllib2.Request(url=url,data=json.dumps(params)) request.add_header('ContentType','application/json;charset=UTF-8') response=urllib2.urlopen(request) data=response.read() ifDEBUG==True: f=open(os.getcwd()+'/webwxinit.json','wb') f.write(data) f.close() #printdata globalContactList,My dic=json.loads(data) ContactList=dic['ContactList'] My=dic['User'] ErrMsg=dic['BaseResponse']['ErrMsg'] iflen(ErrMsg)>0: printErrMsg Ret=dic['BaseResponse']['Ret'] ifRet!=0: returnFalse returnTrue defwebwxgetcontact(): url=base_uri+'/webwxgetcontact?pass_ticket=%s&skey=%s&r=%s'%(pass_ticket,skey,int(time.time())) request=urllib2.Request(url=url) request.add_header('ContentType','application/json;charset=UTF-8') response=urllib2.urlopen(request) data=response.read() ifDEBUG==True: f=open(os.getcwd()+'/webwxgetcontact.json','wb') f.write(data) f.close() #printdata dic=json.loads(data) MemberList=dic['MemberList'] #倒序遍历,不然删除的时候出问题.. SpecialUsers=['newsapp','fmessage','filehelper','weibo','qqmail','fmessage','tmessage','qmessage', 'qqsync','floatbottle','lbsapp','shakeapp','medianote','qqfriend','readerapp','blogapp', 'facebookapp','masssendapp','meishiapp','feedsapp','voip','blogappweixin','weixin', 'brandsessionholder','weixinreminder','wxid_novlwrv3lqwv11','gh_22b87fa7cb3c', 'officialaccounts','notification_messages','wxid_novlwrv3lqwv11','gh_22b87fa7cb3c','wxitil', 'userexperience_alarm','notification_messages'] foriinxrange(len(MemberList)-1,-1,-1): Member=MemberList[i] ifMember['VerifyFlag']&8!=0:#公众号/服务号 MemberList.remove(Member) elifMember['UserName']inSpecialUsers:#特殊账号 MemberList.remove(Member) elifMember['UserName'].find('@@')!=-1:#群聊 MemberList.remove(Member) elifMember['UserName']==My['UserName']:#自己 MemberList.remove(Member) returnMemberList defcreateChatroom(UserNames): MemberList=[] forUserNameinUserNames: MemberList.append({'UserName':UserName}) url=base_uri+'/webwxcreatechatroom?pass_ticket=%s&r=%s'%(pass_ticket,int(time.time())) params={ 'BaseRequest':BaseRequest, 'MemberCount':len(MemberList), 'MemberList':MemberList, 'Topic':'', } request=urllib2.Request(url=url,data=json.dumps(params)) request.add_header('ContentType','application/json;charset=UTF-8') response=urllib2.urlopen(request) data=response.read() #printdata dic=json.loads(data) ChatRoomName=dic['ChatRoomName'] MemberList=dic['MemberList'] DeletedList=[] forMemberinMemberList: ifMember['MemberStatus']==4:#被对方删除了 DeletedList.append(Member['UserName']) ErrMsg=dic['BaseResponse']['ErrMsg'] iflen(ErrMsg)>0: printErrMsg return(ChatRoomName,DeletedList) defdeleteMember(ChatRoomName,UserNames): url=base_uri+'/webwxupdatechatroom?fun=delmember&pass_ticket=%s'%(pass_ticket) params={ 'BaseRequest':BaseRequest, 'ChatRoomName':ChatRoomName, 'DelMemberList':','.join(UserNames), } request=urllib2.Request(url=url,data=json.dumps(params)) request.add_header('ContentType','application/json;charset=UTF-8') response=urllib2.urlopen(request) data=response.read() #printdata dic=json.loads(data) ErrMsg=dic['BaseResponse']['ErrMsg'] iflen(ErrMsg)>0: printErrMsg Ret=dic['BaseResponse']['Ret'] ifRet!=0: returnFalse returnTrue defaddMember(ChatRoomName,UserNames): url=base_uri+'/webwxupdatechatroom?fun=addmember&pass_ticket=%s'%(pass_ticket) params={ 'BaseRequest':BaseRequest, 'ChatRoomName':ChatRoomName, 'AddMemberList':','.join(UserNames), } request=urllib2.Request(url=url,data=json.dumps(params)) request.add_header('ContentType','application/json;charset=UTF-8') response=urllib2.urlopen(request) data=response.read() #printdata dic=json.loads(data) MemberList=dic['MemberList'] DeletedList=[] forMemberinMemberList: ifMember['MemberStatus']==4:#被对方删除了 DeletedList.append(Member['UserName']) ErrMsg=dic['BaseResponse']['ErrMsg'] iflen(ErrMsg)>0: printErrMsg returnDeletedList defmain(): opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar())) urllib2.install_opener(opener) ifgetUUID()==False: print'获取uuid失败' return showQRImage() time.sleep(1) whilewaitForLogin()!='200': pass os.remove(QRImagePath) iflogin()==False: print'登录失败' return ifwebwxinit()==False: print'初始化失败' return MemberList=webwxgetcontact() MemberCount=len(MemberList) print'通讯录共%s位好友'%MemberCount ChatRoomName='' result=[] foriinxrange(0,int(math.ceil(MemberCount/float(MAX_GROUP_NUM)))): UserNames=[] NickNames=[] DeletedList='' forjinxrange(0,MAX_GROUP_NUM): ifi*MAX_GROUP_NUM+j>=MemberCount: break Member=MemberList[i*MAX_GROUP_NUM+j] UserNames.append(Member['UserName']) NickNames.append(Member['NickName'].encode('utf-8')) print'第%s组...'%(i+1) print','.join(NickNames) print'回车键继续...' raw_input() #新建群组/添加成员 ifChatRoomName=='': (ChatRoomName,DeletedList)=createChatroom(UserNames) else: DeletedList=addMember(ChatRoomName,UserNames) DeletedCount=len(DeletedList) ifDeletedCount>0: result+=DeletedList print'找到%s个被删好友'%DeletedCount #raw_input() #删除成员 deleteMember(ChatRoomName,UserNames) #todo删除群组 resultNames=[] forMemberinMemberList: ifMember['UserName']inresult: NickName=Member['NickName'] ifMember['RemarkName']!='': NickName+='(%s)'%Member['RemarkName'] resultNames.append(NickName.encode('utf-8')) print'----------被删除的好友列表----------' print'\n'.join(resultNames) print'-----------------------------------' #windows下编码问题修复 classUnicodeStreamFilter: def__init__(self,target): self.target=target self.encoding='utf-8' self.errors='replace' self.encode_to=self.target.encoding defwrite(self,s): iftype(s)==str: s=s.decode('utf-8') s=s.encode(self.encode_to,self.errors).decode(self.encode_to) self.target.write(s) ifsys.stdout.encoding=='cp936': sys.stdout=UnicodeStreamFilter(sys.stdout) if__name__=='__main__': print'本程序的查询结果可能会引起一些心理上的不适,请小心使用...' print'回车键继续...' raw_input() main() print'回车键结束' raw_input()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。