当前位置: 首页 > news >正文

用whistle和proxifier抓包调试任意客户端的网络请求

用web抓包调试代理工具时,经常会遇到无法抓取命令行工具或某些客户端的网络请求,因为这些请求不走系统代理,这个给我们的开发工作带来一些不便,有没有工具可以实现抓包调试任意客户端的请求?当然有,本文将讲下如何用whistle和proxifier抓包调试任意客户端的网络请求,不仅支持普通的web请求(HTTP、HTTPS、WebSocket),也支持TCP请求。

先简单介绍下whistle和proxifier:

whistle简介

whistle是基于Node实现的跨平台web抓包调试代理工具:

  1. 完全跨平台,支持运行在Mac、Windows、Linux/Unix桌面及命令行系统
  2. 支持抓包调试HTTP、HTTPS、WebSocket及Socket,可以修改请求响应的所有内容
  3. 内置weinre,支持查看修改移动端网页的DOM结构
  4. 内置Log功能,支持自动捕获网页的所有js异常及console.xxx输出各种类型数据
  5. 操作简单,所有操作都可以通过类似配置hosts的方式实现
  6. 支持通过Node模块的插件扩展功能

有关whistle的详细内容直接访问Github:github.com/avwo/whistl…。

proxifier简介

proxifier是一个跨平台的设置代理客户端,支持socks和http代理协议,它可以拦截任意客户端的所有网络请求,并把请求代理到指定的代理服务器,proxifier基本用法可以先参考:代理工具Proxifier如何使用。

有关proxifier的详细内容直接访问其官网:www.proxifier.com

proxifier官方只有Windows和Mac版本,其它平台如Linux可以有很多替代方案,有需要的话可以自己网上搜索

从上面的介绍可知,通过proxifier拦截任意指定客户端的请求,并通过HTTP代理转发到whistle,即可实现抓包调试任意客户端的请求,下面详细讲下如何安装配置whistle和proxifier实现该功能:

安装配置whistle

  1. 安装Node(如果已安装可以忽略此步骤):建议安装最新版本Node,直接访问官网安装即可。

  2. 安装whistle(需要安装最新版本的whistle(>=v1.10.6)):

    npm i -g whistle --registry=https://registry.npm.taobao.org
    复制代码

    有些公司可能自己建了npm的镜像,可以用自己公司的npm命令安装或设置 --registry=公司的镜像

  3. 启动whistle:

    w2 start
    复制代码

    停止whistle:

    w2 stop
    复制代码

    重启whistle:

    w2 restart
    复制代码

    查看whistle版本号:

    w2 -V
    复制代码

    查看所有命令:

    w2 --help
    复制代码

    whistle的默认端口为 8899,如果需要修改端口可以通过参数 -p 8888 进行修改,如:w2 restart -p 8888

  4. 安装whistle根证书

  5. 开启捕获HTTPS请求

如何使用whistle请直接看Github上的README。

安装配置proxifier

proxifier是收费软件,有30天免费试用期,可以直接从官网下载安装,或者通过电脑管家的软件管理界面下载,网上也有很多破解的免费版本,有需要的话可以自己网上搜索下载,安装完proxifier后打开后做如下配置:

Windows和Mac的界面交互不太一样,下面会分别给出两者的配置方法

  1. 去掉自动DNS设置

    • Windows:打开左上角菜单 -> 配置文件 -> 名词解析 -> 勾掉 自动检查 DNS 设置 -> 勾选通过代理解析主机名称

    • Mac:DNS -> 去掉第一个checkbox -> 勾上第二个checkbox

  2. 设置无限循环连接检测

    • Windows:打开左上角菜单 -> 配置文件 -> 高级 -> 勾选 无限循环连接检测
    • Mac:会自动检测,弹出对话框时点击确定就可以。
  3. 添加代理服务器

    • Windows:打开左上角 -> 配置文件 -> 代理服务器 -> 添加代理服务

      地址:127.0.0.1

      端口:8899(whistle的默认端口号,具体按whistle实际启用的端口设置)

      协议:HTTPS

    • Mac:Proxies -> Add

  4. 忽略Node发出的请求: 配置完成后,用Chrome浏览器打开l.wproxy.con,这个时候proxifier会弹出检测到循环连接的对话框,点击确定即可:

  5. 配置后的效果

配置完成后就可以愉快的抓包任何客户端的请求了。

上面是拦截所有客户端请求,更建议只把想抓包的客户端通过proxifier代理到whistle,可以通过代理规则添加

可能遇到的问题

  1. 拦截所有客户端请求后台,有些客户端可能采用了SSL pinning技术,导致该客户端的https请求出现证书校验失败(如执行:git push),可以禁用掉应域名的捕获HTTPS请求 tunnel://github.com disable://capture 或者把该命令行工具添加到proxifier规则里面并设置动作:Direct
  2. 如果要查看TCP请求数据包,可以通过设置 tunnel://host enable://inspect (host 为Network上显示的域名或ip),这样就可以通过Network右侧->Response->Frames查看TCP请求的帧数据,有关调试TCP(Socket)请参考:利用whistle调试WebSocket和Socket请求。

更多问题可以提ISSUE或PR。

相关文章:

  • 一个C#文件传输模块,支持断点续传
  • linux 软硬链接
  • 单用户登陆限制(单点登录??)
  • 操作系统---进程 vs 线程
  • WPF使用第三方的字体(TTF文件)
  • RabbitMQ基础教程之基于配置的消费者实现
  • 上传文件过大的问题FileUploadBase$SizeLimitExceededException
  • 数据库index
  • What Is Cocoa?
  • JAVA 学习IO流
  • lightoj 1013 dp
  • php中curl和soap方式请求服务超时问题
  • 8月25日
  • 冒泡排序和选择排序流程图
  • 域帐号密码过期邮件提醒
  • CentOS从零开始部署Nodejs项目
  • exif信息对照
  • Gradle 5.0 正式版发布
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • nginx 负载服务器优化
  • Terraform入门 - 3. 变更基础设施
  • windows-nginx-https-本地配置
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从输入URL到页面加载发生了什么
  • 分布式任务队列Celery
  • 计算机常识 - 收藏集 - 掘金
  • 前端之React实战:创建跨平台的项目架构
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • #FPGA(基础知识)
  • $L^p$ 调和函数恒为零
  • (C#)一个最简单的链表类
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (剑指Offer)面试题34:丑数
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)h264中avc和flv数据的解析
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .aanva
  • .NET Standard 的管理策略
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net连接MySQL的方法
  • .NET企业级应用架构设计系列之结尾篇
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/sudoers (root权限管理)
  • ::什么意思
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [Bugku]密码???[writeup]