gpt4 book ai didi

javascript - 如何使用 Javascript 从缩短的 URL 中获取域名?

转载 作者:行者123 更新时间:2023-11-28 19:14:44 26 4
gpt4 key购买 nike

假设我有一个想要使用前端技术阻止的域列表。我想阻止该域托管的任何 URL。我有以下方法:

  • 正则表达式
  • string.split("/")
  • 位置.主机名

但是如果 URL 是缩短的怎么办?例如https://goo.gl/lWyZ5B。所有上述方法都会返回不期望的结果:goo.gl

这实际上是我正在计划的 Chrome 扩展的一部分。那么也许 Chrome 可以获取缩短的 URL,然后如果结果位于阻止列表中,则重定向到警告页面?

最佳答案

了解缩短 URL 背后的真实主机的唯一方法是实际尝试获取该 URL,然后查看是否收到 302 重定向并查看该重定向 URL 是什么。

由于您通常无法从浏览器 JavaScript 中加载跨源 URL,因此您可能需要一个服务器来为您执行此操作并将结果返回给您。

<小时/>

另一种选择是,如果您有 API 访问权限的已知链接缩短器,则您可以查询该 API 以查看给定缩短链接的快捷方式。例如,bit.ly 有这个 api http://dev.bitly.com/data_apis.html 。该 API 通常允许跨源访问,因此您可以从浏览器访问它。

由于您无法自信地通过 API 访问所有可能的链接缩短器,因此该策略实际上仅适用于您准备的特定链接缩短器。任何链接缩短程序的通用解决方案都需要使用服务器直接访问 URL 以获得重定向。

<小时/>

例如,这是一个简单的 node.js 程序,它获取 URL 并检查是否返回重定向响应,如果返回则获取重定向 URL。

var request = require("request");

request({url: "https://goo.gl/lWyZ5B", followRedirect: false}, function(error, response, body) {
console.log(response.statusCode);
if (response.statusCode >= 300 && response.statusCode < 400) {
console.log(response.headers.location);
}
});

这会生成以下输出:

301
https://www.youtube.com/watch?v=ZrU_tt4R3xY

这可以封装在服务器中,该服务器将 URL 作为请求并返回结果 URL。

关于javascript - 如何使用 Javascript 从缩短的 URL 中获取域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com