Python爬取微信小程序Charles实现过程图解

一、前言

最近需要获取微信小程序上的数据进行分析处理,第一时间想到的方式就是采用python爬虫爬取数据,尝试后发现诸多问题,比如无法获取目标网址、解析网址中存在指定参数的不确定性、加密问题等等,经过一番尝试,终于使用 Charles 抓取到指定微信小程序中的数据,本文进行记录并总结。

环境配置:

电脑:Windows10,连接有线网

手机:iPhone Xr,连接无线网

注:有线网与无线网最好位于同一网段下。

本文有线网网址:192.168.131.24,无线网网址:192.168.210.223

二、Charles配置与使用 1.Charles简介

Charles,一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。

Charles主要功能:

1. 支持SSL代理。可以截取分析SSL的请求。

2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。

3. 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。

4. 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。

5. 支持重发网络请求,方便后端调试。

6. 支持修改网络请求参数。

7. 支持网络请求的截获并动态修改。

8. 检查HTML,CSS和RSS内容是否符合W3C标准。

----百度百科

Charles,著名的抓包工具,可以抓取移动端与pc端网络访问的所有数据,操作简单,试用期后每30分钟需要重启一次,且启动有10秒延迟,较麻烦。

2.Charles安装

Charles官网下载:https://www.charlesproxy.com/download/

下载对应版本后完成安装。

3.证书配置(重要!) Charles安装证书:

Help -> SSL Proxying -> Install Charles Root Certificate

在Windows端需要安装Charles证书,点击后如图所示(此为安装成功后截图):

点击安装证书,

点击下一步,

在此选择第二个,将所有证书都放入下列存储,点击浏览,选择受信任的根证书颁发机构。

确定后下一步。

点击完成后提示导入成功。此时需要重新进入Help -> SSL Proxying -> Install Charles Root Certificate,查看证书结果,成功时如下提示:

移动端安装证书(重要!)

移动端同样也需要安装Charles证书,具体操作如下:

选择在移动端安装证书选项,Charles提示如下:

提示需要设置手机http代理为192.168.131.24,端口为8888,然后在手机浏览器上访问 chls.pro/ssl 下载安装证书。如果IOS 版本在10以上,必须在设置->通用->关于本机->证书信任设置中打开对根证书启用完全信任。

接下来逐一操作如下:

1. 手机上打开无线局域网链接,选择链接的无线网信息页如下:

2. 在http代理中选择手动,添加Charles提示的http代理:192.168.1324,端口为8888,选择存储。

3. 手机上设置->通用->关于本机->证书信任设置,打开右边按钮,开启完全信任。

注:手机设置完成后若无法上网,极有可能是ios版本过高并没有开启对证书的 完全信任、完全信任、完全信任 导致!!!

手机正确连接后,Charles会弹框类似如下,说明连接成功。(图中IP地址为另一个测试机)

浏览器端配置

谷歌与火狐浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

至此,证书的相关三点设置完毕。

4.Charles配置 取消Windows代理

由于此次目标是抓取移动端微信小程序中的数据,取消此选项是尽量减少无关的数据量。

查看本机IP地址与配置相关端口号

默认端口号是8888,可以修改。

Help -> Local ip Address :

Proxy -> Proxy Settings :

ssl代理设置

安装完成ssl证书后,需要在Charles中开启ssl代理设置,在Proxy->SSL Proxying Settings中,勾选Enable SSL Proxying,

点击add,新增访问的目标地址,根据提示,空的host与port匹配所有的值,可以使用*与?进行匹配,此处host与port均填写*。

至此,Charles相关的配置完毕。

三、Charles数据抓取

手机与Charles均配置成功后,打开微信小程序,此时Charles会自动获取http与https访问,如下:

点击左边解析的链接,选择Contents,JSON Text,可以看到解析出来的微信小程序数据内容。

在Overview中,可以看到访问的url地址为:

https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx?topic=8&aris_data=kcb_1_announced_corp&pageIndex=1&pageSize=5,

主要参数为pageIndex与pageSize,即页面索引与当页显示的数据量,在浏览器中访问该url,可以看到返回的结果为json格式的数据:

其实,当通过Charles解析出url链接时,即可通过python爬虫爬取接口返回的数据了,不涉及反爬虫等问题,非常方便。

四、问题集锦

1.网络问题:

网传手机与电脑链接的网段必须相同,但是也有不一致的说法,本文测试时,无线网与有线网是处在同一网段下。

2. 手机或电脑无法联网:

证书问题:证书未能正确安装,查看手机上是否始终信任证书!(多数情况下如此);电脑上查看证书是否安装在受信任的位置,浏览器中的证书是否正确添加。

防火墙问题:关闭Windows10的防火墙,取消阻止传入连接。

其他问题:网传Charles开启了White list,但测试时并未发现。

3.https加密的链接显示unknow

此问题遇到的可能性最大,导致的原因很多,

最有可能的原因在于证书的问题,证书未能正确安装,查看手机上是否始终信任证书!!(多数情况下如此,注意iOS版本问题,过高需要始终信任此证书);电脑上查看证书是否安装在受信任的位置。

五、补充

目前来说,采用Charles抓取移动端微信小程序数据应该是比较容易的,就是配置过程与安装证书较为繁琐。

除此之外,网传另外一种方式,使用TBS爬取微信小程序,本人尝试后始终未能正确爬取数据,如哪位大神操作正确,抓取数据顺利,还望告知,不胜感激!

TBS爬取微信小程序参考连接如下:

https://my.oschina.net/sumiao/blog/1587350?utm_source=debugrun&utm_medium=referral

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 使用python实现微信小程序自动签到功能

    功能描述目标 完成多账号微信小程序每天自动签到 输出 签到成功则向微信群发送签到成功的信息 否则提示用户签到失败,需手动签到 包管理 requests itchat time threading 程序的结构设计步骤1 获取要发送的json数据:地址 步骤2 向服务器发送请求 步骤3 根据服服务器响应判断签到是否完成 步骤4 微信交互 代码实现使用findler抓包工具查看请求类型 https://reserve.25team.com/wxappv1/yi/index?version=13 可以看

  • Python编写打字训练小程序

    你眼中的程序猿 别人眼中的程序猿,是什么样子?打字如飞,各种炫酷的页面切换,一个个好似黑客般的网站破解.可现实呢? 二指禅的敲键盘,写一行代码,查半天百度-那么如何能让我们从外表上变得更像一个程序猿呢?当然是训练我们的打字速度了啊! 训练打字 很羡慕那些盲打速度炒鸡快的人,看起来就比较炫酷.但很多IT男打字速度并不快,甚至还有些二指禅的朋友们,太影响装13效果了.那么今天我们就来使用Python写一个打字训练的小工具吧.先来看看使用效果- 我们使用Python内置的GUI模块Tkinter来编写

  • Python爬取微信小程序通用方法代码实例详解

    背景介绍 最近遇到一个需求,大致就是要获取某个小程序上的数据.心想小程序本质上就是移动端加壳的浏览器,所以想到用Python去获取数据.在网上学习了一下如何实现后,记录一下我的实现过程以及所踩过的小坑.本文关键词:Python,小程序,Charles抓包 目标小程序: 公众号"同城商圈网"左下角"找商家"->汽车维修->小车维修->所有的商家信息,如下图所示: 环境 PC端:Windows 10 移动端:iPhone 软件:Charles Char

  • 从0到1使用python开发一个半自动答题小程序的实现

    前言 最近每天都有玩微信读书上面的每日一答的答题游戏,完全答对12题后,可以瓜分无限阅读卡.但是从小就不太爱看书的我,很难连续答对12道题,由此,产生了写一个半自动答题小程序的想法.我们先看一张效果图吧(ps 这里主要是我电脑有点卡,点击左边地选项有延迟) 项目GIthub地址:微信读书答题python小程序 觉得对你有帮助的请点个⭐来支持一下吧. 演示图: 做前准备 mumu模拟器 因为手边没有安卓手机,所以只能在模拟器上进行模拟,如果手上有安卓手机地,可以适当地修改一下程序.需要安装微信和微

  • 基于Python的一个自动录入表格的小程序

    ## 帮阿雪写的一个小程序 --------------------------------------------------------------------------------------------------- 上大学的时候,总是会由很多表格需要同学们去搞,尤其是刚开学的那个时候,显然是很烦躁, 阿雪刚开学的时候,作为班干部,表示有时候刚录表不是很熟悉经常会弄到很晚,甚至还会弄错, 这就让我很是触动,所以想帮她搞一搞,顺便增强一下我们的友谊/hhhhhh ------------

  • Python Flask微信小程序登录流程及登录api实现代码

    一.先来看看效果 接口请求返回的数据: 二.官方登录流程图 三.小程序登录流程梳理: 1.小程序端调用wx.login 2.判断用户是否授权 3.小程序端访问 wx.getUserInfo 4.小程序端js代码: wx.login({ success: resp => { // 发送 res.code 到后台换取 openId, sessionKey, unionId console.log(resp); var that = this; // 获取用户信息 wx.getSetting({ su

  • python英语单词测试小程序代码实例

    这篇文章主要介绍了python英语单词测试小程序代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 爬取了扇贝英语网,并制作了一个英语单词测试的小程序,还能生成错词本,一起来看下代码吧- import requests #扇贝网爬虫,获取英语单词 category_res=requests.get('https://www.shanbay.com/api/v1/vocabtest/category/?_=1566889802182') ca

  • python实现音乐播放和下载小程序功能

    (本篇部分代码综合整理自B站,B站有手把手说明的教程) 1.网易云非付费内容爬取器(声明:由于技术十分简单,未到触犯软件使用规则的程度)驱动Edge浏览器(自己写驱动会更高端)进入界面,爬取列表中第一个音频地址并存入相应文件夹中.这里有一个最简单的爬虫程序和一个最简单的tkinter GUI编程. 注意,要先在网易云音乐网页中将第一个对应音频链接的位置定位: 对于以上定位可通过如下方式获得(定位器): req = driver.find_element_by_id('m-search') a_i

  • Python爬取微信小程序Charles实现过程图解

    一.前言 最近需要获取微信小程序上的数据进行分析处理,第一时间想到的方式就是采用python爬虫爬取数据,尝试后发现诸多问题,比如无法获取目标网址.解析网址中存在指定参数的不确定性.加密问题等等,经过一番尝试,终于使用 Charles 抓取到指定微信小程序中的数据,本文进行记录并总结. 环境配置: 电脑:Windows10,连接有线网 手机:iPhone Xr,连接无线网 注:有线网与无线网最好位于同一网段下. 本文有线网网址:192.168.131.24,无线网网址:192.168.210.2

  • windows上利用charles抓取微信小程序数据包,手机APP数据包(HTTP与HTTPS数据包)

    1.下载charles包.安装 Charles Proxy抓包工具 v4.1 破解文件 win64 附破解方法 2.关闭电脑防火墙 打开控制面板,选择Windows防火墙,关了(不关很可能没法抓包,在这栽过坑) 2.连接手机 2.1 用数据线把手机连上电脑 2.2 查电脑ip,命令行输入 ipconfig 2.3 修改手机网络代理 手机网络改为代理,ip为电脑ip,端口8888(charles默认端口,若被其他程序占用可修改,原则是保持电脑和手机一致) 3.安装SSL证书 (大多数app或小程序

  • MAC系统利用charles抓取微信小程序和手机APP数据包(http和https数据包)

    本文中使用的是mac上的抓包工具charles进行抓包,手机是华为荣耀8 下载并安装Charles for Mac Charles for Mac(HTTP信息抓包工具) V4.2.5 苹果电脑版 要想抓取到微信小程序的数据首先要解决的第一个问题件就是如何通过charles抓取手机上的数据具体配置过程如下: MAC上的Charles设置 第一步,charles上通过proxy->proxy setting进入代理设置,入口如下图所示 点击后进入如下所示界面 记住此处的port,默认为8888,也

  • Python爬取微信读书实现读书免费自由

    目录 前情提要 爬取小说 白嫖小说 大家好,我是小五 前情提要 不知道用微信读书的朋友多不多,这里顺便安利一下哈. 我目前看电子书的话基本都是在用微信读书,毕竟白嫖的无限卡真香. 在微信读书上,不仅很多正版的Python书籍电子书可以直接看,还可以在阅读的同时看别人写的标注. 但是无限卡对于小说不太友好,只能阅读开头的章节,后面的章节就需要变相付费了. 虽然知道番茄小说,七猫小说这种都能免费看,但是实在不愿意为了一部小说再多下一个软件. 幸亏微信读书出了一个功能--可以自己上传书籍,支持支持tx

  • python爬取一组小姐姐图片实例

    目录 前言 引入库 网页分析 总结 完整代码 前言 前段时间我有个朋友看到一些小姐姐的照片,想全部下载下来,叫我帮个忙.于是花费了半天给他全部下载了下来. 引入库 import time import requests from lxml import etree 这三个库是为了让我们在请求别人网站的时候,让程序休息一会,避免别人的网站会拦截或者崩溃和将得到的页面源代码进行解析. 网页分析 利用浏览器的开发者模式,对页面进行分析,找出我们所需要的每个图片封面url href = tree.xpa

  • 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 Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个人觉得的微信小程序与后台的交互有点像ajax,所以有ajax开发经验的同学开发小程序应该很容易上手,因为本文着重讲解后台程序的搭建,所以,微信小程序的前端开发将一笔带过,有兴趣学习小程序前端语言的同学可移步网易云课堂的一套快速入门课程<轻松玩转微信小程序>. 分三步讲解微信小程序与Python后台

  • 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爬取微信公众号文章图片并转为PDF

    遇到那种有很多图的微信公众号文章咋办?一个一个存很麻烦,应朋友的要求自己写了个爬虫.2.0版本完成了!完善了生成pdf的功能,可根据图片比例自动调节大小,防止超出页面范围,增加了序号方面查看 #-----------------settings--------------- #url='https://mp.weixin.qq.com/s/8JwB_SXQ-80uwQ9L97BMgw' print('jd3096 for king 2.0 VIP8钻石永久会员版') print('愿你远离流氓软

随机推荐