«Знание — могущество».

23 марта 2009

Скрипт определения информации о пользователе

написал Figaroo в рубрике Web-разработка @ 20:03

Представляю вашему вниманию js-скрипт (javascript) сбора максимальной информации о пользователе, зашедшем на сайт. Скрипт разработан мной и человеком по имени Bloodthrist.

Пример: 8BB000AA20AA.100.00000.0001 1280*800@32 ru ru ru on +2 no 69532680580.20090715094852
Здесь показывается код браузера (8BB000AA20AA.100.00000.0001), определённый не на основе User-Agent'а, информация об экране (1280*800@32), языках по умолчанию (ru ru ru), поддержке ява-апплетов (on), часовом поясе (+2), идентификаторе компьютера пользователя (no 69532680580.20090715094852).

Исходник под катом.

/**
  * Скрипт определения идентификатора браузера пользователя
  * Авторы - Figaroo и Bloodthrist
*/

var bf_jsver;
var bf = new function (ieq) {
	var d = document, w = window, n = navigator, r = '', i, a, q, s, ll = '', ct, cp, pl, iec, ied, j, k, l, mi = 0, mid;
	for (i = 1; i < 10; i++) d.write('<'+'script language="javascript1.'+i+'">bf_jsver="'+i+'";<'+'/script>');
	this.jsver = bf_jsver; r += bf_jsver;
	a = 'b'; try {delete this} catch (E) {a = 'a'} r += a;
	a = 'b'; try {delete navigator} catch (E) {a = 'a'}	r += a;
	a = 0;
	a += typeof Window == 'function' ? w instanceof Window ? 1 : 0 : 0;
	a += typeof Document == 'function' ? d instanceof Document ? 2 : 0 : 0;
	a += typeof Navigator == 'function' ? n instanceof Navigator ? 4 : 0 : 0;
	r += a;
	a = 'b'; try {var y = document.write; y('')} catch (E) {a = 'a'} r += a;
	a = 'a'; try {eval('cons'+'t acons=true');} catch(e) {a = 'b'} r += a;
	r += w.crypto ? w.crypto.alert ? 1 : 2 : 0;
	r += typeof w.onload == "function" ? w.onload.toString().search('anonymous') != -1 ? 2 : 1 : 0;
	r += (typeof ActiveXObject == "function" ? 'b' : 'a') + (typeof GeckoActiveXObject == "function" ? 'a' : 'b');
	r += ' ';
	r += (!!w.Iterator ? 1 : 0) + (!!d.addEventListener ? 2 : 0) + (/a/[-1] == 'a' ? 4 : 0);
	r += ((function x(){})[-6] == 'x' ? 1 : 0) + ((function x(){})[-5] == 'x' ? 2 : 0) + (!!d.getElementsByClassName ? 4 : 0);
	r += '.';
	r += ieq + ('\v' == 'v' ? 'b' : 'a');
	r += (d.compatMode ? 1 : 0) + (d.all ? 2 : 0) + (!!d.readyState ? 4 : 0);
	r += (d.documentElement ? 1 : 0) + (d.documentElement && typeof d.documentElement.style.maxHeight != "undefined" ? 2 : 0) + (!!d.querySelectorAll ? 4 : 0);
	r += '.';
	r += (/a/.__proto__ == '//' ? 1 : 0) + (/source/.test((/a/.toString + '')) ? 2 : 0);
	r += (!!w.opera ? 1 : 0) + (w.opera && w.opera.toString() === "[object Opera]" ? 2 : 0) + (/^function $$/.test([].sort) ? 4 : 0);
	q = d.createElement('div');
	q.innerHTML = '
<style>#_t{display:none;}#_t[rel^="D"]{display:block;}</style>
<span id="_t" rel="Detect"></span>';
	q.style.display = 'none';
	d.body.appendChild(q);
	s = d.getElementById('_t');
	r += ((w.getComputedStyle ? w.getComputedStyle(s, null).getPropertyValue("display") : s.currentStyle ? s.currentStyle.display : null) == 'block') ? 'a' : 'b';
	d.body.removeChild(q);
	this.bid = r;
	r += ' ';
	var ws = w.screen, cd = new Date(), tz = - cd.getTimezoneOffset() / 60;
	if (ws.width && ws.height) {
		r += ws.width + '*' + ws.height;
		if (ws.colorDepth) r += '@' + ws.colorDepth;
		else if (ws.pixelDepth) r += '@' + ws.pixelDepth;
	} else r += 'undefined';
	ll += n.language ? ' ' + n.language : '';
	ll += n.systemLanguage ? ' ' + n.systemLanguage : '';
	ll += n.browserLanguage ? ' ' + n.browserLanguage : '';
	ll += n.userLanguage ? ' ' + n.userLanguage : '';
	r += (ll ? ll : ' no') + (n.javaEnabled() ? ' on' : ' off');
	r += ' ' + (tz > 0 ? '+'+tz : tz);
	if (d.all && n.userAgent.indexOf("Opera") == -1) {
		d.write('<xml:namespace ns=http://www.microsoft.com/ie prefix=IE><STYLE>@media all{IE\\:clientCaps {behavior:url(#default#clientcaps);}}</STYLE><IE:CLIENTCAPS ID="oClientCaps" />');
		if (oClientCaps) {
			if (oClientCaps.connectionType) ct = oClientCaps.connectionType;
			if (oClientCaps.cpuClass) cp = oClientCaps.cpuClass;
			if (oClientCaps.platform) pl = oClientCaps.platform;
			if (typeof oClientCaps.getComponentVersion != 'undefined') {
				var bbb = new Array(), ccc = new Array(0,0,0,0), ddd = '';
				var CompO = new Array("{7790769C-0471-11D2-AF11-00C04FA35D02}","{89820200-ECBD-11CF-8B85-00AA005B4340}","{283807B5-2C60-11D0-A31D-00AA00B92C03}","{4F216970-C90C-11D1-B5C7-0000F8051515}","{44BBA848-CC51-11CF-AAFA-00AA00B6015C}","{9381D8F2-0288-11D0-9501-00AA00B911A5}","{36F8EC70-C29A-11D1-B5C7-0000F8051515}","{5A8D6EE0-3E18-11D0-821E-444553540000}","{89820200-ECBD-11CF-8B85-00AA005B4383}","{08B0E5C0-4FCB-11CF-AAA5-00401C608555}","{45EA75A0-A269-11D1-B5BF-0000F8051515}","{DE5AED00-A4BF-11D1-9948-00C04F98BBC9}","{22D6F312-B0F6-11D0-94AB-0080C74C7E95}","{44BBA842-CC51-11CF-AAFA-00AA00B6015B}","{3AF36230-A269-11D1-B5BF-0000F8051515}","{44BBA840-CC51-11CF-AAFA-00AA00B6015C}","{CC2A9BA0-3BDD-11D0-821E-444553540000}","{08B0E5C0-4FCB-11CF-AAA5-00401C608500}","{60B49E34-C7CC-11D0-8953-00A0C90347FF}","{03F998B2-0E00-11D3-A498-00104B6EB52E}","{0FDE1F56-0D59-4FD7-9624-E3DF6B419D0E}","{10072CEC-8CC1-11D1-986E-00A0C955B42F}","{1B00725B-C455-4DE6-BFB6-AD540AD427CD}","{4278C270-A269-11D1-B5BF-0000F8051515}","{44BBA855-CC51-11CF-AAFA-00AA00B6015C}","{4F645220-306D-11D2-995D-00C04F98BBC9}","{5FD399C0-A70A-11D1-9948-00C04F98BBC9}","{630B1DA0-B465-11D1-9948-00C04F98BBC9}","{6FAB99D0-BAB8-11D1-994A-00C04F98BBC9}","{C9E9A340-D1F1-11D0-821E-444553540600}","{D27CDB6E-AE6D-11CF-96B8-444553540000}","{E92B03AB-B707-11D2-9CBD-0000F87A369E}");
				for (var iii = 0; iii < CompO.length; iii++) {
					var Ver = oClientCaps.getComponentVersion(CompO[iii], "ComponentID");
					var aaa = Ver.split(',');
					for (var jjj = 0; jjj < aaa.length; jjj++) {
						aaa[jjj]++; aaa[jjj]--; ccc[jjj] += aaa[jjj];
						ddd = ccc[0] + '' + ccc[1] + '' + ccc[2] + '' + ccc[3];
					}
				}
				iec = ddd;
			}
		}
	}
	ied = (iec?iec+'/':'')+(ct?ct+'/':'')+(cp?cp+'/':'')+(pl?pl+'/':'');
	ied = ied ? '/'+ied : 'no';
	this.ie = ied;
	r += ' ' + ied;
	if (n.mimeTypes) {
		var mta = n.mimeTypes;
		for (i = 0, k = mta.length; i < k; i++) {
			for (j = 0, l = mta[i].type.length; j < l; j++)
				mi += (mta[i].type.charCodeAt(j) * 10.3) << (10 + i*j);
		}
	}
	mid = mi.toString();
	if (n.buildID) mid += '.' + n.buildID;
	this.mid = mid;
	r += ' ' + (mid ? mid : 'no');
	this.res = r;
}(0 /*@cc_on + (@_jscript_version * 10 % 10) @*/);
var browserId = bf.res;
// alert (browserId);

Скачать исходник: figaroo_user_info.rar.

Также рекомендуем прочитать: Определение «ID компа» (уникального ключа машины) в IE.

Комментарии (3) »

  1. Не скрипт, а конфетка))) Давно уже искал на подобие этого. Он вроде у тебя на figaroos.com был реализован, если я неошибаюсь.%)

    Комментарий by Rassvet — 20 апреля 2009 @ 19:17


  2. Спасибо. Была реализована только треть скрипта. :) И, figaroos.com'а больше нет)))

    Комментарий by Figaroo — 20 апреля 2009 @ 20:02


  3. Ну то что "figaroos.com’а больше нет)))" я знаю, поэтому и написал "был реализован", ибо появлялся на нём очень часто с момента его появления=)

    Комментарий by Rassvet — 20 апреля 2009 @ 20:34


RSS-лента комментариев к этой записи

Оставить комментарий

Пожалуйста, заполните все поля.

© Валерий 'Figaroo' Киркиж, 2008-2012 гг.