python代码添加微信号
python 获取微信好友列表的方法微信web如下所示:
|
import urllib import urllib2 import os import time import 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)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/Dopamy_BusyMonkey/article/details/74568558