• 抓包工具Charles使用


    ###

    1,Charles抓包工具的原理

    原理都是在客户端和服务器之间充当代理服务器

    正常的情况:客户端-------服务器

    增加了Charles的情况:客户端 -----Charles -----服务器

    Charles有两个功能,

    1,接收客户端的请求,并且转发给服务器,

    2,服务端返回结果给Charles,然后Charles转发给客户端,

    https代理的原理:

    如果是https,增加了加密的情况,这个抓包的逻辑是什么:

    客户端和代理服务器建立连接,----代理服务器和真的服务器建立连接,

    真的服务器下发证书给代理服务器-----代理服务器签名证书然后下发给客户端,

    客户端使用签名证书生成公钥传给代理服务器,-----代理服务器用自己的签名证书解密之后,再用用服务器的证书加密传给服务器,

    服务器传递加密数据给代理服务器,---代理服务器解密并加密数据传递给客户端,

    然后后面的数据传输基本都是这样的了, 

    2,Charles的安装配置

    安装是很简单的,

    代理的设置:proxy--proxy setting --proxy标签页配置端口号port:8888,----ok

    访问控制设置:proxy--access control setting --- 会有一个ip列表---点击add添加ip---ok

    mac代理设置:系统偏好设置--网络--代理--选择http和https代理---输入ip地址和端口号--保存(ip地址可以在Charles-help-local ip address 中查看)

    mac代理设置还有更简单的方法:proxy-macOS proxy,选中就可以了,

    SSL代理设置:proxy -- SSL proxy setting ---选中enable ssl setting --add *:* --保存,不设置这个可能会看到请求的返回内容是乱码,是因为做了加密

    3,Charles主要功能

    1,支持http和https代理

    2,支持流量控制,比如弱网测试

    3,支持接口并发请求,可以做简单的并发测试,实际很简单,就是通过:右键--repeat advanced --设置重复次数,

    4,支持重发网络请求,这个很重要,重放攻击,实际很简单,就是通过,右键--repeat ,就可以了,或者通过快速工具栏的刷新按钮也可以,

    5,支持断点调试,就是拦截请求和响应,--下面有介绍,也很简单,

    界面介绍:

    分成三部分,

    1,菜单栏,这是主导航栏,很多功能在这里,

    比如清空回话,重发请求,断点调试等,

    2,左侧的请求导航栏,所有的请求可以在这里看到,

    这个可以看到可以通过域名查看请求,也可以通过时间查看请求,还可以过滤请求,这是主要的功能,

    3,点击左侧具体的一个请求,

    右侧的上半部分是请求内容,

    这个部分最重要的是overview,还有一个contents,这个contents是最重要的,可以看到header,cookie,请求参数,返回内容,

    右侧的下半部分是响应内容,

    如果是接口的响应内容,可以通过json查看json格式的返回数据

    如果是图片的响应内容,可以通过image的格式查看到图片的显示

    如果是html的响应内容,可以通过html格式查看到html内容,不能像浏览器一个看到预览,因为抓包工具没有渲染页面的能力,css,js,

    可以搜索内容,这个搜索实际是很强大的,但是总是定位的地方有些不准确,不知道是不是我操作有问题,

    4,Charles中间人攻击,拦截请求和响应, 

    第一种方法,断点调试,这个这是一次性的,

    打开断点调试:

    首先打开代理开关,proxy--enable breakpoints 

    然后在要左侧,在需要断点的请求上面右键,选择breakpoint,

    然后重新浏览器请求这个连接,就会进入断点,这个断点会有两次一个是request的请求发送出去之前,还有一个response接收过来的之后做拦截,

    所以可以修改请求参数,也可以修改返回内容,

    关闭断点调试,

    关闭代理开关,proxy--disable breakpoints 

    如果想要关闭单个url的断点,还是在请求上右键,把breakpoint取消勾选就可以了,

    第二种方法,使用映射本地文件的方式来调试,

    第一步:把需要映射的html,在本地新建一个html文件,

    第二步,在Charles的右侧,选择需要替换本地文件的请求,右键--点击map local,然后会自动填充进来域名端口路径,你只需要选择需要映射的本地文件,

    第三步,修改本地的文件内容,刷新浏览器,就会发现返回的内容,变成自己本地的文件内容了,

    还可以使用这个方式进行js的debug,

    比如在html里面的script标签里面,输入alert(变量名),就会打印这个变量,

    比如在某一行,输入debugger;这样就可以实现在这个地方打断点,

    ####

    其他

    抓包工具,比如fiddler,Charles,都是只能抓应用层的协议,wareshark可以抓传输层的协议,但是一般不用这个软件太重了,

    另外python有一个抓包工具,mitmproxy,这个抓包工具很厉害,后面要学会使用,

    抓包工具抓不到的原因,

    1,可能是因为没有走http协议,而是走的tcp协议,你用抓包工具,就抓不到, 

    2,可能是缓存的原因,清空缓存试试

    ###

  • 相关阅读:
    创建型设计模式之-单例
    设计模式(1、创造型2、结构型、3行为型)
    手写IOC容器和两种注入(构造方法注入和属性注入)
    从依赖倒置原则到IOC控制反转
    自定义HttpHandler可以做什么
    一个用户在浏览器上输入网址怎么走到我们写的.net程序中的,请求到管道处理
    代理Nginx
    .Net Expression表达式目录树(自己动态创建表达式目录树)
    canvas绘制圆环进度条
    城市二级联动
  • 原文地址:https://www.cnblogs.com/andy0816/p/15146008.html
Copyright © 2020-2023  润新知