在扩展脚本方面,用户为何不太愿意接受 Python ?

322 天前
 MegatronKing

大家好,我是Reqable的开发者,给大家分享我在推广 Python 作为程序扩展脚本时遇到的一些问题和思考。如果大家对这个方面有想法和建议也非常欢迎一起讨论,不甚感激。

先说下大体的背景,我的产品 Reqable 是 API 抓包和测试一体化工具。这一类工具基本上都会用到扩展脚本,比如 Fiddler 使用了 FiddlerScript 作为扩展脚本,Postman 和 Proxyman 等使用 Javascript 。用户可以编写扩展脚本来动态地修改请求或者响应数据,相比静态功能来说,提供了更多的可能性。

在设计 Reqable 的时候,我考虑了两种方案:方案 A 是 Javacript ,方案 B 是 Python ,最后定下来方案 B 。谈谈我当初的考虑,Reqable 本身是基于 Flutter 而不是基于 Web 引擎,如果需要支持 Javacript 需要像 React Native 一样额外引入 JSCore 来解释执行 Javacript ,技术实现上来说稍微麻烦点但难度也不大,包体积会大一些但也还好。对于 Python 而言,主流 Windows 和 Mac 上系统默认都已经预安装了,用 Linux 的基本上也会安装,所以可以直接借助用户的 Python 环境来执行脚本,不需要引入额外的库。另外,我考虑到 Python 的在用户宽度可能会更广,比如测试工程师、安全工程师、爬虫工程师等等,而 Javacript 在前端会更加流行。综上原因,最终我选择了 Python 作为扩展脚本语言。

但是想法虽好,用户却不是很买单。有些用户建议我支持 Javacript 脚本,还有一些说 Python 直接劝退。这些反馈让我不得不重新审视之前的想法,考虑是否需要增加 Javascript 作为扩展脚本。当然,维护两套扩展脚本框架我不是很情愿,这个会极大地增加后续维护和迭代的工作量。技术实现难度反而是其次,大佬 Levi 也很贴心地给我提供了他产品目前使用 Javascript 作为扩展脚本的方案: https://zhuanlan.zhihu.com/p/672772729

说回目前的困境,大家不太能接受 Python 的原因,我的个人的反思和调研出来的是以下几点:

针对这几个原因,我做了一些努力和尝试,希望能再挣扎几下:

第一点:技术栈的问题目前无解,但我还是相信 Python 的用户宽度更广。当然,如果能熟用 GPT ,技术栈也不是什么问题,直接提需求让 GPT 写。

第二点:确实是一个很大的问题,例如代码编辑器缺少代码提示和补全,调试功能不方便。针对这个问题,我完善了代码编辑器,加上了代码提示和补全功能。对于调试,则提供了日志控制台功能,当然断点调试目前还不知道怎么去支持。

第三点:对于拿来主义,我的设想是提供一个开源的公共模板仓库,将一些常用的脚本放进去,用户可以直接在 Reqable 里面 Fork 并使用。例如,我写了个利用 Python 扩展脚本自动生成并添加阿里云 OSS 资源访问的签名头部。

我暂时就想到了这么多,效果好不好目前还不确定,如果大家还有想法和见解,欢迎补充。

14611 次点击
所在节点    推广
114 条回复
weixind
321 天前
你的用户是 python 用户居多还是 js 用户居多。面向市场编程。
shuax
321 天前
参考 sublime ,内置 python ,别用系统的。
sunfkny
321 天前
设计一套 RPC 协议,让用户启动 RPC 服务端,这样只要实现了协议就可以用任何语言,也不用自己实现编辑器的功能
jianchang512
321 天前
如果你的工具主要用户人群是前端开发者或者 java 后端,那么用 python 自然不会让他们高兴
如果目标本身就是 python 开发者,用户肯定高兴
debuggerx
321 天前
都是惯的,就该直接让用 dart 写脚本🐶
zeromake
321 天前
QuickJS 我觉得就挺好的,足够的小,可以去找找其它人维护的版本,官方版暂时不能用 msvc 编译,例如 quickjs-ng/quickjs ,openwebf/quickjs ,也可以参考我自己维护的版本 zeromake/quickjs
timnottom
321 天前
建议使用 js ,像 frida 这种 app 都是使用的 js ;

Javascript 是世界上最好的语言(不支持反驳);

顺带一提,我的聚合搜索应用:混合盘( https://hunhepan.com/),也是使用的 js 引擎;

再一提,reqable 好用 , 无论是抓包,还是导入 curl 发送请求,都不错,如果但见有个终身版,我也就买了;不过,也完全理解没有终身版本的原因;
Panway
321 天前
Python 脚本编辑与运行可以参考下开源的 Auto.js 这种模式,提供一个 VSCode 插件,通过 adb 或者内置 http 连接,在 VSCode 写完 js 脚本就能在手机运行
0o0O0o0O0o
321 天前
@MegatronKing #11

- 恶意脚本,我觉得借助外部的 Python 运行环境几乎没有好办法来限制脚本,全靠人工审查?
- 性能,抓包工具一定会遇到一些需要性能的场景,我觉得调用外部 Python 环境来执行很容易遇到瓶颈吧?
shyangs
321 天前
看來看去好像沒知名的抓包工具用 Python 當 plugin/extension 擴充語言?

用 Python 可以進行差異化競爭, 避免和 Postman 與 SoapUI 打對台. 當然我的主力語言是 Java 和 JS, 我會優先選 Java 和 JS.
wxw752
321 天前
我觉得还是技术栈的问题,基本每个后端都多多少少会 js 吧,但是不是几乎所有人都会 py 哦,尤其是数量庞大的 Java 开发
myderr
321 天前
直接分开使用 websocket 通信,主流语言自己实现 sdk ,小众语言由社区自己实现 sdk
0o0O0o0O0o
321 天前
@shyangs #50 burp 与 jython 这种算吗
libook
321 天前
项目做的这个程度,就不是单纯做着玩了,所以需要从喜好策略模式改为运营策略模式。所以你要意识到,你不是在做一个令自己满意的软件,而是在跟业内其他产品竞争市场。无论你觉得你的选型在技术理论上有多少优势,市场因素往往优先级更高。


如果竟品大多使用 JS 作为脚本语言,那么为了从竞品挖用户过来,也应该顺应用户的使用习惯使用 JS ,这样用户就会更多关注你的其他优势,而不是因为 Python 望而却步;特别是如果有一个用户量明显高于你的竞品在使用 JS ,你甚至可以以它为标准进行兼容,这样它的生态就成为了你的生态。

后续当你的用户数量达到很大规模了,你可能也成为了这个行业的领跑者了,这时你就可以开始尝试培养用户习惯了,比如引入 Python 并作为默认推荐选项,并独占一些吸引人的特性。这就有点类似于 Android 推 Kotlin ,以及 iOS 推 Swift 。
shyangs
321 天前
@0o0O0o0O0o

Burp Suite 支援 Java 開發 extension, 對 Javaer 當然直接寫 Java, 而不是繞路去學 Pyhon / Jython.
icyalala
321 天前
抓包这种本来就和前端贴近的工具,嵌入脚本第一选择肯定 JS ,看竞品的选择就知道了。
至于楼上有人说什么 Py 换成 JS 同样也有人不满,但是反馈的人肯定比现在少得多。
Leonooo13
321 天前
付费的话,看用户比例,开源看自我喜爱。
karnaugh
321 天前
你的产品介绍:
新一代 API 调试 + API 测试一站化解决方案
全平台、免登录、轻量级、高性能、无广告,让 API 更快更简单

那你的目标用户是谁?
如果说你只想服务 python 用户,那就不用在乎其他声音

但如果你没这种想法,就想推广产品,显然在网站前后端这个领域里,用 py 的人远少于 js 、java
bitxeno
321 天前
纯粹是 js 大家都熟悉,python 还有学习成本吧,vscode 有最好的扩展生态,跟随总没错
ospider
321 天前
我日常写 Python 的,我还是建议你用 js ,原因有三:

- JS 有 quickJS 这种轻量级实现
- 嵌入式脚本,需要复制粘贴的场景太多了,Python 那个缩进就成了弊端了
- Python 太依赖官方库和第三方库了,这在嵌入上也是弊端

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1014257

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX