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。

  • 相关阅读:
    mybatis-plus物理分页插件使用
    mybatis-plus提供支持ActiveRecord模式
    mybatis-plus通用Service
    mybatis-plus返回查询总记录数
    Mybatis-Plus查询返回Map类型数据
    Mybatis-Plus条件构造器condition动态判断条件
    Mybatis-Plus条件构造器select方法返回指定字段
    mybatis-plus条件构造器UpdateWrapper实例
    mybatis-plus条件构造器QueryWrapper实例
    这玩意比ThreadLocal叼多了,吓得why哥赶紧分享出来。
  • 原文地址:https://www.cnblogs.com/dbxiaobai/p/15765055.html
Copyright © 2011-2022 走看看