繁体   English   中英

多语言Google Translate API正在退回(503)服务器不可用

[英]Multi-language Google Translate API is returing (503) Server Unavailable

我正在尝试使用谷歌翻译进行翻译,但它提供错误服务器不可用。 我的猜测是,当我尝试将相同的东西放在地址栏中时,我们会收到一个填写验证码。如果我们通过验证码而不是只下载一个txt文件。 我认为这可能是验证码页面的问题,而不是服务器不可用。

调用函数。

string result = TranslateGoogle("Life is great and one is spoiled when it goes on and on and on", "en", "hi");
Console.WriteLine(result);

翻译谷歌功能

public string TranslateGoogle(string text, string fromCulture, string toCulture)
{
    fromCulture = fromCulture.ToLower();
    toCulture = toCulture.ToLower();
    string[] tokens = fromCulture.Split('-');
    if(tokens.Length > 1)
        fromCulture = tokens[0];

    tokens = toCulture.Split('-');
    if(tokens.Length > 1)
        toCulture = tokens[0];

    string url = string.Format(@"http://translate.google.com/translate_a/t?client=j&text={0}&hl=en&sl={1}&tl={2}", System.Uri.EscapeDataString(text), fromCulture, toCulture);

    string html = null;
    try
    {
        WebClient web = new WebClient();

        web.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0");
        web.Headers.Add(HttpRequestHeader.AcceptCharset, "UTF-8");

        web.Encoding = Encoding.UTF8;
        html = web.DownloadString(url);
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
        return null;
    }

    string result = Regex.Match(html, "trans\":(\".*?\"),\"", RegexOptions.IgnoreCase).Groups[1].Value;
    return result;
}

预期产出

{
    "sentences":
    [
        {
            "trans":"जीवन महान है और इस पर और पर और पर चला जाता है जब एक खराब है",
            "orig":"Life is great and one is spoiled when it goes on and on and on",
            "translit":"Jīvana mahāna hai aura isa para aura para aura para calā jātā hai jaba ēka kharāba hai",
            "src_translit":"",
            "backend":0
        }
    ],
    "src":"en",
    "server_time":85
}

这就是我得到的。

“远程服务器返回错误:(503)服务器不可用。”

我该怎么做才能获得该程序的预期输出。

对不起,这不是一个答案(但也许社区可以提供帮助,让这成为一个真正的答案),但我需要在这里发帖,因为在评论中我不能很好地格式化。

我试过你的例子,似乎谷歌认为你试图滥用他们的服务,这是客户发送的:

GET http://translate.google.com/translate_a/t?client=j&text=Life%20is%20great%20and%20one%20is%20spoiled%20when%20it%20goes%20on%20and%20on%20and%20on&hl=en&sl=en&tl=hi HTTP/1.1
Accept-Charset: UTF-8
User-Agent: Mozilla/5.0
Host: translate.google.com
Proxy-Connection: Keep-Alive

Google会将此请求发送至http://ipv4.google.com/sorry/IndexRedirect?continue = http://translate.google.com/translate_a/t%3Fclient%3Dj%26text%3DLife%2520is%2520great%2520and%2520one %2520is%2520spoiled%2520when%2520it%2520goes%2520on%2520and%2520on%2520and%2520on%26hl%3Den%26sl%3Den%26TL%3Dhi&q = CGMSBFgz6X4YkI3frwUiGQDxp4NLo-2RV2k8i7UPzIRYKSuT5usFkUU

在这里,如果从浏览器导航它显示验证码,所以我尝试使用Web浏览器(Firefox)导航程序生成的URL。 这就是它所显示的: 谷歌Captcha

对意大利人抱歉,它说来自PC的异常流量。 一旦您正确地提示验证码,您的浏览器就会为下一个请求保存一个cookie(这样您就不会再次获取验证码),并且您将被重定向到已翻译的句子。

以下是下次导航时浏览器请求的示例:

GET http://translate.google.com/translate_a/t?client=j&text=Life%20is%20great%20and%20one%20is%20spoiled%20when%20it%20goes%20on%20and%20on%20and%20on&hl=en&sl=en&tl=hi HTTP/1.1
Host: translate.google.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Cookie: NID=71=a__xJqNU4C1oQTkLrMCSL4CLdR_nelc5kbjcUwgvJUBILn2SOHrfUeIg-9vWfy6tRHVh9Z4yXT1dpwnnHIXf5i2NLlCuDn-joB1tpYo_9JM4_zQnaaYO7UCsFoFILogS8G4XTt1M8esMgUnG_JzoMWSG81Q-JfGk1_IQsb5gIHyHcKroJeNEUp4bnMkiOvZgj1Sk; SID=DQAAAP8AAADnhNjYLtZUYSPbm-V_62WNnlSj8pUKPRnUfLR-Fp18gYeyWsC93YgLn5yoy0L3FLPb2_yNM7ysBQPCnqJGCy6Or6i2WLHicMaVFr0_0LT4xM2KECq3F6Nczc6V7RO8G5VYnHNLXjZ4ZqVMRTfG3E-Ljrgq_0zg_bhi1DT2CeWoBgBFSVTh_cyMjjYdCRiPpyEFRAtUp_48EKmd62YzJHyPeD-JfXTvVlyacDavPzl4L5yf1KmJ37c-j_Px8dYVKHn5tE_jAKHcFjJ717mY85bjyyUasTKoPc_w9AhnVQXE-v-jBsT4rvbJ3khIqiddjagnQ6LpVCMrRwZ9OwU2uubG; HSID=AX4zDBkEvzB-ZdrnV; APISID=ZMLtLIl8PnW6C6X2/A20GPxC9NiRmY3t1T; _ga=GA1.3.1956353841.1435321193; PREF=ID=1111111111111111:FF=0:LD=it:TM=1436338644:LM=1437143045:V=1:S=me455Y_9_LyG2PFU; GOOGLE_ABUSE_EXEMPTION=ID=52cecb7a44e552cc:TM=1442301156:C=c:IP=88.51.233.126-:S=APGng0tXDRxFvrRNJHu-uk3IRqKVpJAIIQ
Connection: keep-alive

作为证明,如果我将此行添加到C#代码:

web.Headers.Add(HttpRequestHeader.Cookie, "NID=71=a__xJqNU4C1oQTkLrMCSL4CLdR_nelc5kbjcUwgvJUBILn2SOHrfUeIg-9vWfy6tRHVh9Z4yXT1dpwnnHIXf5i2NLlCuDn-joB1tpYo_9JM4_zQnaaYO7UCsFoFILogS8G4XTt1M8esMgUnG_JzoMWSG81Q-JfGk1_IQsb5gIHyHcKroJeNEUp4bnMkiOvZgj1Sk; SID=DQAAAP8AAADnhNjYLtZUYSPbm-V_62WNnlSj8pUKPRnUfLR-Fp18gYeyWsC93YgLn5yoy0L3FLPb2_yNM7ysBQPCnqJGCy6Or6i2WLHicMaVFr0_0LT4xM2KECq3F6Nczc6V7RO8G5VYnHNLXjZ4ZqVMRTfG3E-Ljrgq_0zg_bhi1DT2CeWoBgBFSVTh_cyMjjYdCRiPpyEFRAtUp_48EKmd62YzJHyPeD-JfXTvVlyacDavPzl4L5yf1KmJ37c-j_Px8dYVKHn5tE_jAKHcFjJ717mY85bjyyUasTKoPc_w9AhnVQXE-v-jBsT4rvbJ3khIqiddjagnQ6LpVCMrRwZ9OwU2uubG; HSID=AX4zDBkEvzB-ZdrnV; APISID=ZMLtLIl8PnW6C6X2/A20GPxC9NiRmY3t1T; _ga=GA1.3.1956353841.1435321193; PREF=ID=1111111111111111:FF=0:LD=it:TM=1436338644:LM=1437143045:V=1:S=me455Y_9_LyG2PFU; GOOGLE_ABUSE_EXEMPTION=ID=52cecb7a44e552cc:TM=1442301156:C=c:IP=88.51.233.126-:S=APGng0tXDRxFvrRNJHu-uk3IRqKVpJAIIQ"); //This is the cookie of the request of Firefox

谷歌发送翻译的句子"जीवन महान है और इस पर और पर और पर चला जाता है जब एक खराब है"

是一个似乎有用的项目,它基本上在url中添加了不同的参数。

GoogleTranslator的工作原理是直接调用其在线翻译表单调用的Google翻译API并解析结果。

我一直在尝试使用Google TTS,但它不再起作用了。 谷歌翻译v2不再支持TTS (见这里)

由于您使用的是C#,因此最好在System.Speech.Synthesis中使用speechsynthesis

 public static void TextToSpeech (string utterance)
    {
        SpeechSynthesizer speaker = new SpeechSynthesizer();
        speaker.Speak(utterance);
        return;
    }

希望这能回答你的一些问题。 目前还没有针对验证码的解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM