html请求谷歌音频跨域问题(谷歌翻译接口)虚拟机ping不通google(下载谷歌音频、下载百度翻译音频)

news2024/9/23 23:33:58

文章目录

    • 调用谷歌翻译接口,尝试了几种方案,都提示跨域不行
      • 第一种(通过js代码获取音频文件的Blob对象,提示跨域了)
        • 代码
        • 结果
      • 第二种(尝试新窗打开音频url,404,估计也是跨域了)
        • 代码
        • 结果
      • 第三种(在ubuntu虚拟机服务上调用接口下载google音频,虚拟机没开代理,暂时没法搞,但应该是可行的,因为windows上可以用curl下)
    • 改成百度翻译接口
      • 使用上面的方法1(一样,也跨域了)
      • 使用上面的方法三(搞不定,貌似百度翻译的音频接口做了限制)
    • 参考文章
      • [为什么 ping 不通 google.com](https://www.amjun.com/205.html)

调用谷歌翻译接口,尝试了几种方案,都提示跨域不行

第一种(通过js代码获取音频文件的Blob对象,提示跨域了)

代码

<body>
    <h3 style="display:inline;">{{ element_data['elements'][current_element_index]['en'] }}</h3>
    <!-- 调用谷歌接口播放音频 -->
    <button onclick="playAudio()">播放音频</button>
</body>

<script>
    // 调用谷歌接口播放音频(提示cross origin了,可能是谷歌的限制,不能从同一个页面打开,尝试新窗打开)
    function get_audio_url(word) {
        var url = "https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=tw-ob&q=" + word;
        return fetch(url)
            .then(response => response.blob())
            .then(blob => URL.createObjectURL(blob));
    }

    function playAudio() {
        var word = "{{ element_data['elements'][current_element_index]['en'] }}";  // 获取要播放的单词
        get_audio_url(word)
            .then(audioUrl => {
                var audio = new Audio(audioUrl);
                audio.play();
            })
            .catch(error => {
                console.error("播放音频时出错:", error);
            });
    }
</script>

上述代码中,get_audio_url函数使用fetch来获取音频文件的Blob对象,并使用URL.createObjectURL来创建音频文件的URL。然后,playAudio函数会在按钮点击时调用get_audio_url函数来获取音频URL,并使用new Audio创建一个新的音频对象并播放音频。

结果

不行,貌似提示跨域,估计是谷歌那边做了限制,只允许在谷歌翻译的官方网站上使用,而不允许从其他域名直接访问:

在这里插入图片描述
在这里插入图片描述

第二种(尝试新窗打开音频url,404,估计也是跨域了)

代码

<body>
    <h3 style="display:inline;">{{ element_data['elements'][current_element_index]['en'] }}</h3>
    <!-- 调用谷歌接口播放音频 -->
    <button onclick="playAudio()">播放音频</button>
</body>

<script>
    // 尝试新窗打开(跳转到新窗提示404了(url输入栏重新Enter下就好了),估计还是跨域问题)
    function playAudio() {
        var word = "{{ element_data['elements'][current_element_index]['en'] }}";  // 获取要播放的单词
        var audioUrl = "https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=tw-ob&q=" + encodeURIComponent(word);
        window.open(audioUrl, "_blank");
    }
</script>

上述代码中,playAudio函数会在按钮点击时获取要播放的单词,并构建谷歌音频的URL。然后,使用window.open函数打开一个新的网页,并将音频URL作为参数传递给window.open函数。这样,新的网页将会打开并播放谷歌音频。

结果

点过去提示404了,但是在url输出窗口重新Enter一下就能访问了:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三种(在ubuntu虚拟机服务上调用接口下载google音频,虚拟机没开代理,暂时没法搞,但应该是可行的,因为windows上可以用curl下)

我本来想先用curl在ubuntu虚拟机上请求一下的,奈何还不知道怎么给虚拟机设置科学上网,一下就卡住了:

curl -o audio.mp3 "https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=tw-ob&q=feather"

在这里插入图片描述

然后我只能在windows上测试,我先从curl官网下来curl工具:

https://curl.se/windows/

在这里插入图片描述

下好解压后直接在bin目录右键打开控制台,输入curl -o audio.mp3 "https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=tw-ob&q=feather"

在这里插入图片描述
在这里插入图片描述

然后音频就被下载下来了:

在这里插入图片描述

说明谷歌翻译只是做了跨域限制而已,不用浏览器跨域请求,还是能直接获取到音频的。

但是问题还是那个,我的ubuntu虚拟机没有设置代理,没法直接访问谷歌,我还是改成百度翻译的接口试试吧。

改成百度翻译接口

使用上面的方法1(一样,也跨域了)

<body>
    <h3 style="display:inline;">{{ element_data['elements'][current_element_index]['en'] }}</h3>
    <!-- 调用谷歌接口播放音频 -->
    <button onclick="playAudio()">播放音频</button>
</body>

<script>
    function get_audio_url(word) {
        var url = "https://fanyi.baidu.com/gettts?lan=en&text=" + encodeURIComponent(word) + "&spd=3&source=web";
        return fetch(url)
            .then(response => response.blob())
            .then(blob => URL.createObjectURL(blob));
    }

    function playAudio() {
        var word = "{{ element_data['elements'][current_element_index]['en'] }}";  // 获取要播放的单词
        get_audio_url(word)
            .then(audioUrl => {
                var audio = new Audio(audioUrl);
                audio.play();
            })
            .catch(error => {
                console.error("播放音频时出错:", error);
            });
    }
</script>

使用上面的方法三(搞不定,貌似百度翻译的音频接口做了限制)

浏览器敲链接亲测可用,返回的是.ts的音频:

https://fanyi.baidu.com/gettts?lan=en&text=feather&spd=3&source=web

但是用代码下载。。。

我靠,搞了半天都没法下下来,一点数据都拿不到,明天问问x工z工咋弄

参考文章

为什么 ping 不通 google.com

我这边用clash配置了虚拟机代理服务后,虚拟机上也可以用curl下载谷歌音频了。

在这里插入图片描述

curl -x 127.0.0.1:7890 -o audio.mp3 "https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=tw-ob&q=feather"

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/817932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

StarRocks Friends 广州站精彩回顾

上周六&#xff0c;StarRocks & Friends 活动在羊城广州成功举行&#xff0c;社区的小伙伴齐聚一堂&#xff0c;共同探讨了 StarRocks 在业界的应用实践和湖仓一体等热门话题。 本文总结了技术交流活动的关键内容和视频资料&#xff0c;感谢社区每一位小伙伴的支持和参与&…

如何提高接口测试覆盖率?

接口测试是测试系统组件间接口的一种测试。 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 接口测试该如何提高测试的覆盖率呢&#…

PCL点云处理之最小二乘空间直线拟合(3D) (二百零二)

PCL点云处理之最小二乘空间直线拟合(3D) (二百零二) 一、算法简介二、实现代码三、效果展示一、算法简介 对于空间中的这样一组点:大致呈直线分布,散乱分布在直线左右, 我们可采用最小二乘方法拟合直线,更进一步地,可以通过点到直线的投影,最终得到一组严格呈直线分布…

软件测试一周面试十家公司,分享面试经历

从开始面试讲起&#xff0c;公司规模我分成5类&#xff1a;创业公司0-20人&#xff0c;小型公司20-40人&#xff0c;中小型50-99&#xff0c;中型公司100-499即将上市的那种&#xff0c;已上市公司100-499。 创业公司 第一个面试的那家创业公司特别坑&#xff0c;开始面试&am…

4年测试“我“该何去何从?测试还是测试开发?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 4年测试&#xff…

秋招备战笔试Day2

目录 单选 1.A 派生出子类 B &#xff0c; B 派生出子类 C &#xff0c;并且在 java 源代码有如下声明&#xff1a; 2.下面代码将输出什么内容&#xff1a;&#xff08;&#xff09; 3.阅读如下代码。 请问&#xff0c;对语句行 test.hello(). 描述正确的有&#xff08;&…

vlan access, trunk, hybrid (tagged/untagged) 笔记

vlan 接口和配置 PVID&#xff08;port vlan ID&#xff09; 定义 pvid 主要目的&#xff1a; 当交换机接口收到没有 vlan tag 标签的包时&#xff0c;接口会将定义的 pvid 作为当前包的 vlan id。当对映 pvid vlan 的包&#xff0c;通过当前交换机接口发出时&#xff0c;接…

ADSelfService Plus:保护密码安全的最佳解决方案

密码安全是当今数字时代中至关重要的话题。随着互联网和信息技术的迅速发展&#xff0c;我们的生活变得越来越数字化&#xff0c;密码已成为我们生活中不可或缺的一部分。然而&#xff0c;随着各种网络威胁和黑客攻击不断增加&#xff0c;保护我们的密码变得越来越重要。 密码安…

测试工程师刚入职如何快速熟悉需求并输出测试用例?

刚入职第一天&#xff0c;早上办完入职&#xff0c;下午就就分配了测试任务&#xff0c;2个模块13条短信验证&#xff0c;2天内输出测试用例&#xff08;xmind输出功能点&#xff0c;excel书写业务流&#xff09;。测试负责人给我们快速讲了一下业务&#xff0c;在这过程中大概…

openssl/bn.h: No such file or directory

报错截图 解决方法 ubuntu apt install libssl-dev -y centos yum install openssl-devel -y

echarts实现多层环图(复制粘贴即可)

data里面参数配置&#xff1a; // 多重环图optionCircle: {tooltip: {show: false,trigger: item,formatter: "{a} : {c} ({d}%)"},color: [#3AB1EB, #D48B6A, #5B41C8, #FE7E02],legend: {orient: horizontal,itemWidth: 30, // 图例标记的图形宽度。itemHeight…

从产品和运营的角度聊聊,如何有效吸引与引导用户注册转化?

从产品和运营的角度聊聊 如何有效吸引与引导用户注册转化&#xff1f; 正文共&#xff1a;4360字 23图 预计阅读时间&#xff1a;11分钟 1 如何进行改版&#xff0c;找找思路&#xff1f; 前段时间在做公司的网站改版策划&#xff0c;此前接触的都是一些ToB的解决方案提供商…

Jmeter脚本录制:抓取IOS手机请求包

现在移动端的项目越来越多&#xff0c;今天给大家介绍一下&#xff0c;在IOS下Jmeter如何抓包。 1、电脑连上wifi 2、Jmeter中配置“HTTP代理服务器” 1)启动Jmeter&#xff1b;2)“测试计划”中添加“线程组”&#xff1b;3)“测试计划”中添加“HTTP代理服务器”&#xff…

【算法很美】多维数组和字符串篇打卡(第三天)

文章目录 子矩阵的最大累加和整体代码 矩阵运算-乘法整体代码 检测字符串是否有重复字符整体代码 反转字符串整体代码 变形词整体代码 替换字符串中的空格整体代码 子矩阵的最大累加和 整体代码 package 每日算法学习打卡.算法打卡.七月份.七月三十一号;import java.util.Arra…

nginx配置访问本机文件夹里的静态资源404

在nginx中配置了location访问一直404 location /web/user/ { alias /home/user/wlds/user/;index index.html;try_files $uri $uri/ /index.html 404;} 看日志发现Permission denied 因为是直接使用的yum安装的二进制包nginx&#xff0c;nginx.conf文件首行是user nginx;所以没…

【DRAM存储器三】内存颗粒内部结构

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考资料&#xff1a;《镁光DDR4数据手册》 目录 DDR4颗粒的内部结构 …

[SSM]Spring6整合JUnit5与集成MyBatis3.5

目录 十七、Spring6整合JUnit5 17.1Spring对JUnit4的支持 17.2Spring对JUnit5的支持 十八、Spring6集成MyBatis3.5 18.1实现步骤 18.2具体实现 18.3spring配置文件的import 十七、Spring6整合JUnit5 17.1Spring对JUnit4的支持 准备工作&#xff1a; <dependencies&…

python——案例四:判断字符串中的元素组成

案例四&#xff1a;判断字符串中的元素组成str"Hello World! 666" print(str.isalnum()) #判读所有的字符都是数字或者是字母 print(str.isalpha()) #判读所有的字符都是字母 print(str.isdigit()) #判读所有的字符都是数字 print(str.islower()) #判读所有的字符都是…

从 0 到 1!得物如何打造通用大模型训练和推理平台

1.背景 近期&#xff0c;GPT 大模型的发布给自然语言处理&#xff08;NLP&#xff09;领域带来了令人震撼的体验。随着这一事件的发生&#xff0c;一系列开源大模型也迅速崛起。依据一些评估机构的评估&#xff0c;这些开源模型大模型的表现也相当不错。一些大模型的评测情况可…