编程语言
首页 > 编程语言> > javascript – 他们是如何做到这一点的?模态书签和即时抓取?

javascript – 他们是如何做到这一点的?模态书签和即时抓取?

作者:互联网

我希望用户从书签中打开弹出窗口,但页面加载的方式类似于jquery模式 – 这意味着没有丑陋的浏览器边框.

请参阅此处的示例,亚马逊如何做到这一点?

http://www.amazon.co.uk/wishlist/get-button

此外,他们显然是在抓取页面来获取信息,但页面加载几乎是即时的,他们是否缓存用户以某种方式读取的每个页面?他们怎么会实现这个目标呢?我尝试过简单的html-dom,但它远非即时

这是JS Amazon使用的:

javascript:(function(){var w=window,l=w.location,d=w.document,s=d.createElement('script'),e=encodeURIComponent,o='object',n='AUWLBookenGB',u='https://www.amazon.co.uk/wishlist/add',r='readyState',T=setTimeout,a='setAttribute',g=function(){d[r]&&d[r]!='complete'?T(g,200):!w[n]?(s[a]('charset','UTF-8'),s[a]('src',u+'.js?loc='+e(l)+'&b='+n),d.body.appendChild(s),f()):f()},f=function(){!w[n]?T(f,200):w[n].showPopover()};typeof s!=o?l.href=u+'?u='+e(l)+'&t='+e(d.title):g()}())

Beautified并手动反混淆:

javascript:(function() {
    var w = window,
        l = w.location,
        d = w.document,
        s = d.createElement('script'),
        e = encodeURIComponent,
        o = 'object',
        n = 'AUWLBookenGB',
        u = 'https://www.amazon.co.uk/wishlist/add',
        r = 'readyState',
        T = setTimeout,
        a = 'setAttribute',
        g = function() {
            if (d[r] && d[r] != 'complete') {
                T(g, 200);
            } else if(!w[n]) {
                s[a]('charset', 'UTF-8');
                s[a]('src', u + '.js?loc=' + e(l) + '&b=' + n);
                d.body.appendChild(s);
                f();
            } else {
                f();
            }
        },
        f = function() {
            if (!w[n]) {
                T(f, 200);
            } else {
                w[n].showPopover();
            }
    };
    if (typeof s != o) {
        l.href = u + '?u=' + e(l) + '&t=' + e(d.title);
    } else {
        g();
    }
}())

解决方法:

我稍微对代码进行了去混淆,看到问题的帖子.

该脚本从amazon的网站请求脚本,其中包含以下URL:

https://www.amazon.co.uk/wishlist/add.js?loc=<CURRENT URL>&b=AUWLBookenGB

在响应代码(add.js example)内,< table>元素是动态创建和填充的,然后插入页面中.

“魔术”发生在生成脚本的服务器端.注入的JS文件提供所有必要的数据.

标签:jquery,javascript,simple-html-dom
来源: https://codeday.me/bug/20190704/1377166.html