【发布时间】:2012-02-01 10:39:40
【问题描述】:
我编写了一个脚本,它检测来自几个搜索引擎的引用 URL,然后将此值(不是 mc_u20 变量)传递到服务器以在某处使用。除了一个大问题之外,该脚本就像一种享受,它根本不会跟踪 Google 搜索结果。因此,来自 Google 的任何结果都不会注册。这是脚本:
var mc_searchProviders = {"search_google":"google.co","search_bing":"bing.com","search_msn":"search.msn","search_yahoo":"search.yahoo","search_mywebsearch":"mywebsearch.com","search_aol":"search.aol.co", "search_baidu":"baidu.co","search_yandex":"yandex.com"};
var mc_socialNetworks = {"social_facebook":"facebook.co","social_twitter":"twitter.co","social_google":"plus.google."};
var mc_pageURL = window.location +'';
var mc_refURL = document.referrer +'';
function mc_excludeList() {
if (mc_refURL.search('some URL') != -1) {
return false; //exclude some URL
}
if (mc_refURL.search('mail.google.') != -1) {
return false; //exclude Gmail
}
if (mc_refURL.search(mc_paidSearch) != -1) {
return false; //exclude paidsearch
}
else {
mc_checkURL();
}
}
mc_excludeList();
function mc_checkURL() {
var mc_urlLists = [mc_searchProviders, mc_socialNetworks],
i,mc_u20;
for (i = 0; i < mc_urlLists.length; i++) {
for (mc_u20 in mc_urlLists[i]) {
if(!mc_urlLists[i].hasOwnProperty(mc_u20))
continue;
if (mc_refURL.search(mc_urlLists[i][mc_u20]) != -1) {
mc_trackerReport(mc_u20);
return false;
}
else if ((mc_refURL == '') && (mc_directTracking === true)){
mc_u20 = "direct_traffic";
mc_trackerReport(mc_u20);
return false;
}
}
}
}
最烦人的是,我已经在我的本地机器上测试了这个(通过使用实际的谷歌搜索 URL 填充 mc_refURL,它就像一个魅力。我还认为也许在搜索第一个 @ 时987654324@ 对象它以某种方式跳过了第一个实例,所以我添加了一个空白。但这仍然不起作用。更烦人的是,对于每个其他搜索引擎,mc_u20 变量似乎填充了我需要的内容.
这让我发疯了。谁能看到这里有什么问题?我可能还会提到我已登录 Google,但我看不出这会如何影响脚本,因为他们的博文(11 月)说他们正在过滤关键字,而不是阻止通过引用 URL。
【问题讨论】:
-
请注意,您永远不能依赖已设置的引荐来源网址 - 它也可以从标题中主动剥离
-
是的,我知道这一点,但目前这是我能做的最好的。但是这个脚本在 2 周前还在工作(也适用于谷歌)。它不可能是我放置此脚本的网站,否则它会为所有其他搜索引擎剥离标题,对吗?
-
@mplungjan 我已经在 FF 中尝试过这个(Ctrl+Shift+K),它肯定会传递引用 URL。我正在做的只是搜索
google.co,它肯定在里面
标签: javascript url referrer