今天突然想要做一个百度翻译的接口,但是发现百度是有提供免费的接口的,但是限制翻译的字数,最主要的还是我懒得注册,所以我们来简单的实现百度的翻译接口。

Ⅰ.实现原理

我们在小学二年级的时候就听说过,百度翻译的正常接口,是有通过token加密的,还比较难破解。但是通过观察,百度是存在另外一个实时翻译的接口的,就是当我们每次输入东西的时候都会在一个接口上访问。

打开F12查看上传的包

每次在我们输入一个字符都会往这个sug接口访问数据,并且这个接口竟然只需要接收一个参数:kw 即可,完全不需要验证什么token!所以我们就从这个下手!

Ⅱ.Python实现

首先我们需要引入一个超级好用的python库:

import requests

如果显示没有这个库,那么请先下载这个库:

# 在控制台输入以下代码
# 如果显示不存在 pip 这个命令证明你的pip环境变量未配置
pip install requests

接下来,按照平常的思路,提供headers和data即可完成

如果你返回的结构不是中文而是一堆/u开头的16进制数

那么将获得的结构进行转码即可获得中文字符:

结果.encode('utf-8').decode('unicode_escape')

下面直接提供完整代码:

import requests

url = "https://fanyi.baidu.com/sug"

headers = {
    'Origin': 'https://fanyi.baidu.com',
    'Referer': 'https://fanyi.baidu.com/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.54',
}

def main():
    value = '你好' # 输入你想要翻译的内容
    data = {'kw' : value}
    req = requests.post(url=url, headers=headers, data=data)
    print(req.text.encode('utf-8').decode('unicode_escape'))


if __name__ == '__main__':
    main()

测试结果:

运行结果