JS PopUnder 原理研究:初探

安徒生

popunder 技术是用来在用户正在浏览网页时,后台偷偷打开一个窗口并加载广告。

这项技术看似简单,实际上却很复杂,涉及到多浏览器兼容,以及相同浏览器不同版本的实现方式也不一样。

之所以如此,是因为直接给用户弹出窗口会极大地影响用户体验,并且这种技术被广泛地用于各种 malvertising,已经构成了对用户的骚扰。所以基本上各大浏览器都在不断地限制 pop 的方式。到现在,已经不能随意地给用户弹出窗口了。

那么,如何实现呢?

在研究 popunder 的时候查阅了想关资料,下面是部分有用的代码:

https://gist.github.com/cam-g...
https://stackoverflow.com/que...

这些代码都是几年前的,基本上都是当时有用,现在则失效了。
它们的原理包括以下几点:

  1. 调用 window.open 方法打开新窗口
  2. 构造点击事件,触发响应函数,再调用 window.open
  3. 监听全屏点击事件,触发响应函数,顺势调用 window.open

这三者的不同在于,第1、2条方法理论上可以无限地 popunder,而第3条则只能在用户点击了网页的时候再 pop 一个窗口出来。

当然,仅仅如此是不够的,这样弹出来的窗口会遮住用户,极大影响用户体验,用户会立即关闭这个广告,弹了还不如不弹。

如何不打断用户的浏览?

所以真正的弹窗,也就是 popunder,是在后台悄悄地弹出来,等用户看完这个页面并关闭之后,才会看到那个广告页面。

其实现在后台弹窗已经不太可能了,更常用的做法是这样的,用户在浏览A网页,不小心点了一下,A弹出一个B网页,此时主窗口由A切换到了B,然后使用某种奇淫巧技,迅速地,把主窗口切换回A。

这是重点,也是各大浏览器重点关照的地方,在浏览器的早期,是可以用 window.focus() 把当前窗口切换回来的,但后来也不行了。

现状

也就是说,想正儿八经地实现 popunder,在新版的浏览器上已经不可能了,所以这是个难点,一旦实现出来,就可以靠卖服务赚钱了。

现在网上能明确实现这个功能的,都开了公司在卖代码了,分别是这两个:
http://popunderjs.com/
https://getpopunder.com/

价格非常之贵,199 美元/年 起步。如果是广告平台用,那就是 999 美元/年。这么一个小小的功能,就能卖如此之贵,可见其商业价值。

好了,今天先讲这些,下次再讲讲研究 popunder 过程中的逆向和反逆向


接下来是广告时间:
我的简书:http://www.jianshu.com/u/0708...
我的知乎:https://www.zhihu.com/people/...
我的公众号:OutOfRange

有事欢迎骚扰 ~

阅读 3.7k

OutOfRange
有趣的编程
98 声望
3 粉丝
0 条评论
98 声望
3 粉丝
文章目录
宣传栏