Kali自己写一个翻译软件来用
开发基础语言:Go
系统环境:Kali
先上自己的代码,2019年04月07日17:14:41
原理:向有道翻译,发送GET请求。
解析服务器反馈结果。
如需要更强大的翻译,请自己根据所需,开发一个。
下面是全部代码:
// 作者:[email protected]
package main
import (
"os"
"fmt"
"bufio"
"regexp"
"strings"
"net/http"
"io/ioutil"
)
func main(){
for{
reader := bufio.NewReader(os.Stdin)
fmt.Println("=====================================================================")
fmt.Print("单词原文:")
cizu, _, _ := reader.ReadLine()
fmt.Println()
url := fmt.Sprintf("http://dict.youdao.com/search?q=%s", string(cizu))
//第一步:获取 url 的Get请求,响应结果
response, err := http.Get(url)
if nil != err{
fmt.Println("获取网页源码失败:", err)
return
}
//第二步:读取网页主体body
bytes, _ := ioutil.ReadAll(response.Body)
//第三步:解析body,提取需要的数据
guojia := GetDuyinGuojia(string(bytes))
duyin := GetDuyin(string(bytes))
value := GetValue(string(bytes))
//第四步:打印结果
for i, _ := range guojia{
fmt.Printf("国家:%s\t读音:%s\n", guojia[i][1], duyin[i][1])
}
var i = 0
for _, data := range value{
i++
fmt.Printf("中文解释%d:\t%s\n", i, data)
}
}
}
func GetDuyin(body string)(result [][]string){
reg := regexp.MustCompile(`<span class="phonetic">(.+?)</span>`) //ed2k正则表达式规则
if reg == nil{
fmt.Println("正则表达式,编译错误:", reg)
return
}else{
result = reg.FindAllStringSubmatch(body, -1)
return result
}
}
func GetDuyinGuojia(body string)(result [][]string){
reg := regexp.MustCompile(`<span class="pronounce">(.+?)`) //ed2k正则表达式规则
if reg == nil{
fmt.Println("正则表达式,编译错误:", reg)
return
}else{
result = reg.FindAllStringSubmatch(body, -1)
return result
}
}
func GetValue(body string)(map[string]string){
var temp [][]string
result := make(map[string]string, 1024)
reg := regexp.MustCompile(`<li>(.+?)</li>`) //ed2k正则表达式规则
if reg == nil{
fmt.Println("正则表达式,编译错误:", reg)
return nil
}else{
temp = reg.FindAllStringSubmatch(body, -1)
}
for _, data := range temp{
if strings.Contains(data[1], "<"){
continue
}else{
result[data[1]] = data[1]
}
}
return result
}
不多说,首先,编译起来。
然后,将编译的结果,改一个容易输入的名字。
比如,我改成ruify
,这样在终端就比较容易输入了。
然后,将这个ruify
放/usr/local/bin
目录下。
OK,大功告成。
试试,在终端输入ruify
看看。
OK,能跑起来,就表示正常,OK了。
试试,输入几个单词,看看。
温馨提示:
翻译某些不存在的单词,或者中文拼音等,可能会出现BUG。
所以,尽量用于单词的翻译哟。