zoukankan      html  css  js  c++  java
  • 使用c#开发Fildder插件抓取解析websocket数据

    最近有个需求,需要分析下websocket的数据,使用了chrome自带的开发者工具,也尝试了fiddler直接拦截,还尝试了使用fiddler的Customize Rules。
    本来Customize Rules已经可以满足我的需求了,但是JScript .NET的语法实在用得我太难受了,开发效率极低。
    还是拿出看门绝技c#!

    其实使用c#编写Fiddler的插件非常简单,之前就做过一个拦截数据采集tiktok无水印视频(就是有点累,需要手动到手机操作,效果还是很不错)。

    言归正传,打开vs新建一个dll类库项目。
    然后引用fiddler.exe,直接就是添加引用,然后浏览找到fiddler.exe的位置(我的是C:\Program Files\Fiddler\Fiddler.exe)。
    如果你的插件带窗体或者修改了fiddler的窗体,需要引用System.Windows.Forms。
    再新建一个类实现IFiddlerExtension、IResponseInspector2、IWSMInspector接口,然后在AssignMessage函数里开始处理WebSocket数据,在OnLoad方法里面可以添加窗体显示在fiddler内。

    最后可以在项目属性里面的生成事件里面加上:
    这个是对所有用户生效
    copy "$(TargetPath)" "C:\Program Files\Fiddler\Scripts\$(TargetFilename)"
    这个是对当前windows用户生效
    copy "$(TargetPath)" "%userprofile%\My Documents\Fiddler2\Scripts\$(TargetFilename)"

    这样每次生成都会自动复制到fiddler的脚本目录,不过每次生成都要先关闭fiddler,否则会因为文件被占用而无法替换。

    为了方便调试,可以直接把项目属性>调试>启动外部程序 ,然后选择fiddler.exe。

    踩坑记录:
    千万不要直接使用WebSocketMessage的PayloadData属性,读出来的数据会有问题,一定记得要用PayloadAsBytes()方法。
    实际开发中发现有的电脑无法进入AssignMessage方法,改用FiddlerApplication.OnWebSocketMessage。
    如果发现你自定义的窗体没有加载到fiddler里面,请实现IFiddlerExtension接口,在OnLoad方法里面添加窗体。

    这里只是抛砖引玉,等我代码写完会上传GitHub。

  • 相关阅读:
    移动设备横竖屏判断 CSS 、JS
    Jquery监听value的变化
    设置了line-block的div会出现间隙
    移动端点击可点击元素时,出现蓝色默认背景色
    网页顶部进度条-NProcess.js
    ios UITableView
    ios UIScrollView
    ios Xcode 快捷方式
    ios常用方法、基础语法总结
    Mac eclipse Tomcat安装
  • 原文地址:https://www.cnblogs.com/dbxiaobai/p/15765055.html
Copyright © 2011-2022 走看看