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

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

先简单介绍下whistle和proxifier:node

whistle简介

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

  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…github

proxifier简介

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

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

proxifier官方只有Windows和Mac版本,其它平台如Linux能够有不少替代方案,有须要的话能够本身网上搜索浏览器

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

安装配置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 设置 -> 勾选经过代理解析主机名称

      Windows客户端去掉DNS设置

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

      Mac客户端去掉DNS设置

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

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

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

      地址:127.0.0.1

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

      协议:HTTPS

      Windows客户端添加代理服务器

    • Mac:Proxies -> Add

      Mac客户端添加代理服务器

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

    Windows忽略Node发出的请求

  5. 配置后的效果

    Windows效果

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

上面是拦截全部客户端请求,更建议只把想抓包的客户端经过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请求

更多问题能够提ISSUEPR

相关文章
相关标签/搜索