<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>muzuiget</title>
    <link>https://ruby-china.org/muzuiget</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>写了个 Chrome DevTools 做界面的 HTTP 调试器</title>
      <description>&lt;p&gt;一句话特性：Chrome DevTools + Wireshark，即前端界面像 Chrome DevTools，后端处理像 Wireshark。&lt;/p&gt;

&lt;p&gt;名字叫 Weer，具体介绍见官网 &lt;a href="https://weerdbg.com/zh-cn/" rel="nofollow" target="_blank"&gt;https://weerdbg.com/zh-cn/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://weerdbg.com/images/README/1.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;说说为什么我也要重新发明轮子，这个项目和别的 HTTP 调试器有何不同。&lt;/p&gt;

&lt;p&gt;就 HTTP 抓包来说，目前的主流抓包工具，可以分成两种：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;中间人代理方式：例如 Charles，Fiddler，mitmproxy&lt;/li&gt;
&lt;li&gt;网卡抓包方式：例如 tcpdump, Wireshark&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;第一种符合大多数人的使用习惯，对 HTTP 客户端设置使用 HTTP 代理，作为中间人的代理程序就能看到内容了。这种方法虽然简单，但是缺点也很明显，需要客户端本身支持代理模式，还可能有&lt;a href="https://zh.wikipedia.org/wiki/%E8%A7%82%E6%B5%8B%E8%80%85%E6%95%88%E5%BA%94" rel="nofollow" target="_blank" title=""&gt;观测者效应&lt;/a&gt;，例如协议头部的 &lt;code&gt;Proxy-KeepAlive&lt;/code&gt; 和 &lt;code&gt;KeepAlive&lt;/code&gt; 需要分别处理，服务端获得客户端 IP 需要曲线救国。&lt;/p&gt;

&lt;p&gt;实际上我更喜欢第二种方式，尽量不影响被调试的程序，可以抓取系统全局流量，可以事后离线分析，用起来更加灵活。一般来说这种方式的抓包工具会输出 PCAP 格式的数据文件，这个格式结构很简单，基本就是链路层的原始数据加上时间戳。&lt;/p&gt;

&lt;p&gt;然而第二种方式的目前最大问题，查看 PCAP 文件几乎就只有 Wireshark，为了看点 HTTP 数据，有点杀鸡用牛刀了，界面看起来不直观，一般就是过滤出 HTTP 协议数据包，然后就右键「跟踪 HTTP 数据流」，弹出个数据流查看器，以纯文本查看，ASCII 或者十六进制，稍微复杂点的内容，比如未格式化的 JSON 文本，需要手动复制出来，然后用其它工具格式化查看。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://www.wireshark.org/docs/wsug_html_chunked/wsug_graphics/ws-follow-stream.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;所以我一直以来都想给 Wireshark 搞个加强版的数据流查看器，要是问你哪种 HTTP 调试界面最好看最舒服，肯定是 Chrome 那个按 F12 弹出来的 DevTools 啦，相信各路 Web 开发码农天天都在用，如果把这两个工具勾搭起来，岂不美哉？&lt;/p&gt;

&lt;p&gt;Weer 就是以这个想法写出来的，像 Wireshark 一样分析 PCAP 文件，分析完后给你一个 Chrome DevTools 界面查看，就像对 Wireshark 按下 F12 弹出 DevTools 一样。当然，方便开箱即用，也支持中间人代理的方式抓包分析。&lt;/p&gt;

&lt;p&gt;特别指出，运行并不依赖 Wireshark，也没有使用 Wireshark 的代码，自行实现了 PCAP 的解析库。也不依赖 Chrome，自行实现了 Chrome DevTools 通信协议服务器，仅仅访问用户界面的系统才需要 Chrome(其实 Firefox 也行，不过会布局错乱)。&lt;/p&gt;

&lt;p&gt;这一切都在一个不足 1MB 的可执行文件里，运行待机内存也只有几 MB，轻量级，随时多开没压力。不是 Electron 应用，没有额外依赖，也不会从网络加载依赖，纯命令行程序。&lt;/p&gt;

&lt;p&gt;各位大佬不试一下？&lt;/p&gt;</description>
      <author>muzuiget</author>
      <pubDate>Sat, 06 Jul 2019 10:47:14 +0800</pubDate>
      <link>https://ruby-china.org/topics/38795</link>
      <guid>https://ruby-china.org/topics/38795</guid>
    </item>
  </channel>
</rss>
