Javascript 什么是 CavalryLogger,我需要它吗?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4188605/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
What is CavalryLogger and do I need it?
提问by Andyh
I'm doing some optimisation on a site Ive recently taken over. I've found a script I don't recognise: http://static.ak.fbcdn.net/rsrc.php/zo/r/V95Lkt_uLNB.js
我正在对我最近接管的网站进行一些优化。我发现了一个我不认识的脚本:http: //static.ak.fbcdn.net/rsrc.php/zo/r/V95Lkt_uLNB.js
It could be a facebook thing, and there's some key logging going on (that Im not too keen on)
这可能是 Facebook 的事情,并且有一些关键的日志记录(我不太热衷)
It is without a doubt the largest file being requested on a page load (87kb) so if I can do without it, it'll really speed up the page load.
毫无疑问,它是页面加载时请求的最大文件 (87kb),所以如果我可以不用它,它真的会加快页面加载速度。
Does anyone know:
A) What it is
B) What it's for
C) What it does
D) Can I do without it
有谁知道:
A)它是什么
B)它的用途
C)它做什么
D)没有它我能做什么
回答by onteria_
Okay so I had a look over the beautified version of this minified code and have noted the following:
好的,所以我查看了此缩小代码的美化版本,并注意到以下几点:
By itself these are a bunch of utility functions.
这些本身就是一堆实用函数。
CavalryLogger doesn't do anything with this file by itself because it doesn't exist, nor is it defined.
CavalryLogger 本身不会对这个文件做任何事情,因为它不存在,也没有定义。
The code in question regarding key binding:
有关键绑定的相关代码:
function KeyEventController() {
copy_properties(this, {
handlers: {}
});
document.onkeyup = this.onkeyevent.bind(this, 'onkeyup');
document.onkeydown = this.onkeyevent.bind(this, 'onkeydown');
document.onkeypress = this.onkeyevent.bind(this, 'onkeypress');
}
copy_properties(KeyEventController, {
instance: null,
getInstance: function () {
return KeyEventController.instance || (KeyEventController.instance = new KeyEventController());
},
defaultFilter: function (event, a) {
event = $E(event);
return KeyEventController.filterEventTypes(event, a) && KeyEventController.filterEventTargets(event, a) && KeyEventController.filterEventModifiers(event, a);
},
filterEventTypes: function (event, a) {
if (a === 'onkeydown') return true;
return false;
},
filterEventTargets: function (event, b) {
var a = $E(event).getTarget();
if (DOM.isNode(a, ['input', 'select', 'textarea', 'object', 'embed'])) if (a.type != 'checkbox' && a.type != 'radio' && a.type != 'submit') return false;
return a.getAttribute('contentEditable') != 'true';
},
filterEventModifiers: function (event, a) {
if (event.ctrlKey || event.altKey || event.metaKey || event.repeat) return false;
return true;
},
registerKey: function (f, a, d, g) {
if (d === undefined) d = KeyEventController.defaultFilter;
var b = KeyEventController.getInstance();
var c = b.mapKey(f);
if (is_empty(b.handlers)) onleaveRegister(b.resetHandlers.bind(b));
for (var e = 0; e < c.length; e++) {
f = c[e];
if (!b.handlers[f] || g) b.handlers[f] = [];
b.handlers[f].push({
callback: a,
filter: d
});
}
},
keyCodeMap: {
'[': [219],
']': [221],
'`': [192],
LEFT: [KEYS.LEFT, 63234],
RIGHT: [KEYS.RIGHT, 63235],
RETURN: [KEYS.RETURN],
TAB: [KEYS.TAB],
DOWN: [KEYS.DOWN, 63233],
UP: [KEYS.UP, 63232],
ESCAPE: [KEYS.ESC],
BACKSPACE: [KEYS.BACKSPACE],
DELETE: [KEYS.DELETE]
}
});
copy_properties(KeyEventController.prototype, {
mapKey: function (a) {
if (typeof (a) == 'number') return [48 + a, 96 + a];
if (KeyEventController.keyCodeMap[a.toUpperCase()]) return KeyEventController.keyCodeMap[a.toUpperCase()];
var b = a.toUpperCase().charCodeAt(0);
return [b];
},
onkeyevent: function (i, c) {
c = $E(c);
var d = null;
var g = this.handlers[c.keyCode];
var b, f, a;
if (g) for (var h = 0; h < g.length; h++) {
b = g[h].callback;
f = g[h].filter;
try {
if (!f || f(c, i)) {
var node = null;
if (window.Parent && Parent.byTag && c.getTarget) node = Parent.byTag(c.getTarget(), 'a');
user_action(node, 'key', c);
a = b(c, i);
if (a === false) return Event.kill(c);
}
} catch (e) {}
}
return true;
},
resetHandlers: function () {
this.handlers = {};
}
});
This code lets you bind keys to callbacks, and includes more human readable names for common keys. Take for example the usage here:
此代码可让您将键绑定到回调,并为常用键包含更多人类可读的名称。以这里的用法为例:
KeyEventController.registerKey('ESCAPE', Dialog._handleEscapeKey, a);
The ESCAPE key is registered to make Dialogs go away. handlers
is also empty by default, so nothing is going to happen until you use registerKey
or append to it manually. Note that this is the only instance of registerKey
being called.
注册 ESCAPE 键以使对话框消失。handlers
默认情况下也是空的,因此在您registerKey
手动使用或附加到它之前不会发生任何事情。请注意,这是registerKey
被调用的唯一实例。
It also has a lot of AJAX utility functions. Can't really send anything to Facebook from your domain anyways because of same origin policy (unless you modified security permissions, but then that's your fault). Same thing with the cookies set.
它还具有许多 AJAX 实用程序功能。由于同源策略,无论如何都无法真正从您的域向 Facebook 发送任何内容(除非您修改了安全权限,但那是您的错)。与 cookie 集相同。
There's also a history manger, but it uses an iFrame so it won't be able to read it from your domain anyways.
还有一个历史管理器,但它使用 iFrame,因此无论如何它都无法从您的域中读取它。
Finally the like button code I found is an iFrame, so it wouldn't need JS includes unless you were using javascript to create the iFrame or something.
最后,我发现的类似按钮代码是一个 iFrame,所以它不需要 JS 包含,除非您使用 javascript 创建 iFrame 或其他东西。
With that in mind I don't see the need for you to include all this.
考虑到这一点,我认为您不需要包含所有这些内容。
回答by mwotton
It looks like this is directly connected to having the "Like this" functionality on a page. The iframe you use to include the 'Like' button seems to come with a couple of 'bonus' scripts.
看起来这与页面上的“喜欢这个”功能直接相关。您用来包含“喜欢”按钮的 iframe 似乎带有几个“奖励”脚本。
If you ask me, this is another good reason to NOT have Facebook integrated, it appears to be logging keypresses, and that is not cool.
如果你问我,这是不集成 Facebook 的另一个很好的理由,它似乎记录按键,这并不酷。
回答by Filipe
A quick google search doesn't provide alot of answers - it's some sort of event tracking script for Facebook, and I saw a tweet and a couple of forum posts where people mentioned disabling it and gaining a speed boost - I thinkyou can safely get rid of it, atleast it's worth giving it a try.
谷歌快速搜索并没有提供很多答案——它是 Facebook 的某种事件跟踪脚本,我看到一条推文和几个论坛帖子,人们提到禁用它并获得速度提升——我认为你可以安全地得到摆脱它,至少值得一试。
回答by Guard
This is definitely from Facebook - one of many supporting files for FBML / API / etc.
这绝对是来自 Facebook - FBML / API / 等的众多支持文件之一。
If you are not using any FB features in your project, simply remove this file.
如果您没有在项目中使用任何 FB 功能,只需删除此文件。
If you are using any FB features (like 'Like' button), you shouldn't use this file (or any other files with cryptic names) directly either. You should instead
如果您正在使用任何 FB 功能(如“喜欢”按钮),您也不应该直接使用此文件(或任何其他具有神秘名称的文件)。你应该改为
1) create empty <div id="fb-root"></div>
somewhere at the end f your page
1)<div id="fb-root"></div>
在页面末尾的某处创建空白
2) include http://connect.facebook.net/en_US/all.jsscript in your page
2)在您的页面中包含http://connect.facebook.net/en_US/all.js脚本
3) follow further instructions from http://developers.facebook.com/
3) 按照http://developers.facebook.com/ 的进一步说明进行操作
回答by supert3d
When the IFRAME is loaded it calls the following URI:
加载 IFRAME 时,它会调用以下 URI:
https://www.facebook.com/plugins/like.php?api_key=[your_api_key]&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D27%23cb%3Df39f390d40f7332%26domain%3D[your_TLD]%26origin%3Dhttp%253A%252F%252F[your_TLD]%252Ff72f1f9bea899e%26relation%3Dparent.parent&colorscheme=light&extended_social_context=false&href=[your_share_URI]&layout=button_count&locale=en_US&node_type=link&sdk=joey&send=false&show_faces=false&width=100
Within the script tags of this page are the following calls.
在此页面的脚本标记中包含以下调用。
PluginAsyncLoader.load("**https:\/\/fbstatic-a.akamaihd.net\/rsrc.php\/v2\/yq\/r\/CNRdIwfy3yI.js**");
PluginAsyncLoader.ondemandjs = "**https:\/\/fbstatic-a.akamaihd.net\/rsrc.php\/v2\/yH\/r\/muz85bheueJ.js**";
回答by Don
I found "calverly logger" in a file that I did not download but I saw it download right in front of me when I closed Thunderbird (was running Firefox behind it and it showed up there as a file downloading) so went to check what it was.
我在一个我没有下载的文件中发现了“calverly logger”,但是当我关闭 Thunderbird 时我看到它在我面前下载(在它后面运行 Firefox 并且它在那里显示为文件下载)所以去检查它曾是。
The file was called: "See All.html" which I found odd and worrying.
该文件名为:“See All.html”,我觉得这很奇怪而且令人担忧。
the head of the file contains the following code indicating it is a Facebook function... The Calvery Logger is mentioned near the bottom of the file (not shown here). I have stripped out the html < near the head of the file so that you can see the code... Not sure it will help but look forward to any insights...
该文件的头部包含以下代码,表明它是一个 Facebook 函数......文件底部附近提到了 Calvery Logger(此处未显示)。我已经去掉了文件头部附近的 html < 以便你可以看到代码......不确定它会有所帮助,但期待任何见解......
// !DOCTYPE html
html lang="en" id="facebook" class="no_js"
head
meta charset="utf-8" />
meta name="referrer" content="origin-when-crossorigin" id="meta_referrer" />
script> window._cstart=+new Date();</script><script>function envFlush(a) {function b(c){for(var d in a)c[d]=a[d];}if(window.requireLazy){window.requireLazy(['Env'],b);}else{window.Env=window.Env||{};b(window.Env);}}envFlush({"ajaxpipe_token":"AXiYOZarFarwOff3","lhsh":"AAQFK_mp-","khsh":"0`sj`e`rm`s-0fdu^gshdoer-0gc^eurf-3gc^eurf;1;enbtldou;fduDmdldourCxO`ld-2YLMIuuqSdptdru;qsnunuxqd;rdoe-0unjdojnx-0unjdojnx0-0gdubi^rdbsduOdv-0`sj`e`r-0q`xm`r-0StoRbs`qhof-0mhoj^q`xm`r","timeslice_heartbeat_config":{"pollIntervalMs":33,"idleGapThresholdMs":60,"ignoredTimesliceNames":{"requestAnimationFrame":true,"Event listenHandler mousemove":true,"Event listenHandler mouseover":true,"Event listenHandler mouseout":true,"Event listenHandler scroll":true},"enableOnRequire":true},"shouldLogCounters":false,"timeslice_categories":{"react_render":true,"reflow":true}}); script> style> style>
回答by NeilC
It's linked to a virus hacker on Facebook, sending videos to all the friends of the person who's been hacked. If you open such a video, you too become hacked and all your friends get the video too. Do not open any suspect videos or messages, particularly in Messenger.
它与 Facebook 上的病毒黑客相关联,将视频发送给被黑客入侵者的所有朋友。如果您打开这样的视频,您也会被黑客入侵,您的所有朋友也会收到该视频。不要打开任何可疑的视频或消息,尤其是在 Messenger 中。