2017-04-11 93 views
1

我正在开发一个Chrome扩展,尝试保护用户不会被重定向到恶意网页。如何区分用户重定向自动重定向(单击)

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

如何区分这两种类型?

目前我正在检查使用此代码从我的扩展重定向的细节,但我无法找到任何东西来区分一个从其他:除非专门铬使得提供这些信息

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

[只有当用户更改URL时如何触发事件]可能重复(http://stackoverflow.com/questions/42132733/how-to-trigger-an-event-only-when- (用户更改网址) – Makyen

+0

相关:[仅当用户单击链接打开时防止初始webRequest重定向新选项卡/窗口](http://stackoverflow.com/q/41131300) – Makyen

+0

@Makyen您的第一个链接看起来非常有趣和有帮助。 – Stanko

回答

2

,然后您无法直接检测某个请求是由于重定向还是由于单击超链接或在浏览器中输入URL而导致的直接请求的结果。两者都是标准浏览器请求。 (您可以潜在地检查HTTP引用的直接链接,也许看到的链接来源 - 但这可能是不可靠的。)

IMO你需要它实际发生之前检查重定向。换句话说,通过扫描前一个响应。但可能有3种重定向:

  1. HTTP重定向:检查3xx状态码和Location: HTTP响应标头。
  2. META更新:请扫描该标签的HTML head部分。 (尽管它可以在JS后期加入)
  3. JavaScript重定向:除非您先以某种方式在沙盒中处理JavaScript,否则很难找到它。