首页 > 编程 > Python > 正文

python 获取微信好友列表的方法(微信web)

2019-11-25 13:14:42
字体:
来源:转载
供稿:网友

如下所示:

 import urllibimport urllib2 import osimport timeimport re import cookielib import xml.dom.minidom import json tip = 0 uuid = ''successUrl = ''skey = ''wxsid = ''wxuin = ''pass_ticket = ''deviceId = 'e000000000000000'imagesPath = os.getcwd() + '/weixin.jpg' BaseRequest = {}base_uri = '' push_uri = '' def getUUID():  global uuid  url = 'https://login.weixin.qq.com/jslogin'  values = {     'appid':'wx782c26e4c19acffb',    'redirect_uri':'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage',    'fun':'new',    'lang':'zh_CN',    '_':int(time.time())  }   request = urllib2.Request(url=url, data=urllib.urlencode(values))    response = urllib2.urlopen(request)  data = response.read()   print data      regx = r'window.QRLogin.code = (/d+); window.QRLogin.uuid = "(/S+?)"'   pm = re.search(regx, data)   code = pm.group(1)   uuid = pm.group(2)   print code, uuid      if code == '200':     return True   return False  def show2DimensionCode():   global tip   url = 'https://login.weixin.qq.com/qrcode/' + uuid   values = {     't':'webwx',    '_':int(time.time())   }    request = urllib2.Request(url=url, data=urllib.urlencode(values))   response = urllib2.urlopen(request)   tip = 1    f = open(imagesPath, 'wb')   f.write(response.read())   f.close()   time.sleep(1)  os.system('call %s' % imagesPath)   print u'please sacn qcode by your phone'.encode('GBK')   def isLoginSucess():  global successUrl, base_uri, push_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   regx = r'window.code=(/d+)'  regxLogin = r'window.redirect_uri="(/S+?)"'   pm = re.search(regx, data)   pmLogin = re.search(regxLogin, data)  code = pm.group(1)  if pmLogin != None:   successUrl = pmLogin.group(1) + '&fun=new&version=v2'   if code == '201':     print'Scan QR code successfully!'   elif code == '200':     print'Logining...'     services = [      ('wx2.qq.com', 'webpush2.weixin.qq.com'),      ('qq.com', 'webpush.weixin.qq.com'),      ('web1.wechat.com', 'webpush1.wechat.com'),      ('web2.wechat.com', 'webpush2.wechat.com'),      ('wechat.com', 'webpush.wechat.com'),      ('web1.wechatapp.com', 'webpush1.wechatapp.com'),     ]     base_uri = successUrl[:successUrl.rfind('/')]     push_uri = base_uri     for (searchUrl, pushUrl) in services:      if base_uri.find(searchUrl) >= 0:       push_uri = 'https://%s/cgi-bin/mmwebwx-bin' % pushUrl       break   elif code == '408':     print'Login Timeout!'   return code   def webwxnewloginpage(): global successUrl, skey, wxsid, wxuin, pass_ticket, BaseRequest  request = urllib2.Request(url=successUrl)  response = urllib2.urlopen(request)  data = response.read()  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    BaseRequest = {   'Uin': wxuin,   'Sid': wxsid,   'Skey': skey,   'DeviceID': deviceId,  } def webwxinit():  global skey, pass_ticket, BaseRequest, base_uri  url = (base_uri + '/webwxinit?pass_ticket=%s&skey=%s&r=%s' % (pass_ticket, skey, int(time.time())))  params = {'BaseRequest': BaseRequest}  headers = {'content-type': 'application/json; charset=UTF-8'} request = urllib2.Request(url=url, data=json.dumps(params), headers=headers)  response = urllib2.urlopen(request)  data = response.read() print data def webwxgetcontact():  global skey, pass_ticket, base_uri   url = (base_uri + '/webwxgetcontact?pass_ticket=%s&skey=%s&r=%s' % (pass_ticket, skey, int(time.time())))  headers = {'content-type': 'application/json; charset=UTF-8'} request = urllib2.Request(url=url, headers=headers)  response = urllib2.urlopen(request) data = response.read() print data def main():    cookie = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))   urllib2.install_opener(cookie)    if getUUID() == False:    print'Get uuid unsuccessfully!'    return None    show2DimensionCode()   time.sleep(1)    while isLoginSucess() != '200':    pass    webwxnewloginpage()#   time.sleep(1)#   webwxinit()  time.sleep(1)  webwxgetcontact()    os.remove(imagesPath)   print'Login successfully!'  if __name__ == '__main__':   print'Welcome to use weixin personnal version'   print'Please click Enter key to continue......'  main()  

以上这篇python 获取微信好友列表的方法(微信web)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表