一级目录
二级目录
三级目录
一、什么是有道翻译
有道智云平台是网易有道旗下一个为开发者、企业和政府机构等提供自然语言翻译、文字识别OCR等服务以及行业解决方案的云服务平台。致力于提供安全,可靠和高效的云服务,其中包含文本翻译服务,基于有道神经网络翻译引擎的文本翻译服务,支持上百种语言的自动识别与互译,服务8亿用户,翻译质量业界领先。
该工具利用体验中心展示效果进行,仅作为技术学习使用,切勿非法、过度使用。如商用请购买该服务,使用开放API方式进行翻译服务。
体验中心仅作为部分效果体验,若您想获取更好体验,请通过API/SDK方式接入该服务。
https://ai.youdao.com/product-fanyi-text.s
二、获取请求参数
F12或点击右键打开浏览器调试模式,选择“Network”,在待翻译输入框里写入字段,点击【翻译】控制台会输出请求和对应的相应信息。
如图所示:
Request URL: https://aidemo.youdao.com/trans
Request Method: POST
Status Code: 200
Remote Address: 103.74.50.118:443
Referrer Policy: strict-origin-when-cross-origin
Header请求头
:authority: aidemo.youdao.com
:method: POST
:path: /trans
:scheme: https
accept: application/json, text/javascript, */*; q=0.01
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
content-length: 31
content-type: application/x-www-form-urlencoded; charset=UTF-8
origin: https://ai.youdao.com
referer: https://ai.youdao.com/
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-site
user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36
Payload负载
q: hello world
from: Auto
to: Auto
构造这些参数的请求方法
三、代码实现
package main
import (
"errors"
"fmt"
"strings"
"github.com/asmcos/requests"
)
type YouDao struct {
Query string
Translation []string
}
func Youdao(url,s string) (string, error) {
data := requests.Datas{
"q": s,
"from": "auto",
"to": "auto",
}
resp, err := requests.Post(url, data)
if err != nil {
return "", err
}
var res YouDao
if err := resp.Json(&res); err != nil {
return "", err
}
if len(res.Translation) > 0 {
return res.Translation[0], nil
}
return resp.Text(), nil
}
func main() {
url := "https://aidemo.youdao.com/trans"
s := "(MS11-051)微软活动目录证书服务Web登记跨站脚本漏洞(CVE-2011-1264)"
res, err := Youdao(url,s)
if err != nil {
fmt.Println(err)
}
fmt.Println(res)
}
输出:
(MS11-051) Microsoft Active Directory Certificate Service Web Registry Cross-site Scripting Vulnerability (CVE-2011-1264)
package main
import (
"errors"
"fmt"
"strings"
"github.com/asmcos/requests"
)
//翻译
type FanYiResult struct {
Data FanYiData
Msg string
}
type FanYiData struct {
//Explain interface{}
Fanyi string
}
func En2zh(s string) (string, error) {
//空格输入 %20
//curl -v "http://dict.youdao.com/fsearch?client=deskdict&keyfrom=chrome.extension&pos=-1&doctype=xml&xmlVersion=3.2&dogVersion=1.0&vendor=unknown&appVer=3.1.17.4208&le=eng&q='hello'"
//curl -v "http://dict.youdao.com/fsearch?client=deskdict&keyfrom=chrome.extension&q=hello&pos=-1&doctype=xml&xmlVersion=3.2&dogVersion=1.0&vendor=unknown&appVer=3.1.17.4208&le=eng"
url := "https://fanyi.so.com/index/search"
head := requests.Header{
"pro": "fanyi",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
}
data := requests.Datas{
"eng": "1",
"query": s,
}
resp, err := requests.Post(url, head, data)
if err != nil {
return "", err
}
var res FanYiResult
if strings.Contains(resp.Text(), "error") {
if strings.Contains(resp.Text(), "请输入验证码以便正常访问") {
return s, errors.New("访问api频繁异常")
}
if strings.Contains(resp.Text(), "query restricted") {
return s, errors.New("查询限制")
}
} else {
if err := resp.Json(&res); err != nil {
return "", err
}
if res.Msg == "succ" {
return res.Data.Fanyi, err
}
}
return s, nil
}
func main() {
s := "hello"
re, err := En2zh(s)
if err != nil {
fmt.Println(err)
}
fmt.Println(re)
}
四、附录
参考链接:
https://ai.youdao.com/product-fanyi-text.s
https://fanyi.so.com/index/search
https://github.com/asmcos/requests