首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 調用金山詞霸/有道等在線翻譯 API 實現單詞查詢完整教程

     編輯:程式設計綜合問答

方案選型

金山詞霸官方未提供公開免費 API,且網頁端加密簽名複雜、反爬蟲嚴格。**強烈建議改用有道、百度、騰訊等提供正規免費額度的翻譯開放平台**,穩定且合規。

以有道翻譯 API 為例完整實現

1. 申請應用憑證

  • 註冊 有道智雲 → 創建應用 → 獲取 App Key (Application ID) 與 App Secret (密鑰)
  • 免費額度:每月 100 萬字符,足夠個人/小專案使用

2. 簽名算法 (v3 版)

sign = SHA256(AppKey + truncate(q) + salt + curtime + AppSecret)
// truncate(q): q 長度 ≤ 20 取全串,否則首 10 + 長度 + 尾 10
// salt: UUID, curtime: Unix 時間戳(秒)

3. 完整 C# 客戶端代碼

using System;
using System.Net.Http;
using System.Text;
using System.Security.Cryptography;
using System.Web;
using Newtonsoft.Json.Linq;

public class YoudaoTranslator {
    private const string AppKey = "你的AppKey";
    private const string AppSecret = "你的AppSecret";
    private const string ApiUrl = "https://openapi.youdao.com/api";

    public static async Task TranslateAsync(string text, string from = "auto", string to = "zh-CHS") {
        var salt = Guid.NewGuid().ToString("N");
        var curtime = ((DateTimeOffset)DateTime.UtcNow).ToUnixTimeSeconds().ToString();
        var input = text.Length <= 20 ? text : text.Substring(0, 10) + text.Length + text.Substring(text.Length - 10);
        var signStr = AppKey + input + salt + curtime + AppSecret;
        var sign = ComputeSha256Hash(signStr);

        var dict = new Dictionary {
            ["q"] = text, ["from"] = from, ["to"] = to,
            ["appKey"] = AppKey, ["salt"] = salt, ["sign"] = sign,
            ["signType"] = "v3", ["curtime"] = curtime
        };

        using (var client = new HttpClient()) {
            var content = new FormUrlEncodedContent(dict);
            var resp = await client.PostAsync(ApiUrl, content);
            var json = await resp.Content.ReadAsStringAsync();
            var jo = JObject.Parse(json);
            if (jo["errorCode"].Value() != 0) throw new Exception("翻譯失敗: " + jo["errorCode"]);
            return string.Join("\n", jo["translation"].Select(t => t.ToString()));
        }
    }

    private static string ComputeSha256Hash(string raw) {
        using (var sha = SHA256.Create()) {
            var bytes = Encoding.UTF8.GetBytes(raw);
            var hash = sha.ComputeHash(bytes);
            return BitConverter.ToString(hash).Replace("-", "").ToLower();
        }
    }
}

// 調用示例
var result = await YoudaoTranslator.TranslateAsync("hello world");
Console.WriteLine(result);  // 輸出: 你好世界

4. 進階功能

  • 發音:回傳 JSON 中 tSpeakUrl、speakUrl 可直接播放 MP3
  • 詞典擴展:basic 節點含音標、解釋、例句
  • 批量查詢:q 參數換行分隔多詞,單次請求最多 5000 字符

若必須抓取金山詞霸網頁 (不推薦)

需處理:動態加密參數 sign、ts、Cookie 管理、User-Agent 偽裝、IP 限流、HTML 解析脆弱性。維護成本極高,隨時失效。

總結

**棄用網頁抓取,擁抱官方 API**。有道/百度/騰訊/阿里雲均提供 C# SDK 或 REST 介面,幾分鐘即可接入,穩定、合法、免維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved