Rythem 是什么
Rythem 是一个与 Fiddler 同类的软件,和 Fiddler 一样具有 代理抓包/替换 功能,与 Fiddler 最大的不同是 Rythem 是跨平台&开源的。
下载地址及源码:
- Windows 绿色版: https://github.com/AlloyTeam/Rythem/releases/download/Rythem_for_mac_remote_listen_bug_fix/Rythem-2013-11-15.7z
- MacOS 安装包:https://github.com/AlloyTeam/Rythem/releases/tag/filter
已知此包在 MacOS 10.6.x(或以下) 下无法运行
旧版用户如果是安装在/Applications 目录,可下载 updater(425KB) 进行更新,下载解压后运行 update 即可 - Rythem 以 Qt 为基础框架,你可以到 github 上获取其源代码:https://github.com/AlloyTeam/Rythem
以下为 Rythem 运行的截图:(MacOS 与 windows 平台下略有不同)
Rythem 目前已实现以下功能:
- http 代理服务
- https tunnel 透传 (https 抓包需求似乎不是很大,暂不实现)
- 规则替换
1234匹配模式包括`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
前端开发, 怎样有效管理 hosts 文件的频繁修改? | segment-解决方案 2014 年 9 月 3 日
[…] Rythem http://www.alloyteam.com/2012/05/web-front-end-tool-rythem-1/ 里面有一个 host 项 […]
wholesale cheap Jaguars jerseys 2014 年 8 月 25 日
cheap Cowboys jerseys free shipping for sale from china
xioxin 2013 年 12 月 19 日
想抓 iphone 的包 将手机的代理设置为 运行软件的 ip:8889(防火墙已关闭)无法使用
老胡 2013 年 12 月 14 日
请教 Rythem 的过滤功能怎么设置?
比方我只想要 http://localhost/path/ 的数据流
iptton 2014 年 2 月 21 日
目前无此功能,昨天刚开发完
Linux Fiddler 的替代(http 抓包)工具 | FREEMIND 2013 年 12 月 2 日
[…] http://www.alloyteam.com/2012/05/web-front-end-tool-rythem-1/ […]
Jserli 2013 年 11 月 30 日
巨浪下崩溃。无法使用。。
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
Franky 2012 年 11 月 10 日
赞一下.
icolin 2012 年 10 月 30 日
请问 host 替换,是否有支持导入 txt 格式文件导入呢:不然一个个手动输入,太累了。
匿名 2012 年 10 月 29 日
firefox 16 不行
tamamadesu 2012 年 10 月 18 日
还有一个问题 就是 mac 下 如发一个带参数的 post 请求 ,右侧点击表单应该显示参数的吧,但是是空白,而参数会在 文本 选项的最下面,,
iptton 2012 年 10 月 30 日
呃,表单部分未实现.. 只是预留位置..
tamamadesu 2012 年 10 月 18 日
我的 mac 下 火狐 不支持啊 版本 16.0
iptton 2012 年 10 月 30 日
firefox 的默认代理设置没有使用系统代理,需手动设置,或者在 firefox 的设置里改为使用系统设置
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 对并发连接数做了限制?
小陆 2012 年 9 月 2 日
要是支持资源下载就太棒了
iptton 2012 年 9 月 3 日
是指 “整站下载” 之类的功能吗?
lemon郑 2012 年 8 月 14 日
在 win7 64 位的系统一运行就会提示关闭 =_=”
iptton 2012 年 8 月 21 日
没在 64 位机上跑过,看来需要在 64 位下编译一个版本才行.. 就像多数软件都区分 64 位和 32 位一样。。
iptton 2012 年 8 月 22 日
刚更新的版本修改了些宏,不知 64 位机上是否还会 crash..
fred 2012 年 8 月 12 日
有 linux 下的安装包不?
iptton 2012 年 8 月 13 日
暂时没有..
libo 2012 年 8 月 11 日
请教一下,单个请求对应多个文件组合替换这个规则怎么处理,patternreplace 里多个文件逗号隔开?,没试验成功
iptton 2012 年 8 月 13 日
单个 url 对应多个文件组合使用方法如下:
创建一个规则文本格式文件(任意命名),内容格式如下:
{
"projects":[{
"include":[
"../fileA.js",
"../fileB.js",
"../fileC.js"
// ....
]
}],
"encode":"utf-8"
}
在规则管理页里替换文件选上面文件,即可实现把 fileA,fileB,fileC 合并。encode 项如果没有,则默认为 utf-8。
iptton 2012 年 8 月 13 日
wordpress 有个半角变全角的 bug, 上面的 json 格式是错误的,有需要的同学需要自己重新写一下。
libo 2012 年 8 月 11 日
今天用了一下,这个工具太帅了,速度比 fiddler 快了很多啊
yautou 2012 年 8 月 1 日
嗯,很好的东西~win 版不能调节每栏间距,一调节就 crash。mac 待测试。
yautou 2012 年 8 月 3 日
Mac 的没有间栏崩溃这个问题。但两个平台下的发送器都不怎么好用,Header 条目一多就直接不鸟了。
iptton 2012 年 8 月 4 日
能发下出问题的 header 全文吗? windows crash 是在什么系统下,我在 xp win7 下都是没这问题的
momofiona 2012 年 7 月 2 日
请教如何修改一个文件的头信息? 比如修改编码什么的
匿名 2012 年 7 月 4 日
是指修改 response 的 header 吗?目前还没提供这样的功能
Rwing 2012 年 10 月 10 日
不错的工具。
另外,也希望可以提供这个功能,就是可以手工设置一些东西提交一个 request
iptton 2012 年 10 月 10 日
@Rwing 发送器有此功能,可以完全写一个 request, 也可以通过把已抓到的会话拉到发送器上修改后再请求