<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        python查看微信好友是否刪除自己

        來源:懂視網 責編:小采 時間:2020-11-27 14:27:01
        文檔

        python查看微信好友是否刪除自己

        python查看微信好友是否刪除自己:Python編程語言Python 是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum于1989年底發明,第一個公開發行版發行于1991年。Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠把用其他語言制作的各種模塊(尤其是C/C
        推薦度:
        導讀python查看微信好友是否刪除自己:Python編程語言Python 是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum于1989年底發明,第一個公開發行版發行于1991年。Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠把用其他語言制作的各種模塊(尤其是C/C

        Python編程語言

        Python 是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum于1989年底發明,第一個公開發行版發行于1991年。Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯結在一起。

        這篇文章主要為大家詳細介紹了python查看微信好友是否刪除自己,具有一定的參考價值,感興趣的小伙伴們可以參考一下

        本文實例為大家分享了python微信好友刪除的具體代碼,供大家參考,具體內容如下

        #weixin.py
        #coding:utf-8
        # !/usr/bin/env python
        # coding=utf-8
        
        #通過該程序可以發現被刪除的好友
        
        import os
        import urllib, urllib2
        import re
        import cookielib
        import time
        import xml.dom.minidom
        import json
        import sys
        import math
        
        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 = []
        
        
        def getUUID():
         global uuid
        
         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()
        
         # print data
        
         # 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)
        
         if code == '200':
         return True
        
         return False
        
        
        def showQRImage():
         global tip
        
         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()
        
         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.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()
        
         # print data
        
         # window.code=500;
         regx = r'window.code=(d+);'
         pm = re.search(regx, data)
        
         code = pm.group(1)
        
         if code == '201': # 已掃描
         print '成功掃描,請在手機上點擊確認以登錄'
         tip = 0
         elif code == '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('/')]
         elif code == '408': # 超時
         pass
         # elif code == '400' or code == '500':
        
         return code
        
        
        def login():
         global skey, wxsid, wxuin, pass_ticket, BaseRequest
        
         request = urllib2.Request(url=redirect_uri)
         response = urllib2.urlopen(request)
         data = response.read()
        
         # print data
        
         '''
         <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
        
         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 True
        
        
        def 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 True
        
        
        def 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 = ['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']
         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 MemberList
        
        
        def 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 True
        
        
        def 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 DeletedList
        
        
        def 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:
         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()
        
         # 新建群組/添加成員
         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 = 'replace'
         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()

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        python查看微信好友是否刪除自己

        python查看微信好友是否刪除自己:Python編程語言Python 是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum于1989年底發明,第一個公開發行版發行于1991年。Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠把用其他語言制作的各種模塊(尤其是C/C
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲一区欧洲一区| 亚洲av无码一区二区乱子伦as| 亚洲第一永久在线观看| 久久成人免费播放网站| 91天堂素人精品系列全集亚洲| 性xxxx视频免费播放直播 | 免费看又黄又爽又猛的视频软件 | 在线成人爽a毛片免费软件| 亚洲人成电影在在线观看网色| 久草免费手机视频| 亚洲网址在线观看| 最近免费中文字幕4| 亚洲AV无码一区二区乱子仑| 日韩a级毛片免费观看| 最新亚洲人成无码网www电影| 波多野结衣免费视频观看| 人成免费在线视频| 亚洲色成人中文字幕网站| 在线免费观看你懂的| 亚洲午夜久久久精品电影院| 成人av免费电影| 一级做性色a爰片久久毛片免费| 综合亚洲伊人午夜网| 无码av免费一区二区三区| 国产精品亚洲综合五月天| 免费国产高清视频| 久久成人免费大片| 亚洲午夜无码久久久久软件 | 亚洲女初尝黑人巨高清| 无码乱肉视频免费大全合集| 亚洲精品无码av中文字幕| 亚洲精品动漫人成3d在线| 日韩视频免费在线观看| 国产亚洲精aa在线看| 亚洲美日韩Av中文字幕无码久久久妻妇| 中文日本免费高清| 亚洲 日韩 色 图网站| 伊人亚洲综合青草青草久热| 无码国产精品一区二区免费式直播| 看免费毛片天天看| 亚洲日韩中文字幕天堂不卡|