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

2024-02-05 00:07:05 +08:00
 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 资源访问的签名头部。

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

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

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

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

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

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

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


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

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

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

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

但如果你没这种想法,就想推广产品,显然在网站前后端这个领域里,用 py 的人远少于 js 、java
bitxeno
2024-02-05 11:28:22 +08:00
纯粹是 js 大家都熟悉,python 还有学习成本吧,vscode 有最好的扩展生态,跟随总没错
ospider
2024-02-05 11:33:28 +08:00
我日常写 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