如何使用Javascript从缩短的URL获取域名?
假设我有一个要用前端技术阻止的域列表。我想阻止由域托管的任何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背后的真正主机的唯一方法是
- 正则表达式
string.split(“/”)
location.hostname
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调用并查看响应才能