【全网最详细】手把手教学Charles抓包工具详细自学教程,完整版安装教程,详细介绍工具栏如何使用及实战案例(建议收藏)

Charles抓包工具

  • 【1】Charels简介
  • 【2】Charles安装
      • Charles客户端下载
      • 下载安装完成后激活
      • Charles配置
      • 苹果系统操作
  • 【3】什么是证书?为何需要证书?
      • http协议是不安全的
      • 使用对称秘钥进行数据加密
      • 非对称秘钥加密
      • 小技巧
  • 【4】Charles 乱码解决办法
      • 1.解决response 方法
      • 2.抓取https请求有乱码
      • 3.抓取手机端出现乱码
  • 【5】案例
      • 抓取微信小程序
      • 抓取美女轩公众号里的【美女精选】

【1】Charels简介

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

【2】Charles安装

Charles客户端下载

官网地址:https://www.charlesproxy.com/download/

选择适合自己的系统版本下载

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下载安装完成后激活

激活网站地址:https://www.zzzmode.com/mytools/charles/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

打开安装好的Charles,菜单栏 Help->Register Charles 弹出注册的窗口填入Registered Name和生成的license key,点击 Register。

Charles配置

打开Charles,先安装证书并且信任
在这里插入图片描述

证书下载好之后,找到证书文件,双击进行安装证书(I),将其安装到【受信任】目录中,出现信任选项,点击始终信任即可。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

证书状态显示:该证书没有问题就表示导入成功了。

设置SSL,保证可以抓取https协议的请求:

在这里插入图片描述

在这里插入图片描述

这是端口号:

在这里插入图片描述

苹果系统操作

如果是mac操作系统需要如下操作,其他系统忽略该操作:

在这里插入图片描述

配置完成,可以使用Charles进行抓包了

工具栏苹果系统展示:

在这里插入图片描述

工具栏windows系统展示:

在这里插入图片描述

【3】什么是证书?为何需要证书?

首先明确一点,安装证书的目的是为了是的抓包工具可以抓取https协议的请求。

http协议是不安全的

在https诞生之前,所有网站都使用http协议,而http协议在数据传输的过程中都是明文,所以可能存在数据泄露和篡改。

在这里插入图片描述

使用对称秘钥进行数据加密

为了防止数据泄露和篡改,我们对数据进行加密,如:生成一个对称密码【DKUFHNAF897123F】,将对称秘钥分别交给浏览器和服务器端,他们之间传输的数据都使用对称秘钥进行加密和解密。

在这里插入图片描述

请求和响应流程如下:

  1. 客户端使用对称秘钥对请求进行加密,并发送给服务端。
  2. 服务端接收到密文之后,使用对称秘钥对密文进行解密,然后处理请求。 最后再使用对称秘钥把要返回的内容再次加密,返回给客户端。
  3. 客户端接收到密文之后,使用对称秘钥进行解密,并获取最终的响应内容。

如此一来,数据传输都是密文,解决了明文传输数据的问题。但是,这么干有bug。

  • 浏览器如何获取对称秘钥?
  • 如果每个客户端的对称秘钥相同,浏览器能拿到对称秘钥,那么黑客也可以拿到,所以,数据加密也就没有意义了。

非对称秘钥加密

公钥私钥对儿:公钥负责加密,私钥负责解密

在这里插入图片描述

如此一来,解决了 动态对称秘钥 和 数据加密的问题,因为每个用户的对称秘钥都是随机生成且传输的过程中都使用公钥加密(公钥加密的数据只有私钥能解密),所有黑客无法截获对称秘钥。而数据传输是通过对称秘钥加密过的,所以黑客即使能获取数据也无法去解密看到真实的内容。 看似无懈可击,但是,这么干还是又bug:如果黑客在上图 【步骤2】劫持,黑客把自己的公钥返回给客客户端,那么客户端会使用黑客的公钥来加密对称秘钥,黑客在【步骤6】截获请求,使用自己的私钥获取对称秘钥,后面过程全都会完蛋…

CA证书应用

使用 ca 证书可以解决黑客劫持的问题

在这里插入图片描述

如此一来,就解决了黑客劫持的问题,因为即使黑客劫持后的给浏览器即使返回了证书也无法通过校验,同时浏览器也会提示错误信息。

https可以保证数据安全,但由过程需要反复加密解密所有访问速度会有所下降(鱼和熊掌不能兼得)。

小技巧

过滤器:

在这里插入图片描述

数据包内容搜索:Ctrl + F

在这里插入图片描述

请求修改:用来验证哪些请求参数是必要的

请求sogou关键字搜索,然后在数据包内容搜索框中,搜索显示页面中的文字内容,定位到指定数据包,然后,选中该数据包,按下Compose键,进行请求参数修改,然后重新发送请求,查看删除参数后,响应数据是否依然正常。

在这里插入图片描述

【4】Charles 乱码解决办法

在刚接触Charles进行抓包使用时,遇到了两个问题:

# 1、Charles上抓的包出现了乱码;
# 2、Charles开启SSL Proxying代理后出现了手机无法上网或手机和电脑浏览器都无法上网的情况。浏览器提示证书不可用或过期。尝试了很久终于解决了这两个问题,下面记录一下处理历程。

在这里插入图片描述

1.解决response 方法

打开Charles安装的目录下,Charles.ini文件,添加内容如下:

在这里插入图片描述

# 添加内容:
vmarg.3=-Dfile.encoding=UTF-8
Charles.ini 文件全部内容working.directory=.
classpath.1=lib/charles.jar
main.class=com.xk72.charles.gui.MainWithClassLoader
vm.version.min=11
vm.location=jdk\bin\server\jvm.dll
vmarg.1=-Dsun.java2d.d3d=false
vmarg.2=-Djava.net.preferIPv4Stack=false
vmarg.3=-Djava.net.preferIPv6Addresses=true
vmarg.4=-Djava.library.path=lib
vmarg.5=-Dfile.encoding=UTF-8
dde.enabled=true
dde.class=com.xk72.charles.win32.Win32DDEManager
dde.server.name=Charles
dde.topic=System
single.instance=dde
log.level=warning[ErrorMessages]
java.not.found=The bundled Java installation was not found. Please uninstall and reinstall Charles.
java.failed=The bundled Java installation is broken. Please uninstall and reinstall Charles.

2.抓取https请求有乱码

  • 第一步:点击 【工具栏–>Proxy–>SSL Proxying Settings】
  • 第二步:添加需求抓包的请求的域名和端口号:

在这里插入图片描述

3.抓取手机端出现乱码

点击Charles—help,选择SSL Proxying选择:

install Charles root Cretificate on Mobile Device or Remote Browser(可以查询到当前地址)

在这里插入图片描述

手机打开浏览器,手机端的浏览器,在地址栏中输入:chls.pro/ssl

小米手机,需要针对charles证书如下操作:

找到下载的charles证书,修改后缀名,把原来的.pem设置为cer格式,从SD卡安装–>找到证书点击安装即可

【5】案例

抓取微信小程序

在这里插入图片描述

#实习僧 python招聘信息抓取
import requests
#如果加了verify=False这个关键字参数,使用requests模块发送请求的时候会给你弹出一个警告InsecureRequestWarning,警告你当前的请求可能不安全,可以使用如下代码忽略该警告
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)headers = {'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/6.8.0(0x16080000) NetType/WIFI MiniProgramEnv/Mac MacWechat/WMPF XWEB/30817',
}
url = 'https://apigateway.shixiseng.com/api/interns/v2.0/interns/wxz/search/v3?city=%E5%85%A8%E5%9B%BD&k=Python&intention=&degree=&internship_duration=&days_per_week=&payment_per_day=&emp_chance=&area=&scale=&category=&ipo=&nature=&t=0&p=1&target=intern'#目前各大网站基本有自己的ca证书,但是不排除有的网站为了节约网站建设开销并没有购买ca证书。又因为requests模块在发送网络请求的时候,默认会验证ca证书。如果当前网站没有ca证书,那么就会报出SSLError错误,则使用verify参数赋值False可以在请求的时候不验证网站的ca证书。
ret = requests.get(url,headers=headers,verify=False).json()
print(ret)

抓取美女轩公众号里的【美女精选】

import requests
import re
import urllib3
import json
from lxml import etreeurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)headers = {'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/6.8.0(0x16080000) NetType/WIFI MiniProgramEnv/Mac MacWechat/WMPF XWEB/30817',
}url = 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=Mzg3Nzc2OTQzOA==&uin=MTM1ODMyODkwNQ%3D%3D&key=16ff41fc38234ef85714c38b97b06d4054d7aaad452dcdaf5581c33d2104f5e1630ff6ee48da46b153f323af36a90b5e59a7129b6b28fb1c791f4a59a12ee787ad2ca7cf19ee565396f08b773ac694d06ea340cbe0d62d386a153ecfcdd84eaf742b071f75c5a234dc5d31204a1b4854d1930225947bebe72cc59476490e0e22&devicetype=iMac+MacBookPro17%2C1+OSX+OSX+13.5+build(22G74)&version=13080310&lang=zh_CN&nettype=WIFI&a8scene=0&fontScale=100&acctmode=0&pass_ticket=km2622VtVeH2MRYrt4EbChPo59EMr4MvwCDuSRJa%2F3w8GTlBsbamxA475CNyQt3m'
page_text = requests.get(url,headers=headers,verify=False).text
#替换"为空串
ret = re.findall("var msgList = '(.*?)'",page_text)[0]
#将"转换成引号
import html
ret = html.unescape(ret)
ret = json.loads(ret)for dic in ret['list']:title = dic['app_msg_ext_info']['multi_app_msg_item_list'][0]['title']detail_url = dic['app_msg_ext_info']['multi_app_msg_item_list'][0]['content_url']detail_page_text = requests.get(detail_url,headers=headers,verify=False).text#图片链接保存在img标签的data-src属性值中tree = etree.HTML(detail_page_text)img_list = tree.xpath('//img/@data-src')print(img_list)break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661747.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

2023-12-29 工作心得补充 适时抽取方法,让代码变简洁

1 JSONObject 实际上是个map 2 数据库实际上也是map 只不过map 是竖着写,数据库横着写. 3 像 用户名 密码 这种后续可能随时会改的,不要写死在代码里,都写成nacos参数。 4 方法的抽取 让代码变得简洁 可读性很高。这是方法抽取的秘诀。写文…

鸿蒙开发之崩溃信息收集FaultLogger

前申:果然系统的API没有让我失望,日志完全看不出来崩溃原因所在 一、使用 logCrash() {FaultLogger.query(FaultLogger.FaultType.JS_CRASH,(err,val) > {if (err) {console.log(fault log get an errJSON.stringify(err))return}let len val.lengt…

SpringBoot+AOP+Redis 防止重复请求提交

本文项目基于以下教程的代码版本&#xff1a; https://javaxbfs.blog.csdn.net/article/details/135224261 代码仓库: springboot一些案例的整合_1: springboot一些案例的整合 1、实现步骤 2.引入依赖 我们需要redis、aop的依赖。 <dependency><groupId>org.spr…

大厂整理的23年前端工程师面试手册,高频面试题终结篇,github上标星16k!

前端开发所需掌握知识点概要&#xff1a; HTML&CSS&#xff1a;浏览器内核、渲染原理、依赖管理、兼容性、CSS语法、层次关系&#xff0c;常用属性、布局、选择器、权重、CSS盒模型、Hack、CSS预处理器、CSS3动画 JavaScript&#xff1a; 数据类型、运算、对象、Function、…

【JavaWeb学习-第四章(2)】前后端分离开发 前端工程化

文章目录 1. 前后端分离开发1.1. 介绍1.2. YAPI1.2.1. YAPI 介绍1.2.2. 接口文档管理 3. 前端工程化3.1. 介绍3.2. 前端工程化入门3.2.1. 环境准备3.2.1.1. NodeJS安装3.2.1.2. Vue-cli 安装 3.2.2. Vue项目简介3.2.2.1. 创建vue项目3.2.2.2. vue项目之目录结构介绍3.2.2.3. 运…

Python高级用法:生成器(generator)

生成器&#xff08;generator&#xff09; 生成器是一种返回生成序列的方法&#xff0c;与直接使用列表等方式返回序列的方式不同的是&#xff0c;他的生成可以是无限的。 生成器可以与next搭配使用&#xff0c;可以被看作是一种特殊的迭代器。 yield语句 yield一般与循环相…

CNAS中兴新支点——源代码审计对企业有哪些好处?

源代码扫描&#xff0c;对应用程序进行静态漏洞扫描&#xff0c;分析源代码中存在的安全风险&#xff0c;运行应用于模拟器中对应用进行实时漏洞攻击检测。 你是否了解源代码扫描对企业的好处&#xff1f; 一、源代码扫描&#xff0c;通常能够帮助企业解决这些问题&#xff1…

pycharm用Pipenv创建项目

一、pipenv介绍 pipenv是一个python的包管理工具&#xff0c;提供python的各个版本间的管理&#xff0c;各种包管理。官网 pipenv主要有以下特点&#xff1a; pipenv集成了pip&#xff0c;virtualenv两者的功能。pipenv会在项目根目录下创建Pipfile文件用于记录包的版本信息…

unity exe程序置顶和全屏

1.置顶和无边框 设置显示位置和范围 using System; using System.Runtime.InteropServices; using UnityEngine; public class WindowMod : MonoBehaviour {public enum appStyle{FullScreen,WindowedFullScreen,Windowed,WindowedWithoutBorder}public enum zDepth{Normal…

本地部署Python Flask并搭建web问答应用程序框架实现远程访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

概率论相关题型

文章目录 概率论的基本概念放杯子问题条件概率与重要公式的结合独立的运用 随机变量以及分布离散随机变量的分布函数特点连续随机变量的分布函数在某一点的值为0正态分布标准化随机变量函数的分布 多维随机变量以及分布条件概率max 与 min 函数的相关计算二维随机变量二维随机变…

2023中国企业级存储市场:整体韧性成长,领域此消彼长

多年之后回头看&#xff0c;2023年也许是中国企业级存储市场标志性的一年。 后疫情时代的开启&#xff0c;中国数字经济快速发展、数据产业方兴未艾&#xff0c;为数据存储市场带来了前所未有的活力&#xff1b;与此同时&#xff0c;外部环境的不确定性骤增&#xff0c;人工智…

关于“Python”的核心知识点整理大全49

目录 16.2.10 加亮颜色主题 16.3 小结 第&#xff11;7 章 使用API 17.1 使用 Web API 17.1.1 Git 和 GitHub 17.1.2 使用 API 调用请求数据 17.1.3 安装 requests 17.1.4 处理 API 响应 python_repos.py 注意 17.1.5 处理响应字典 python_repos.py import json i…

1.Linux快速入门

Linux快速入门 Linux操作系统简介Linux操作系统优点Linux操作系统发行版1. Red Hat Linux2. CentOS3. Ubuntu4. SUSE Linux5. Fedora Linux 32位与64位操作系统的区别Linux内核命名规则 Linux操作系统简介 Linux操作系统是基于UNIX以网络为核心的设计思想&#xff0c;是一个性…

什么是计算机视觉

计算机视觉&#xff08;Computer Vision&#xff09;是一门研究如何让计算机能够理解和分析数字图像或视频的学科。简单来说&#xff0c;计算机视觉的目标是让计算机能够像人类一样对视觉信息进行处理和理解。为实现这个目标&#xff0c;计算机视觉结合了图像处理、机器学习、模…

JavaSE基础50题:28.(数组练习)冒泡排序

概述 给定一个整型数组&#xff0c;实现冒泡排序。 如&#xff1a;给一组数组{5&#xff0c;10&#xff0c;8&#xff0c;3&#xff0c;7}进行冒泡排序。 j一直往下走&#xff0c;和下一个数字进行比较&#xff0c;如果当前数字大于下一个数字&#xff0c;则两个数字交换&…

什么是高并发系统?

1.1 什么是高并发&#xff1f; 高并发&#xff08;High Concurrency&#xff09;&#xff0c;通常是指通过设计保证系统能够同时处理很多请求。即在同一个时间点&#xff0c;有很多的请求同时访问同一个接口。高并发意味着大流量&#xff0c;需要运用技术手段去抵抗这种大流量…

大数据实践之路 读后感

欢迎关注公众号&#xff1a;数据运营入表资产化服务&#xff0c;获取更多算法源码材料 2023数据资源入表白皮书&#xff0c;推荐系统源码下载-CSDN博客 浅析研发支出费用化和资本化的区别-CSDN博客 商业银行数据资产估值白皮书&#xff0c;推荐系统源码下载-CSDN博客 用友B…