Rythem是什么

Rythem是一个与Fiddler同类的软件,和Fiddler一样具有 代理抓包/替换 功能,与Fiddler最大的不同是Rythem是跨平台&开源的。

下载地址及源码:

以下为Rythem运行的截图:(MacOS与windows平台下略有不同)

Rythem截图1

Rythem目前已实现以下功能:

  • http代理服务
  • https tunnel透传(https抓包需求似乎不是很大,暂不实现)
  • 规则替换
    匹配模式包括`wildcard`类型及全匹配两种
    以替换后内容区分有本地及远程两种。
    本地替换有三种:目录式,单个文件式,多文件合并成一文件
    远程替换暂时只支持一个文件对应一个远程路径
  • host设置
  • 替换规则远程及本地导入。
  • 替换规则增删改。
  • 颜色标记已被替换的请求
  • 导入/导出 每条请求(兼容fiddler *.saz文件)
  • 批量导出response body(可用于整站保存)
  • 过滤显示请求

如何使用

1)Windows平台下,点击左上角“开始抓包”按钮(非Windows平台下手动将系统代理设为 127.0.0.1:8889)

2) 在Rythem右侧选中“替换规则”tab  (见下图)

3) 在此tab下点击“添加本地分组”并填写分组名后点OK (见上图)

4) 点击刚建立的分组下的 + 号,在弹出的窗口中填入相应信息,这里以local File类规则为例:

如下图,规则意为:遇到 http://test.com/ 的请求 时返回replacement里指定的文件的内容 (replacement下的输入框可手动输入也可点其下的 -F 按钮选择。

5) 打开浏览器访问 http://test.com/ 得到以下效果:(本例中replacement被设为一个.h文件)

替换效果

替换规则简介:

目前Rythem实现了五种规则:

1.单个请求对应单个文件替换

如上例

2.目录级别替换

例: pattern为: /myfolder/  replacement为 /my/path/

则访问  http://every.host.name/every/path/to/myfolder/subpath/everyfile.html 会被转到 /my/path/subpath/everyfile.html

3.Host替换

例  patern为 w.qq.com  replacement为 127.0.0.1 效果等同于在hosts文件里设置 w.qq.com 127.0.0.1 (前提是访问者通过本代理软件访问)

4.远程内容替换(由于远程替换发现有严重bug,暂时屏蔽)

例pattern为: http://myhost.com/cgi/no/ready   replacement为 http://myhost2.com/cgi/already/ready

则访问 http://myhost.com/cgi/no/ready 时,内容返回为 http://myhost2.com/cgi/already/ready 所返回的内容

5.单个请求对应多个文件组合替换

适用于多个js合并规则

转载请注明本文永久网址:http://www.alloyteam.com/?p=789
遇到问题请与 ip 反馈 iptton(at)gmail.com,或在此文后回复 :)

————————————–

2012.5.21 更新

增加源代码使用方法及代码阅读提示: https://github.com/AlloyTeam/Rythem/wiki
已实现拖动 @流年 所提及的拖动生成规则功能(已提交源代码,暂未打包新安装包)
今天有了第一次来自非团队内的pull request~非常感谢 qhwa的修正( https://github.com/qhwa)

2012.5.23 更新

使用linguist支持多语言
修复一个严重bug(会导致某些请求不能正常执行)  (已更新安装包)
TODO: 增加版本更新功能

2012.5.31更新

增加更新检查
增加单例运行检查(只允许同时运行一个Rythem)

2012.8.22更新

MacOS下增加设置代理功能
不需手动设置代理,仅在MacOS 10.8上测试通过

修改Windows下代理设置方式,解决部分windows+ie组合下设置代理失效问题

Windows下启动时自动开启抓包
MacOS下由于设置及取消都需输入密码,所以设成需手动点“开始抓包”按钮)

支持HTHML5 audio 音频替换
旧版本的Rythem或fiddler 替换 audio标签播放的文件 只能播放一次,Rythem在一开始就支持了HTML5的manifest 返回content-type,后面大家开发中遇到需修改header的问题也可和ip反馈 

支持目录级的淘宝ComboUrl  【 来自 xhowhy 的贡献 】(由于本人疏忽,忘更新主线到分支,导致昨天所发布版本中未含有ComboURL替换功能,看下载量已有5个下载,这里说声抱歉~ 目前windows版已重新build,mac版稍后更新 已更新)

2012.08.28更新
由于测试不全面,导致如果系统本身有代理情况下,如果在启动时执行抓包会出错。

2012.09.19更新
MacOS版增加对系统原代理支持(pac/http/https)
MacOS版抓包只需要输入一次密码即可

2013.11.14更新
MacOS版增加远程监听能力(远程ip地址显示在状态栏)  MacOS 10.9 不支持 Qt5 , 又要回滚到 Qt 4.8 了。。(Windows版本呢? 等我重新搭好windows环境再编译一个吧..) windows版已更新

2014.2.21更新
增加请求根据host过滤能力,
过滤例子:
如需只显示host中含有qq.com和alloyteam.com的请求,过滤输入框填  qq.com|alloyteam.com

  1. xioxin 2013 年 12 月 19 日

    想抓iphone的包 将手机的代理设置为 运行软件的ip:8889 (防火墙已关闭) 无法使用

  2. 老胡 2013 年 12 月 14 日

    请教 Rythem 的过滤功能怎么设置?

    比方我只想要 http://localhost/path/ 的数据流

    • iptton 2014 年 2 月 21 日

      目前无此功能,昨天刚开发完

  3. Jserli 2013 年 11 月 30 日

    巨浪下崩溃。无法使用。。

  4. rolinli 2012 年 11 月 20 日

    一直在用,很小巧,对于我这种频繁替换文件做测试的前端来说,非常赞~~

    嗯,期待能修复好url替换url的功能,这个也挺有用的~~

    多文件替换用过一次,也很赞,只是感觉要多写一个配置文件不太方便的样子,如果能直接在替换规则里,顺序add文件就好了~~~

    还有一个疑问是,好像通配符配不上呢,比如常见的带版本号的js文件: http://test.com/name_12345.js 用http://test.com/name*.js 这样是不能被替换的呢?还是因为我写错了?。。求指点。。。

    and,现在同事们很多都用的是fiddler。但是我觉得fiddler速度特别慢,也不喜欢它的界面,太复杂了~~~就替换文件而言Rythem完全够用诶~~~为什么你们不在km上面发表个文章介绍这个小工具呢~~~我一定会推荐周围同事用的喔~~~

    再赞一个~~加油~~~

    • iptton 2014 年 1 月 28 日

      谢谢支持
      配置文件需额外书写确实不够方便,后续考虑加上你所说的方案。
      通配替换的写法是: regex:http://test.com/name*.js

  5. Franky 2012 年 11 月 10 日

    赞一下.

  6. icolin 2012 年 10 月 30 日

    请问host替换,是否有支持导入txt格式文件导入呢:不然一个个手动输入,太累了。

  7. 匿名 2012 年 10 月 29 日

    firefox 16 不行

  8. tamamadesu 2012 年 10 月 18 日

    还有一个问题 就是 mac 下 如发一个带参数的post请求 ,右侧点击表单应该显示参数的吧,但是是空白,而参数会在 文本 选项的最下面,,

    • pan

      iptton 2012 年 10 月 30 日

      呃,表单部分未实现..只是预留位置..

  9. tamamadesu 2012 年 10 月 18 日

    我的 mac 下 火狐 不支持啊 版本16.0

    • pan

      iptton 2012 年 10 月 30 日

      firefox的默认代理设置没有使用系统代理,需手动设置,或者在firefox的设置里改为使用系统设置

  10. survivor 2012 年 9 月 5 日

    没看出来比fiddle好在哪里

    • survivor 2012 年 9 月 5 日

      如果rythem和fiddle都能良好内嵌webkit inspector和firebug就好了

      • 匿名 2012 年 9 月 5 日

        inspector和firebug 是浏览器的插件,和抓包替换工具不上关系吧 – -#

    • TAT.Kinvix 2012 年 9 月 6 日

      跨平台,主要为了mac下开发!

    • libo 2012 年 9 月 11 日

      为什么我觉得使用filddle速度很慢呢,特别是图片多的页面

      • iptton 2012 年 9 月 11 日

        这个倒没觉察出来,也许fiddler对并发连接数做了限制?

  11. 小陆 2012 年 9 月 2 日

    要是支持资源下载就太棒了

    • pan

      iptton 2012 年 9 月 3 日

      是指“整站下载”之类的功能吗?

  12. lemon郑 2012 年 8 月 14 日

    在win7 64 位的系统一运行就会提示关闭 =_=”

    • pan

      iptton 2012 年 8 月 21 日

      没在64位机上跑过,看来需要在64位下编译一个版本才行..就像多数软件都区分64位和32位一样。。

      • pan

        iptton 2012 年 8 月 22 日

        刚更新的版本修改了些宏,不知64位机上是否还会crash..

  13. fred 2012 年 8 月 12 日

    有linux下的安装包不?

  14. libo 2012 年 8 月 11 日

    请教一下,单个请求对应多个文件组合替换这个规则怎么处理,patternreplace里多个文件逗号隔开?,没试验成功

    • pan

      iptton 2012 年 8 月 13 日

      单个url对应多个文件组合使用方法如下:
      创建一个规则文本格式文件(任意命名),内容格式如下:

      {
      "projects":[{
      "include":[
      "../fileA.js",
      "../fileB.js",
      "../fileC.js"
      // ....
      ]
      }],
      "encode":"utf-8"
      }

      在规则管理页里替换文件选上面文件,即可实现把fileA,fileB,fileC合并。encode项如果没有,则默认为utf-8。

      • pan

        iptton 2012 年 8 月 13 日

        wordpress有个半角变全角的bug,上面的json格式是错误的,有需要的同学需要自己重新写一下。

  15. libo 2012 年 8 月 11 日

    今天用了一下,这个工具太帅了,速度比fiddler快了很多啊

  16. yautou 2012 年 8 月 1 日

    嗯,很好的东西~win版不能调节每栏间距,一调节就crash。mac待测试。

    • yautou 2012 年 8 月 3 日

      Mac的没有间栏崩溃这个问题。但两个平台下的发送器都不怎么好用,Header条目一多就直接不鸟了。

      • pan

        iptton 2012 年 8 月 4 日

        能发下出问题的header全文吗? windows crash是在什么系统下,我在xp win7下都是没这问题的

  17. momofiona 2012 年 7 月 2 日

    请教如何修改一个文件的头信息? 比如修改编码什么的

    • 匿名 2012 年 7 月 4 日

      是指修改response的header吗?目前还没提供这样的功能

      • Rwing 2012 年 10 月 10 日

        不错的工具。
        另外,也希望可以提供这个功能,就是可以手工设置一些东西提交一个request

      • pan

        iptton 2012 年 10 月 10 日

        @Rwing 发送器有此功能,可以完全写一个request,也可以通过把已抓到的会话拉到发送器上修改后再请求

发表评论