亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現谷歌翻譯API示例代碼

2019-10-29 21:09:55
字體:
來源:轉載
供稿:網友

由于谷歌翻譯官方API是付費版本,本著免費和開源的精神,分享一下用C#實現谷歌翻譯API的代碼。這個代碼非常簡單,主要分兩塊:通過WebRequest的方式請求內容;獲取Get方式的請求參數(難點在于tk的獲?。?。

一、WebRequest代碼

var webRequest = WebRequest.Create(url) as HttpWebRequest;webRequest.Method = "GET";webRequest.CookieContainer = cookie; webRequest.Referer = referer;webRequest.Timeout = 20000;webRequest.Headers.Add("X-Requested-With:XMLHttpRequest");webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";webRequest.UserAgent = useragent; using (var webResponse = (HttpWebResponse)webRequest.GetResponse()) {   using (var reader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))   {    html = reader.ReadToEnd();    reader.Close();    webResponse.Close();   } } 

二、谷歌翻譯接口的實現

1、抓包查看翻譯網絡請求,這里是用谷歌瀏覽器查看的網絡請求,如下圖:

C#實現谷歌翻譯API,C#,谷歌翻譯

可以看到,請求方式是“Get”方式,后面跟的請求參數很多,如下圖:

C#實現谷歌翻譯API,C#,谷歌翻譯

其中,最重要的參數有:sl--來源語言,一般設置為auto即自動檢測,tl--目標語言,你想翻譯成的語言,tk--ticket即使發車車票,谷歌就靠這個來防止我們免費調用的,這是本API最難的地方。

2、tk的獲取

在打開https://translate.google.com/頁面是,獲取到的HTML代碼中有如下一個生成TKK的腳本

C#實現谷歌翻譯API,C#,谷歌翻譯

直接運行這個腳本,可以生成一個字符串:

C#實現谷歌翻譯API,C#,谷歌翻譯

從監控的網絡中可以發現其中一個JS調用了這個TKK值,這個JS加了密進行混淆的,要破解這個JS需要扎實的基本功,以及足夠的耐心,我也是網上找的別人破解的JS代碼,親測可用,需將此代碼保存在gettk.js文檔中,方便調用:

var b = function (a, b) {  for (var d = 0; d < b.length - 2; d += 3) {    var c = b.charAt(d + 2),      c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),      c = "+" == b.charAt(d + 1) ? a >>> c : a << c;    a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c  }  return a} var tk = function (a,TKK) {  for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {    var c = a.charCodeAt(f);    128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)  }  a = h;  for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");  a = b(a, "+-3^+b+-f");  a ^= Number(e[1]) || 0;  0 > a && (a = (a & 2147483647) + 2147483648);  a %= 1E6;  return a.toString() + "." + (a ^ h)} 

要得到tk只需要,運行tk這個函數,它有兩個輸入值:a為翻譯文本內容,TKK是上文正則匹配得到的JS字符串執行的結果值。為方便在C#中執行JS,封裝了一個能執行JS的函數,如下:

/// <summary>/// 執行JS/// </summary>/// <param name="sExpression">參數體</param>/// <param name="sCode">JavaScript代碼的字符串</param>/// <returns></returns>private string ExecuteScript(string sExpression, string sCode){  MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl();  scriptControl.UseSafeSubset = true;  scriptControl.Language = "JScript";  scriptControl.AddCode(sCode);  try  {    string str = scriptControl.Eval(sExpression).ToString();    return str;  }  catch (Exception ex)  {    string str = ex.Message;  }  return null;}    

3、實現翻譯的完整代碼

/// <summary>/// 谷歌翻譯/// </summary>/// <param name="text">待翻譯文本</param>/// <param name="fromLanguage">自動檢測:auto</param>/// <param name="toLanguage">中文:zh-CN,英文:en</param>/// <returns>翻譯后文本</returns>public string GoogleTranslate(string text, string fromLanguage, string toLanguage){  CookieContainer cc = new CookieContainer();   string GoogleTransBaseUrl = "https://translate.google.com/";   var BaseResultHtml = GetResultHtml(GoogleTransBaseUrl, cc, "");   Regex re = new Regex(@"(?<=TKK=)(.*?)(?=/);)");   var TKKStr = re.Match(BaseResultHtml).ToString() + ")";//在返回的HTML中正則匹配TKK的JS代碼   var TKK = ExecuteScript(TKKStr, TKKStr);//執行TKK代碼,得到TKK值   var GetTkkJS = File.ReadAllText("./gettk.js");   var tk = ExecuteScript("tk(/""+text+"/",/""+TKK+"/")", GetTkkJS);   string googleTransUrl = "https://translate.google.com/translate_a/single?client=t&sl="+fromLanguage+"&tl="+toLanguage+"&hl=en&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=0&tsel=0&kc=1&tk="+tk+"&q="+HttpUtility.UrlEncode(text);   var ResultHtml = GetResultHtml(googleTransUrl, cc, "https://translate.google.com/");   dynamic TempResult = Newtonsoft.Json.JsonConvert.DeserializeObject(ResultHtml);   string ResultText = Convert.ToString(TempResult[0][0][0]);   return ResultText;} public string GetResultHtml(string url,CookieContainer cc,string refer){  var html="";     var webRequest = WebRequest.Create(url) as HttpWebRequest;   webRequest.Method = "GET";   webRequest.CookieContainer = cookie;   webRequest.Referer = referer;   webRequest.Timeout = 20000;   webRequest.Headers.Add("X-Requested-With:XMLHttpRequest");   webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";   webRequest.UserAgent = useragent;   using (var webResponse = (HttpWebResponse)webRequest.GetResponse())  {     using (var reader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))     {       html = reader.ReadToEnd();      reader.Close();      webResponse.Close();     }  }  return html;} /// <summary>/// 執行JS/// </summary>/// <param name="sExpression">參數體</param>/// <param name="sCode">JavaScript代碼的字符串</param>/// <returns></returns>private string ExecuteScript(string sExpression, string sCode){  MSScriptControl.ScriptControl scriptControl = new MSScriptControl.ScriptControl();  scriptControl.UseSafeSubset = true;  scriptControl.Language = "JScript";  scriptControl.AddCode(sCode);  try  {    string str = scriptControl.Eval(sExpression).ToString();    return str;  }  catch (Exception ex)  {    string str = ex.Message;  }  return null;}  

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。

 

注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品福利视频| 91免费看片网站| 亚洲精品一区二区三区婷婷月| 亚洲欧美日韩在线一区| 国产主播精品在线| 久久久久久成人| 一本色道久久88精品综合| 91精品久久久久久久久久另类| 亚洲精品网址在线观看| 国外色69视频在线观看| 在线a欧美视频| 亚洲护士老师的毛茸茸最新章节| 中文字幕精品—区二区| 日本欧美一二三区| 欧洲亚洲妇女av| 久久久999精品免费| 欧美一区亚洲一区| 欧美www视频在线观看| 亚洲图片在线综合| 久久久久久亚洲精品不卡| 91精品国产亚洲| 色噜噜亚洲精品中文字幕| 亚洲白虎美女被爆操| 情事1991在线| 亚洲黄色有码视频| 97精品欧美一区二区三区| 91在线视频导航| 91av在线免费观看| 狠狠爱在线视频一区| 青青精品视频播放| 久久69精品久久久久久久电影好| 久久中文字幕视频| 成人观看高清在线观看免费| 久久精品亚洲精品| 欧美激情中文网| 欧美性色视频在线| 久久久久国产精品一区| 欧美精品午夜视频| 亚洲最大av网站| 亚洲精品理论电影| 亚洲在线免费看| 92版电视剧仙鹤神针在线观看| 欧美精品久久久久久久久久| 国产精品久久久久久av福利软件| 国产噜噜噜噜噜久久久久久久久| 久久天天躁夜夜躁狠狠躁2022| 粗暴蹂躏中文一区二区三区| 中文字幕精品在线| 国产精品久久久久久久久男| 国产精品高精视频免费| 久久99精品视频一区97| 国产一区二区精品丝袜| 国产手机视频精品| 欧美综合国产精品久久丁香| 国产精品羞羞答答| 4p变态网欧美系列| 福利一区福利二区微拍刺激| 91精品久久久久久久久久入口| 久久亚洲精品一区二区| 成人黄色影片在线| 91性高湖久久久久久久久_久久99| 亚洲精品网站在线播放gif| 日韩在线中文字| 国产精品日本精品| 两个人的视频www国产精品| 日韩在线观看视频免费| 日韩精品免费综合视频在线播放| 国产精彩精品视频| 亚洲精品午夜精品| 久久免费高清视频| 一区二区中文字幕| 成年无码av片在线| 久久久91精品| 国产精品电影久久久久电影网| 77777亚洲午夜久久多人| 国产亚洲视频在线观看| 日韩在线不卡视频| 国产精品日韩电影| 日韩电影免费在线观看| 国产一区二区三区三区在线观看| 亚洲视频电影图片偷拍一区| 成人综合国产精品| 久久精品99久久久久久久久| 亚洲综合在线中文字幕| 九九精品在线视频| 欧美国产中文字幕| 欧美一区二区三区艳史| 一区二区三区回区在观看免费视频| 红桃视频成人在线观看| 国产精品aaaa| 亚洲国内高清视频| 欧美福利视频在线观看| 精品五月天久久| 国产精品18久久久久久首页狼| 精品国产区一区二区三区在线观看| 国产伦精品一区二区三区精品视频| 精品国产自在精品国产浪潮| 日韩精品极品毛片系列视频| 国产精品9999| 欧美激情伊人电影| 色先锋久久影院av| 亚洲成年人影院在线| 亚洲大胆人体在线| 91国内免费在线视频| 欧美日韩国产成人在线观看| 91久久久久久| 日韩av在线不卡| 在线视频欧美日韩| 亚洲激情电影中文字幕| 91高清视频免费观看| 成人午夜在线观看| 日韩电影免费在线观看| 大荫蒂欧美视频另类xxxx| 一区二区亚洲精品国产| 日韩网站免费观看| 91精品国产综合久久香蕉的用户体验| 日韩电影网在线| 欧美中文在线视频| 性亚洲最疯狂xxxx高清| 欧美激情乱人伦| 国产精品91在线观看| 欧美激情视频网站| 国产精品欧美一区二区| 精品在线观看国产| 欧美激情视频一区| 国产成人亚洲综合91| 欧洲亚洲女同hd| 尤物yw午夜国产精品视频明星| 亚洲在线免费观看| 日韩精品电影网| 亚洲欧洲国产精品| 7777精品久久久久久| 国产精品网站视频| 亚洲精品按摩视频| 久久久亚洲精品视频| 成人欧美一区二区三区黑人孕妇| 黄网动漫久久久| 欧美在线一级va免费观看| 一区二区三区视频免费| 美女视频黄免费的亚洲男人天堂| 久久99国产精品自在自在app| 亚洲人成绝费网站色www| 一区二区三区国产视频| 亚洲在线一区二区| www.美女亚洲精品| 国产亚洲欧美另类中文| 国产日韩在线精品av| 国产精品稀缺呦系列在线| 国产亚洲成精品久久| 国产精品无码专区在线观看| 久久精品国产2020观看福利| 一区二区三区四区在线观看视频| 亚洲国产精品va在线| 成人久久18免费网站图片| 亚洲美女中文字幕| 97久久精品人搡人人玩| 最新69国产成人精品视频免费| 日韩精品在线免费播放| 国产丝袜一区二区三区免费视频| 欧美一区二区三区图| 精品中文视频在线| 国产精品99久久久久久www| 国产一区香蕉久久| 亚洲字幕在线观看|