有道翻译接口逆向

前言

本文主要介绍了有道翻译的接口调用情况,对两个接口进行了初步的接口逆向,只供学习交流使用。

找到翻译接口 webtranslate

网页地址:https://fanyi.youdao.com/index.html#/

首先找到翻译接口
在这里插入图片描述

可以看出,翻译接口是 webtranslate,再看返回内容
在这里插入图片描述
返回的是一大串字符串,所以后面还需要解密这串字符

解密webstranslate 中的 Form Data 参数

i: 你好,程序
from: auto
to: 
domain: 0
dictResult: true
keyid: webfanyi
sign: c04636a841a4b2c374dc4d7dcf675514
client: fanyideskweb
product: webfanyi
appVersion: 1.0.0
vendor: web
pointParam: client,mysticTime,product
mysticTime: 1711293172275
keyfrom: fanyi.web
mid: 1
screen: 1
model: 1
network: wifi
abtest: 0
yduuid: abcdefg

可以看到sign参数加密,加密长度为32位

md5加密特征:
**长度固定。**无论输入的数据长度是多少字节,输出总32位字符。
**不可逆。**即无法通过MD5值反推出原始数据。
**抗修改性。**对原始数据进行的任何改动,甚至是一个字节的修改,都会导致MD5值显著不同。
**抗碰撞性。**要找到两个具有相同MD5值的不同数据非常困难。
由此我们可以判断,它属于md5加密

寻找加密 sign

全局搜索 sign 的值,发现只有这一行的 debug 进去了
在这里插入图片描述
点进去之后找到了sign 这个参数,sign 是由于 k(o,e) 这个方法生成的,再网上找方法,最后发现确实是 md5 加密而来的
[图片]

我们可以试一下,e的结果是

client=fanyideskweb&mysticTime=1711293674225&product=webfanyi&key=fsdsogkndfokasodnaso

页面上 md5 加密后
[图片]
使用网上的工具加密
在这里插入图片描述
发现正好是 32位小写的 md5 加密,结果和预想的正确
通过检查发现 这个key= fsdsogkndfokasodnaso
[图片]

探索 key 接口

发现这个key 竟然来自于另一个接口
在这里插入图片描述

所以自动化翻译需要两个接口来实现,第一步先获取加密的key,之后再请求翻译接口,除了sign,其他的都是写死的

现在看看第一个返回 key的接口是否需要逆向,发现这个sign 也是需要加密的,但是key=asdjnjfenknafdfsdfsd
在这里插入图片描述

第一个请求能够复现了

import requests
import datetime
import json
import hashlib
from urllib.parse import urlencode


def get_timestamp():
    return int(datetime.datetime.now().timestamp() * 1000)


def get_key():
    # 主要是获取key等参数
    url = "https://dict.youdao.com/webtranslate/key"
    mysticTime = get_timestamp()
    tmp_sign = f"client=fanyideskweb&mysticTime={
     mysticTime}&product=webfanyi&key=asdjnjfenknafdfsdfsd"
    sign = hashlib.md5(tmp_sign.encode("utf8")).hexdigest()
    # 参数
    params = {
   
        'keyid': 'webfanyi-key-getter',
        'sign': sign,
        'client': 'fanyideskweb',
        'product': 'webfanyi',
        'appVersion': '1.0.0',
        'vendor': 'web',
        'pointParam': 'client,mysticTime,product',
        'mysticTime': mysticTime,
        'keyfrom': 'fanyi.web',
        'mid': 1,
        'screen': 1,
        'model': 1,
        'network': 'wifi',
        'abtest': '0',
        'yduuid': 'abcdefg',
    }

    url_with_params = f"{
     url}?{
     urlencode(params)}"

    headers = {
   
        'Acce
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值