后端开发|Python教程
python,微信好友,删除自己
后端开发-Python教程
图片曝光单页源码,ubuntu换壁纸软件,爬虫数据怎么排列,nginx +php,67194seolzw
本文实例为大家分享了python微信好友删除的具体代码,供大家参考,具体内容如下
淘大客源码,Ubuntu 系统共存,python爬虫面试经验,php [”],seo流量转化lzw
#weixin.py#coding:utf-8# !/usr/bin/env python# coding=utf-8#通过该程序可以发现被删除的好友import osimport urllib, urllib2import reimport cookielibimport timeimport xml.dom.minidomimport jsonimport sysimport mathDEBUG = FalseMAX_GROUP_NUM = 35 # 每组人数QRImagePath = os.getcwd() + /qrcode.jpg ip = 0uuid = \base_uri = \redirect_uri = \skey = \wxsid = \wxuin = \pass_ticket = \deviceId = e000000000000000BaseRequest = {}ContactList = []My = []def getUUID(): global uuid url = https://login./jslogin params = { appid: wx782c26e4c19acffb, fun: ew, lang: zh_CN, \_: int(time.time()), } request = urllib2.Request(url=url, data=urllib.urlencode(params)) response = urllib2.urlopen(request) data = response.read() # print data # window.QRLogin.code = 200; window.QRLogin.uuid = "oZwt_bFfRg=="; regx = rwindow.QRLogin.code = (\d+); window.QRLogin.uuid = "(\S+?)" pm = re.search(regx, data) code = pm.group(1) uuid = pm.group(2) if code == 200: return True return Falsedef showQRImage(): global tip url = https://login./qrcode/ + uuid params = { : 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() if sys.platform.find(darwin) >= 0: os.system(open %s % QRImagePath) elif sys.platform.find(linux) >= 0: os.system(xdg-open %s % QRImagePath) else: os.system(call %s % QRImagePath) print 请使用微信扫描二维码以登录def waitForLogin(): global tip, base_uri, redirect_uri url = https://login./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() # print data # window.code=500; regx = rwindow.code=(\d+); pm = re.search(regx, data) code = pm.group(1) if code == 201: # 已扫描 print 成功扫描,请在手机上点击确认以登录 tip = 0 elif code == 200: # 已登录 print 正在登录... regx = rwindow.redirect_uri="(\S+?)"; pm = re.search(regx, data) redirect_uri = pm.group(1) + &fun=new base_uri = redirect_uri[:redirect_uri.rfind(/)] elif code == 408: # 超时 pass # elif code == 400 or code == 500: return codedef login(): global skey, wxsid, wxuin, pass_ticket, BaseRequest request = urllib2.Request(url=redirect_uri) response = urllib2.urlopen(request) data = response.read() # print data \ 0 OK xxx xxx xxx xxx 1\ doc = xml.dom.minidom.parseString(data) root = doc.documentElement for node in root.childNodes: if node.nodeName == skey:skey = node.childNodes[0].data elif node.nodeName == wxsid:wxsid = node.childNodes[0].data elif node.nodeName == wxuin:wxuin = node.childNodes[0].data elif node.nodeName == pass_ticket:pass_ticket = node.childNodes[0].data # print skey: %s, wxsid: %s, wxuin: %s, pass_ticket: %s % (skey, wxsid, wxuin, pass_ticket) if skey == \ or wxsid == \ or wxuin == \ or pass_ticket == \: return False BaseRequest = { Uin: int(wxuin), Sid: wxsid, Skey: skey, DeviceID: deviceId, } return Truedef webwxinit(): 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() if DEBUG == True: f = open(os.getcwd() + /webwxinit.json, wb) f.write(data) f.close() # print data global ContactList, My dic = json.loads(data) ContactList = dic[ContactList] My = dic[User] ErrMsg = dic[BaseResponse][ErrMsg] if len(ErrMsg) > 0: print ErrMsg Ret = dic[BaseResponse][Ret] if Ret != 0: return False return Truedef webwxgetcontact(): 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() if DEBUG == True: f = open(os.getcwd() + /webwxgetcontact.json, wb) f.write(data) f.close() # print data dic = json.loads(data) MemberList = dic[MemberList] # 倒序遍历,不然删除的时候出问题.. SpecialUsers = [ ewsapp, fmessage, filehelper, weibo, qqmail, fmessage, message, qmessage,qqsync, floatbottle, lbsapp, shakeapp, medianote, qqfriend, eaderapp, logapp,facebookapp, masssendapp, meishiapp, feedsapp, voip, logappweixin, weixin,randsessionholder, weixinreminder, wxid_novlwrv3lqwv11, gh_22b87fa7cb3c,officialaccounts, otification_messages, wxid_novlwrv3lqwv11, gh_22b87fa7cb3c, wxitil,userexperience_alarm, otification_messages] for i in xrange(len(MemberList) - 1, -1, -1): Member = MemberList[i] if Member[VerifyFlag] & 8 != 0: # 公众号/服务号MemberList.remove(Member) elif Member[UserName] in SpecialUsers: # 特殊账号MemberList.remove(Member) elif Member[UserName].find(@@) != -1: # 群聊MemberList.remove(Member) elif Member[UserName] == My[UserName]: # 自己MemberList.remove(Member) return MemberListdef createChatroom(UserNames): MemberList = [] for UserName in UserNames: 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() # print data dic = json.loads(data) ChatRoomName = dic[ChatRoomName] MemberList = dic[MemberList] DeletedList = [] for Member in MemberList: if Member[MemberStatus] == 4: # 被对方删除了DeletedList.append(Member[UserName]) ErrMsg = dic[BaseResponse][ErrMsg] if len(ErrMsg) > 0: print ErrMsg return (ChatRoomName, DeletedList)def deleteMember(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() # print data dic = json.loads(data) ErrMsg = dic[BaseResponse][ErrMsg] if len(ErrMsg) > 0: print ErrMsg Ret = dic[BaseResponse][Ret] if Ret != 0: return False return Truedef addMember(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() # print data dic = json.loads(data) MemberList = dic[MemberList] DeletedList = [] for Member in MemberList: if Member[MemberStatus] == 4: # 被对方删除了DeletedList.append(Member[UserName]) ErrMsg = dic[BaseResponse][ErrMsg] if len(ErrMsg) > 0: print ErrMsg return DeletedListdef main(): opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar())) urllib2.install_opener(opener) if getUUID() == False: print 获取uuid失败 return showQRImage() time.sleep(1) while waitForLogin() != 200: pass os.remove(QRImagePath) if login() == False: print 登录失败 return if webwxinit() == False: print 初始化失败 return MemberList = webwxgetcontact() MemberCount = len(MemberList) print 通讯录共%s位好友 % MemberCount ChatRoomName = \ result = [] for i in xrange(0, int(math.ceil(MemberCount / float(MAX_GROUP_NUM)))): UserNames = [] NickNames = [] DeletedList = \ for j in xrange(0, MAX_GROUP_NUM):if i * MAX_GROUP_NUM + j >= MemberCount: breakMember = 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() # 新建群组/添加成员 if ChatRoomName == \:(ChatRoomName, DeletedList) = createChatroom(UserNames) else:DeletedList = addMember(ChatRoomName, UserNames) DeletedCount = len(DeletedList) if DeletedCount > 0:result += DeletedList print 找到%s个被删好友 % DeletedCount # raw_input() # 删除成员 deleteMember(ChatRoomName, UserNames) # todo 删除群组 resultNames = [] for Member in MemberList: if Member[UserName] in result:NickName = Member[NickName]if Member[RemarkName] != \: NickName += (%s) % Member[RemarkName]resultNames.append(NickName.encode(utf-8)) print ---------- 被删除的好友列表 ---------- print \ .join(resultNames) print -----------------------------------# windows下编码问题修复class UnicodeStreamFilter: def __init__(self, target): self.target = target self.encoding = utf-8 self.errors = eplace self.encode_to = self.target.encoding def write(self, s): if type(s) == str:s = s.decode(utf-8) s = s.encode(self.encode_to, self.errors).decode(self.encode_to) self.target.write(s)if sys.stdout.encoding == cp936: sys.stdout = UnicodeStreamFilter(sys.stdout)if __name__ == \__main__: print 本程序的查询结果可能会引起一些心理上的不适,请小心使用... print 回车键继续... raw_input() main() print 回车键结束 raw_input()
<!–
在线源码编辑,vscode不会提示语法错误,ubuntu更新频繁,tomcat日志文件清空,爬虫工具github,php 微信授权源码,河南贴心seo优化使用方法,美女图片网站源码lzw
–>
如果觉得《python如何查看微信好友是否删除自己》对你有帮助,请点赞、收藏,并留下你的观点哦!