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)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用python itchat包爬取微信好友头像形成矩形头像集的方法

    初学python,我们必须干点有意思的事!从微信下手吧! 头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~ 话不多说,直接上代码,注释我写了比较多,大家应该能看懂 import itchat import os import PIL.Image as Image from os import listdir import math import sys print("请输入查询模式:0-显示所有好友头像,但最终矩形头像集最后一行可能残缺:1-头像集为完整矩形,但好友可能不全,即在0模式下舍弃

  • python爬取微信公众号文章

    本文实例为大家分享了python爬取微信公众号文章的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup from requests.exceptions import RequestException import time import random import MySQLdb import threading import socket import math soc

  • python爬取指定微信公众号文章

    本文实例为大家分享了python爬取微信公众号文章的具体代码,供大家参考,具体内容如下 该方法是依赖于urllib2库来完成的,首先你需要安装好你的python环境,然后安装urllib2库 程序的起始方法(返回值是公众号文章列表): def openUrl(): print("启动爬虫,打开搜狗搜索微信界面") # 加载页面 url = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query=要爬取的公众号名

  • Python提取支付宝和微信支付二维码的示例代码

    支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件,但图片处理软件不利于批处理,且学习也需要一定成本.本文将教你使用 Python 的图像处理库 pillow,轻松批量提取图片中间的方形二维码部分. 提取思路 以微信支付收款码图片为例: 分析图片我们可以看到,二维码位于白色背景中,而白色背景又位于绿色背景上.我们以图片左上角为坐标原点,横向为 x

  • python-itchat 获取微信群用户信息的实例

    如下所示: import itchat, time from itchat.content import TEXT #name = ' ' roomslist = [] itchat.auto_login(enableCmdQR = False) def getroom_message(n): #获取群的username,对群成员进行分析需要用到 itchat.dump_login_status() # 显示所有的群聊信息,默认是返回保存到通讯录中的群聊 RoomList = itchat.se

  • Python 微信之获取好友昵称并制作wordcloud的实例

    最近看到网上有人用Python获取微信的一些信息,感觉挺有意思,对于我一个Python刚入门的人来说,正需要一些代码片段来激起我的兴趣,所以自己也写了一些,废话不多说,直接上代码!!! coding:utf-8 微信好友昵称WordCloud import itchat import re import os import matplotlib.pyplot as plt from wordcloud import WordCloud, ImageColorGenerator import nu

  • python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用requests.get()获取的内容是不含推送消息的,这里使用selenium+PhantomJS处理 代码 #! /usr/bin/env python3 from selenium import webdriver from datetime import datetime import bs4, requ

  • python 爬取微信文章

    本人想搞个采集微信文章的网站,无奈实在从微信本生无法找到入口链接,网上翻看了大量的资料,发现大家的做法总体来说大同小异,都是以搜狗为入口.下文是笔者整理的一份python爬取微信文章的代码,有兴趣的欢迎阅读 #coding:utf-8 author = 'haoning' **#!/usr/bin/env python import time import datetime import requests** import json import sys reload(sys) sys.setd

  • python爬取微信公众号文章的方法

    最近在学习Python3网络爬虫开发实践(崔庆才 著)刚好也学习到他使用代理爬取公众号文章这里,但是照着他的代码写,出现了一些问题.在这里我用到了这本书的前面讲的一些内容进行了完善.(作者写这个代码已经是半年前的事了,但腾讯的网站在这半年前进行了更新) 下面我直接上代码: TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive

  • python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 conn = pymysql.connect(host='你的数据库地址', port=端口, user='用户名', passwd='密码', db='数据库名称', charset='utf8') # 创建游标 cursor = conn.cursor() cursor.execute("sel

  • Python爬取个人微信朋友信息操作示例

    本文实例讲述了Python爬取个人微信朋友信息操作.分享给大家供大家参考,具体如下: 利用Python的itchat包爬取个人微信号的朋友信息,并将信息保存在本地文本中 思路要点: 1.利用itchat.login(),实现微信号的扫码登录 2.通过itchat.get_friends()函数获取朋友信息 代码: 本文代码只获取了几个常用的信息,更多信息可从itchat.get_friends()中取 #获取个人微信号中朋友信息 #导入itchat包 import itchat #获取个人微信号

  • python获取微信小程序手机号并绑定遇到的坑

    最近在做小程序开发,在其中也遇到了很多的坑,获取小程序的手机号并绑定就遇到了一个很傻的坑. 流程介绍 官方流程图 小程序使用方法 需要将 <button> 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号. <button open-type="getPhoneN

  • python使用webdriver爬取微信公众号

    本文实例为大家分享了python使用webdriver爬取微信公众号的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- from selenium import webdriver import time import json import requests import re import random #微信公众号账号 user="" #公众号密码 password="" #设置要爬取的公众号列表 gzlist=['香河微服务

随机推荐