逆向工程(三) 某翻译插件的请求模拟/语境翻译 API 获取

逆向工程(三) 某翻译插件的请求模拟/语境翻译 API 获取

前言

本次逆向源于必须要学英语玩Apex。
接下来将详细记录我如何通过开发者工具模拟请求调用某词典的翻译工具, 尤其是语境翻译 功能。

环境

  • Python 3
  • 某词典翻译插件

顺着网线

分析

首先打开任意英文网页, 划词翻译一个单词, 插件会默认跳出语境翻译。

打开开发者工具, 筛选条件为 method:GET eudic, 找到名为 MiniDictSearch2?.. 的一条请求, 验证一下载荷:

word: pubs
context: I’m usually on pubs late night looking for teammates

因为这是一条 GET 请求, 我们直接复制请求网址试试能不能发现什么
https://dict.eudic.net/dicts/xxx?word=pubs&context=xxx

这个发现意味着什么呢?…某词典的服务器是直接接收明文的上下文语句的…

这个 URL 主要包含两个参数:

  • word=pubs: 要查询的单词。
  • context=...: 选中的上下文语句,使用 URL 编码(观察更多可以总结: %20 代表空格,%2C 代表逗号, %E2%80%99 代表 )。

这个发现意味着什么呢?

  1. 某词典的服务器是直接接收明文的上下文语句的 这可能为我们理解它的提示词策略提供了更直接的线索!
  2. 可以尝试修改这个 URL 中的参数 例如,我们可以修改 pubs 参数来查询不同的单词,或者修改 context 参数来测试不同的上下文语句,看看 AI 翻译的结果会如何变化。
  3. 我们可以用 Python 脚本来构造和发送这些请求 我们可以使用 requests 库来发送 HTTP 请求,并解析返回的结果。这样我们就可以自动化地进行大量的测试,并分析 AI 翻译的规律。

行动

我将 pubs 改成这个上下文中任一单词, 其他不变, 构造网址, 依然可以成功获取翻译信息。确认了请求 URL 的构造. 只要 word 后面添加任意单词: https://dict.eudic.net/dicts/xxx?word=hello 就是相当于在网页上查找单词, 但是并不是常规的用户搜索界面。而是像下面这种。
在这里插入图片描述
如果 https://dict.eudic.net/dicts/xxx?word=world&context=Hello%20world 后面加上上下文, 就会在 AI 解释那边自动默认显示语境翻译
在这里插入图片描述
另外, 有两个地方可以找到最关键的请求接口: https://dict.eudic.net/dicts/xxx

  1. 依然在刚才的开发者工具页面, 过滤 ai/method:POST
  2. https://dict.eudic.net/dicts/xxx?word=pubs&context=xxx 网页中, 按 F12, 同 1 的过滤条件也可以发现这个接口。

显然这个应该是导向某词典内部的 AI 语境翻译的源头接口。这个接口就不能直接网页转到, HTTP 错误码 500。

初步分析

  1. 不同的接口,不同的功能:

    • https://dict.eudic.net/dicts/xxx 看起来更像是一个“通用”的单词查询接口,当只提供 word 参数时,它会返回一个标准的单词释义页面(就像截图中的那样)。
    • 而当同时提供 wordcontext 参数时,MiniDictSearch2 接口的结果中会包含 AI 解释,并且默认显示“语境”翻译。
    • https://dict.eudic.net/dicts/xxx 则更像是专门负责“AI 语境翻译”的接口。
  2. AiExplainTabStream 接口的特点:

    • 它是一个 POST 请求,这与 MiniDictSearch2 的 GET 请求不同。
    • 它返回的数据类型是 text/event-stream,这是一种用于服务器发送更新到客户端的流数据格式,通常用于实时应用,例如聊天、股票行情等。这说明某词典的 AI 语境翻译可能是以流的形式逐步生成的。
  3. 关于 MiniDictSearch2 接口的更多发现:

    • 只能支持一个单词/字母: MiniDictSearch2 接口在用于语境翻译时,只能支持一个单词或字母
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值