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

如何使用Javascript从缩短的URL获取域名?,javascript,regex,url,dns,Javascript,Regex,Url,Dns,假设我有一个要用前端技术阻止的域列表。我想阻止由域托管的任何URL。在我的头脑中,我有以下方法: 正则表达式 string.split(“/”) location.hostname 但是如果URL是一个缩短的URL呢?e、 g.https://goo.gl/lWyZ5B。以上所有方法都将返回不需要的结果:goo.gl 这实际上是我正在计划的Chrome扩展的一部分。因此,如果结果在阻止列表中,Chrome可能会获取缩短的URL,然后重定向到警告页面?了解缩短的URL背后的真正主机的唯一方法是

假设我有一个要用前端技术阻止的域列表。我想阻止由域托管的任何URL。在我的头脑中,我有以下方法:

  • 正则表达式
  • string.split(“/”)
  • location.hostname
但是如果URL是一个缩短的URL呢?e、 g.
https://goo.gl/lWyZ5B
。以上所有方法都将返回不需要的结果:
goo.gl


这实际上是我正在计划的Chrome扩展的一部分。因此,如果结果在阻止列表中,Chrome可能会获取缩短的URL,然后重定向到警告页面?

了解缩短的URL背后的真正主机的唯一方法是实际尝试获取URL,然后查看是否获得302重定向,以及重定向URL是什么

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


另一个选项是,如果链接缩短器是您有API访问权限的已知链接缩短器,那么您可以查询该API以查看给定的缩短链接的快捷方式。例如,bit.ly有这个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);
    }
});

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

要知道缩短的URL背后的真正主机是什么,唯一的方法是实际尝试获取URL,然后查看是否得到302重定向,以及该重定向URL是什么

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


另一个选项是,如果链接缩短器是您有API访问权限的已知链接缩短器,那么您可以查询该API以查看给定的缩短链接的快捷方式。例如,bit.ly有这个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);
    }
});

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

要知道缩短的URL背后的真正主机是什么,唯一的方法是实际尝试获取URL,然后查看是否得到302重定向,以及该重定向URL是什么

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


另一个选项是,如果链接缩短器是您有API访问权限的已知链接缩短器,那么您可以查询该API以查看给定的缩短链接的快捷方式。例如,bit.ly有这个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);
    }
});

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

要知道缩短的URL背后的真正主机是什么,唯一的方法是实际尝试获取URL,然后查看是否得到302重定向,以及该重定向URL是什么

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


另一个选项是,如果链接缩短器是您有API访问权限的已知链接缩短器,那么您可以查询该API以查看给定的缩短链接的快捷方式。例如,bit.ly有这个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);
    }
});

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

似乎您必须执行http调用并查看响应才能完成此操作。

似乎您必须执行http调用并查看响应才能完成此操作。

似乎您必须执行http调用调用并查看响应以完成此操作。

似乎您必须执行http调用并查看响应才能