没有收到来自 translate.google.com 的 https 请求的翻译文本

Receiving no translated text from an https request to translate.google.com

现在我尝试通过 Roblox Studio 使用 Https 服务通过向 translate.google.com link 发送请求来像翻译一样,问题是我在 return 中得到的任何东西都没有给我翻译的文本。

我将收到的内容放入 google 文档中,并尝试通过按 ctrl + f 来找到它,但运气不好,我唯一能找到的是应该是的文本翻译。这是代码,以防您想自己尝试,但我警告您 运行 这可能会使 Roblox 暂时无响应,因为他们回馈了很多信息。

不知道是不是我做错了什么,请大家帮忙!我只是想让它给我 'Hello world' 法语的内容,也没有错误消息。

local http = game:GetService("HttpService")

local Message = "Hello world"

http:UrlEncode(Message) -- 'Hello world' -> 'Hello%20world'

local response = http:RequestAsync(
    {
        Url = "https://translate.google.com/?sl=en&tl=fr&text=" .. Message .. "!&op=translate";
        Method = "GET"
    }
    )

if response.Success then
    print(response.StatusMessage)
    print(response.StatusCode)
    print(response.Body)
    --print(response.Headers)
else
    print("The request failed: ", response.StatusCode, response.StatusMessage)
end

您的问题可能在于您如何 URL 对字符串进行编码。

http:UrlEncode(Message)

HttpService.UrlEncode returns 编码后的字符串作为新值。它不会改变现有值。所以你只需要存储函数调用的结果。

Message = http:UrlEncode(Message)

编辑:正如@Mohamed AMAZIRH 指出的那样,点击这个 URL 只会 return HTML.

在您的浏览器上访问时(例如)url https://translate.google.com/?sl=en&tl=fr&text=Hello%20World!&op=translate,您看到的翻译是使用浏览器在加载页面后执行的 Javascript 代码获取的。

浏览器检索页面的 html 正文(就像您在代码中所做的那样),然后在 html 正文中执行 javascript 检索翻译并更新页。

除非你使用像 Selenium 这样的浏览器驱动程序,否则我看不出你如何以简单的方式做你想做的事。

另外,我确信 Google 有一些针对自动机器人的保护措施,因此在请求过多后,您的程序可能会被 ReCaptcha 阻止。

翻译文本的正确方法是使用 Microsoft 的 Google Cloud Translate API which I think is free up to 500k requests per month. There is also Azure Translator,它也有免费套餐。