Mac下也能用抓包工具Fiddler

摘要:
我在Windows下工作了很长时间。很自然,Fiddler是捕获包的最佳工具。但Fiddler是在Netruntime环境下运行的,所以很难在Mac上使用它。直到去年10月,Fiddler的OSX版本被悄悄放在Telerik的官方网站上,这让我欣喜若狂,并迅速尝试。要在环境中安装Mono,您需要在MacNet下使用它。编译程序需要跨平台Mono。接下来,如果要运行Fiddler,需要将Mono添加到环境变量中。Fiddler是从Fiddler官方网站安装的https://www.telerik.com/download/fiddler下载打包文件fiddler-mac.zip。

一直以来都是在Windows底下工作,对于抓包工具,自然而然当属Fiddler最最出色。不过Fiddler是在.Net runtime环境下运行的,所以想要在Mac下使用,有些困难。

在试过了Charles、Rythem、TinyProxy和NProxy这些抓包工具后,我依然苦恼,它们有的需要支付昂贵的费用,有的只支持本机网页请求代理,而有些界面只有文本模式,这让我无法适从。

直到去年10月份(2016年10月),Telerik官网上悄然地放上了Fiddler的OSX版,这让我欣喜若狂,赶紧来尝试。

环境安装

Mono安装

首先,Mac下需要使用.Net编译后的程序,需要用到跨平台的方案Mono(现阶段微软已推出跨平台的方案.Net Core,不过暂时只支持控制台程序)。安装程序可以从http://www.mono-project.com/download/#download-mac地址下载。

安装完后,在Terminal里执行以下命令:

1
/Library/Frameworks/Mono.framework/Versions/<mono version>/bin/mozroots --import --sync

此步是为了从Mozilla LXR上下载所有受信任的root证书,存于Mono的证书库里。root证书能用于请求https地址。

接下来如果想要运行Fiddler,还需要把Mono加入到环境变量中。编辑.bash_profile文件:

1
sudo vi ~/.bash_profile

加入文本:

1
2
export MONO_HOME=/Library/Frameworks/Mono.framework/Versions/5.0.1
export PATH=$PATH:$MONO_HOME/bin

保存后重新打开Terminal,Mono环境已装好。

Fiddler的安装

从Fiddler官网https://www.telerik.com/download/fiddler下载fiddler-mac.zip的压缩包。解压到非中文字符的路径下。

Fiddler运行

打开Terminal,进入到刚才解压的Fiddler路径,执行命令运行:

1
sudo mono Fiddler.exe

是不是跟Windows下的界面一样好看?

5709266-23b02ca501285e4e.png

 

如果启动fiddler:sudo mono Fiddler.exe 报错

WARNING: The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all
Stacktrace:

  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) System.Windows.Forms.XplatUICarbon.CGDisplayBounds (intptr) [0x00002] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.XplatUICarbon.get_WorkingArea () [0x00005] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.XplatUICarbon.get_VirtualScreen () [0x00000] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.XplatUI.get_VirtualScreen () [0x00000] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Screen..cctor () [0x00034] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) [0x0001e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
  at <unknown> <0xffffffff>
  at System.Windows.Forms.Form.get_CreateParams () [0x00157] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Control.CreateHandle () [0x0002a] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Form.CreateHandle () [0x00000] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Control.CreateControl () [0x00039] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Control.SetVisibleCore (bool) [0x0003a] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Form.SetVisibleCore (bool) [0x00065] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Control.set_Visible (bool) [0x00009] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at System.Windows.Forms.Control.Show () [0x00000] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control.Show () [0x00031] in <36fbc38531724d82b10aef6ebafea6e9>:0
  at Fiddler.frmViewer.‹• (string[]) [0x00081] in <09623c708fdb40a483cea147bbea7a7f>:0
  at Fiddler.frmViewer.ॠ(string[]) [0x00016] in <09623c708fdb40a483cea147bbea7a7f>:0
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) [0x0004e] in <09623c708fdb40a483cea147bbea7a7f>:0

Native stacktrace:

    0   mono                                0x000000010a02c3d1 mono_handle_native_crash + 257
    1   mono                                0x000000010a093e86 altstack_handle_and_restore + 70
    2   SkyLight                            0x00007fffaabd4fc2 SLDisplayBounds + 50
    3   ???                                 0x00000001117e038e 0x0 + 4588438414
    4   ???                                 0x000000010a62d486 0x0 + 4469216390
    5   mono                                0x0000000109f865f4 mono_jit_runtime_invoke + 1316
    6   mono                                0x000000010a17e238 do_runtime_invoke + 88
    7   mono                                0x000000010a17a2a4 mono_runtime_class_init_full + 996
    8   mono                                0x0000000109f7fa45 mono_jit_compile_method_inner + 2485
    9   mono                                0x0000000109f82903 mono_jit_compile_method_with_opt + 1379
    10  mono                                0x000000010a02e871 common_call_trampoline + 1217
    11  mono                                0x000000010a02e379 mono_magic_trampoline + 73
    12  ???                                 0x000000010a41839e 0x0 + 4467032990
    13  ???                                 0x000000011148b81b 0x0 + 4584945691
    14  ???                                 0x000000010d8a384f 0x0 + 4522129487
    15  ???                                 0x000000010d8a34c7 0x0 + 4522128583
    16  ???                                 0x000000010a62d043 0x0 + 4469215299
    17  mono                                0x0000000109f865f4 mono_jit_runtime_invoke + 1316
    18  mono                                0x000000010a17e238 do_runtime_invoke + 88
    19  mono                                0x000000010a181849 do_exec_main_checked + 137
    20  mono                                0x0000000109fef32f mono_jit_exec + 287
    21  mono                                0x0000000109ff1b63 mono_main + 9235
    22  mono                                0x0000000109f763ad main + 253
    23  mono                                0x0000000109f762a4 start + 52

Debug info from gdb:

(lldb) command source -s 0 '/tmp/mono-gdb-commands.Cli6iM'
Executing commands in '/tmp/mono-gdb-commands.Cli6iM'.
(lldb) process attach --pid 1326
warning: (x86_64) /Library/Frameworks/Mono.framework/Versions/5.4.1/lib/mono/4.5/mscorlib.dll.dylib empty dSYM file detected, dSYM was created with an executable with no debug info.
warning: (x86_64) 
.
.
.
.
.
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

Process 1326 detached
(lldb) quit
[1]    1326 abort      mono Fiddler.exe

解決方案:切换32bit-mono启动fiddler

sudo mono --arch=32 Fiddler.exe

免责声明:文章转载自《Mac下也能用抓包工具Fiddler》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇docker 日志在常见系统中的查看方法Frida Android hook native层__system_property_get的最终方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac系统配置gradle的系统环境变量

配置gradle的系统环境变量 首先要确保Java的环境变量配置成功 java -version 本地下载gradle http://services.gradle.org/distributions/ 拿到安装目录: /Users/erwa/Desktop/work/software/gradle-6.0.1 打开配置文件: open .bash_...

[工具]图片等比例压缩工具

写在前面 在网盘中有这样一个功能,需要获取所有图片的列表,想来想去,觉得还是生成相同比例的图片,在排版上更美观一些。所以就没事高了一个压缩的工具玩玩。 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat...

解决 Visual Studio For Mac 还原包失败问题

体验了一把改名部最新的杰作,总体感觉挺好,也能看出微软在跨平台这方面所做出的努力。 可能是预览版的缘故,还是遇到一个比较大的问题,创建netcore项目后,依赖包还原失败,错误信息如下: 可以先试着手动还原一下(说不定就成功了呢,反正我没成功) dotnet restore 如果不成功,那就按照我的做法一步一步来。 1.查看 dotnetcore sdk...

macos 签名+公证app生成dmg后,安装使用过程中崩溃

关于如何命令行macos 打包+签名+公证+生成dmg的过程,参考我的另一篇博客:https://www.cnblogs.com/zndxall/p/12072353.html mac 生成dmg是今年年初才要求必须公证后才能使用,公证前必须要签名才可以,前期我使用简单的codesign -f -s "$cert_file" -v LBCast.app -...

STM32-ETH-Lwip以太网通信

互联网模型 通信至少是两个设备的事,需要相互兼容的硬件和软件支持,我们称之为通信协议。以太网通信在结构比较复杂,国际标准组织将整个以太网通信结构制定了 OSI 模型,总共分层七个层,分别为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层,每个层功能不同,通信中各司其职,整个模型包括硬件和软件定义。 OSI 模型是理想分层,一般的网络系统只是涉及...

ShopEx设置setting for ShopEx开发文档 狼人:

系统结构以下文档均以最新的shopex 4.8.5 为准。 程序为mvc 3层结构。模型-视图-控制器。 模型是前后台公用。完成业务逻辑,所有的数据库操作,文件等资源调用,都由此层实现。 控制器则是前后台独立。负责业务模型的调用,拼接,变量的转换等等。 视图层采用类似smarty的实现。 在任何时候都有一个全局变量$system指向唯一的一个内核类:...