popunder 技术是用来在用户正在浏览网页时,后台偷偷打开一个窗口并加载广告。
这项技术看似简单,实际上却很复杂,涉及到多浏览器兼容,以及相同浏览器不同版本的实现方式也不一样。
之所以如此,是因为直接给用户弹出窗口会极大地影响用户体验,并且这种技术被广泛地用于各种 malvertising,已经构成了对用户的骚扰。所以基本上各大浏览器都在不断地限制 pop 的方式。到现在,已经不能随意地给用户弹出窗口了。
那么,如何实现呢?
在研究 popunder 的时候查阅了想关资料,下面是部分有用的代码:
https://gist.github.com/cam-gists/2855187
https://stackoverflow.com/questions/4261784/making-a-window-pop-under-in-chrome
这些代码都是几年前的,基本上都是当时有用,现在则失效了。
它们的原理包括以下几点:
- 调用 window.open 方法打开新窗口
- 构造点击事件,触发响应函数,再调用 window.open
- 监听全屏点击事件,触发响应函数,顺势调用 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/0708f50bcf26
我的知乎:https://www.zhihu.com/people/never-younger/answers
我的公众号:OutOfRange
有事欢迎骚扰 ~