如何区分自动重定向和用户预期的重定向(单击)

时间:2017-04-11 13:17:37

标签: google-chrome redirect google-chrome-extension

我正在使用Chrome扩展程序,试图保护用户不被重定向到恶意网页。

当用户访问阴影域时,例如&#34; fa ec book.com&#34;他将被重定向到另一页,但这不是他的意图。当用户打算被重定向到另一个页面时,这主要是由于点击(例如,点击超链接:<a href="http://foobar.com">

我如何区分这两种类型?

目前我正在使用我的扩展程序中的代码检查重定向的详细信息,但我找不到任何可以区分的内容:

chrome.webRequest.onBeforeRedirect.addListener(
  function(details) {
    console.log(details);
  },
  {urls: ['<all_urls>']});

1 个答案:

答案 0 :(得分:2)

除非Chrome专门提供此信息,否则您无法直接检测请求是由于单击超链接或在浏览器中键入URL而导致的重定向或直接请求的结果。两者都是标准浏览器请求。 (您可以检查HTTP引用程序是否有直接链接,也许可以查看链接的来源 - 但这很可能不可靠。)

IMO您需要在实际发生之前检查重定向。换句话说,通过扫描先前的响应。但是可能有3种重定向:

  1. HTTP重定向:检查3xx状态代码和Location: HTTP响应标头。
  2. META刷新:扫描此标记的HTML head部分。 (虽然可以在JS后期加入?)
  3. JavaScript重定向:除非您以某种方式首先在沙箱中处理JavaScript,否则可能很难发现?