2

我正在为 Facebook 开发一个隐藏活动的扩展程序(例如 20 分钟前最后一次活动)。因此,我试图重定向表单的请求

https://0-p-06-ash2.channel.facebook.com/pull?idle=2&state=active& …</p>

对表格的要求

https://0-p-06-ash2.channel.facebook.com/pull?idle=50000& …</p>

使用 webRequest API,onBeforeRequest。现在,当我在自己制作的本地测试页面上尝试我的重定向技术时,我发送一个 ajax 请求并随后使用插件重定向它,它完美地工作。网络检查器将第一个请求显示为待处理,然后添加了一个新请求。ajax 调用接收到的数据是正确的,即第二个请求应该返回什么。

但是,当插件在 Facebook 上运行时,第一个请求不会显示为待处理,而是会被取消,并且根本不会发送第二个请求。

这是我使用的代码(大约):

var callback = function(details){

    var ajaxURL = details.url;

    if(ajaxURL.indexOf('pull?channel') > -1){ // find activity log request

        var newURL = ajaxURL.replace('&state=active', '').replace(/idle\=[0-9]{0,}/gi, 'idle=50000');

        return {redirectUrl: newURL};

    }

    return {cancel: false};

}

filter = {urls: ["<all_urls>"]};

chrome.webRequest.onBeforeRequest.addListener(callback, filter, ["blocking"]);

在我看来,Facebook 在实际发送请求之前找到了一种检测重定向的方法,但根据Stackoverflow 上的这个问题,这不应该是可能的。

那么他们是如何做到的,我该如何规避呢?提前致谢。

4

0 回答 0