如何使用 Javascript 找出短网址指向的位置

How To Find Out Where the Short URLs Point To with Javascript

我创建了一个短 url,假设 https://my.short.link/foo,它指向 https://my.other.website/bar

如何在浏览器中使用 javascript 方法检索此 url? (我正在使用 angular)

这将取决于 my.short.link 如何在您请求时处理 URL。

  • 类型 1:真正基本的服务可能使用 redirection response(HTTP 302 等)。
  • 类型 2:或者它可能使用一个成功的响应服务于一个带有 <meta http-equiv="refresh" ...> 标签的 HTML 页面。
  • 类型 3:或者它可能使用成功的响应为 HTML 页面提供服务,通过 JavaScript.
  • 进行重定向

浏览器

如果您想在浏览器中执行此操作,您可能能够获取上述服务类型 1 的信息,但不能获取其他服务的信息。

作为 , you could try fetch,令人惊讶的是(对我来说!)如果 该服务通过简单的重定向响应处理请求,您会看到一个新的 URL在响应中,但它不会包含哈希片段:

fetch("https://tsplay.dev/wEv6gN")
.then(r => {
    if (!r.ok) {
        throw new Error(`HTTP error ${r.status}`);
    }
    for (const [key, value] of r.headers) {
        console.log(`${key}: ${value}`);
    }
    console.log(r.url);
})
.catch(console.error);

URL、https://tsplay.dev/wEv6gN 通过 302(“永久移动”)重定向响应重定向到 https://www.typescriptlang.org/play?#code/MYewdgzgLgBAJgQygmBeGB5ARgKwKbBQB0AZgE554BeeAFAN4CwAUDGzBCALZ4BcMARgBMAZgA0LdjAA24AOb96AIgRLeSrEoC+E1u2kBLaPwDaS4EoC6uqSBL8lSm+wRksBqGVcBPfmACu0tLObFAAFgZgchD8AkRCuloAlADcLCxQ3gAOePBICAD6ANZ43mgwJd52MJk51YjIacwsJP5ghAbg8CAA6iBkRbRF-A2FlUkwTHps0niwAG4I0v656KMmRZZNUgD0O0QHLFpAA。在上面的代码中,我们只看到 https://www.typescriptlang.org/play?。但也许这足以满足您的目的。

但这不适用于上面的类型 2 和类型 3。您必须能够读取和解析 HTML,而 Same Origin Policy 将阻止源代码 运行 访问 HTML。您可以尝试在 iframe 中打开它(尽管我怀疑您真的不想 访问 页面,您只想获取它的 URL),但同样的问题也适用:即使 iframe 到达目标位置,由于 SOP,您也无法访问它。

Node.js 或类似

如果你的意思是在 Node.js 或其他一些 non-browser 环境中,那么:

  • 对于 Type 1 服务,您可以执行 HTTP 请求并查看重定向信息。
  • 对于类型 2 服务,您可以执行 HTTP 请求,解析 HTML,然后查找标签。
  • 对于 Type 3,您需要使用无头浏览器(Puppeteer 等)来捕捉它的去向。