Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Антивор


Автор: fregs 20.6.2005, 16:20
Проблема в частой краже скриптов с сайта, уберечься конечно от этого нельзя, но хотелось хотя бы знать кто и где....

Идея такова:
в код скрипта который хочется уберечь, включается что нить вроде
вызова обьекта xmlhttp(или аналогичного для мозиллы) который методом post передает информацию на сервер с которого украли скрипт.


Скрипт должен быть, максимально краток, для незаметности и максимально сложен для чтения(защита на дурака)

Понимаю, что от серьезного человека никак не защититься, но не все же проверяют код от строчки до строчки...


К сожалению я не силен в JS ...
Хотелось бы посмотреть ваши варианты реализации данной задачи

Автор: Sardar 21.6.2005, 00:40
fregs не имеет смысла. JS достаточно прост что бы писать самому. Ну подумаешь украли твой скрипт, в чём проблема? Ты ведь не отдельные скрипты продаёшь, а готовый вебпроект. Мелочиться из-за простенького скрипта по крайней мере не красиво smile

По теме, да можно создавать динамический ифрейм(так как работать будет везде) или картинку/скрипт и через него пинговать твой сервер посылая данные о текущем домене.

Реально написать в 4 строки и меньше, но прежде чем выложу код, хотелось бы что бы ты подумал над первым абзацем smile

Автор: Black 21.6.2005, 10:31
fregs
что-то я не совсем понял что именно надо... но пока Sardar пишет код, я думаю будет полезно и это посмотреть:

http://forum.vingrad.ru/index.php?showtopic=56018

P/S: тут про работу XMLHttpRequest, посылка запросов на сервер через POST




Автор: fregs 21.6.2005, 13:28
Sardar
дело не в продаже smile
это скорее для сайта который - хобби, а не работа...

в общем то по поводу простоты я понимаю и сам вопрос может и не поднимался бы...
меня интересуют не авторские права, а скорее статистика использования...

ну а незаметность, нужна дабы не искажать результаты

p.s. Подумав добавил, кстати подобный скрипт мог бы пригодится тем кто пишет плугины к МайИЕ и ИЕ.


PHP-DIRECTOR
пригодится
бросил себе в архивчик

Автор: sergejzr 21.6.2005, 13:48
Я надеюсь вы вкурсе, что сохранять информацию о пользователе без его согласия запрещено законом?
В любом случае незаметно этого делать нельзя!

Иначе весь софт уже давно бы к производителям стучался если что.

Автор: fregs 21.6.2005, 14:24
sergej.z
меня интересует только использование моего скрипта, без моего согласия...

Автор: sergejzr 21.6.2005, 16:30
Это не значит, что ты имеешь право узнавать это любыми способами. smile

Автор: Black 21.6.2005, 17:32
sergej.z
сохранять информацию о пользователе

ты имеешь ввиду я не юмею даже права узнать каким браузером пользуется пользователь. Что-то ты загнул smile

Получается все системы сбора статистики в суд !!!

Автор: sergejzr 21.6.2005, 21:00
Можешь, но по сохраняемй информации не должно быть возможным выйти на пользователя.

Более того, даже если пользователь дал согласие, информацию можно сохранять только на то время, насколько это необходимо для определённой технической цели.

Статистика "слепа" по ней нельзя сказать, каким браузером пользуется Вася Пупкин.

Автор: Sardar 21.6.2005, 22:21
Спец службам побарабану на какие либо права на личную жизнь... smile

fregs я пытался помочь тебе взглянуть на вещи с другой стороны... впрочем когда ты сможешь писать свои скрипты без всяких сложностей, то поймёшь smile

Вот код. Создаём картинку, GET'ом передаём инфу на сервер.
Код
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<script type="text/javascript">
<!--
/**
* Наша секрентная функция =)  Убери всё форматирование. Кода здесь 3 строчки,
* остальное для тестов и что бы в локалке не проглючило
*/
function s() {
  if(location.protocol=="file:") return; //не с диска ли пользователя работаем?
  if(!document.body) { //если ты поспешил с вызовом, то отложим работу пока страница не подрузиться
    window.setTimeout(arguments.callee, 1000);
    return;
  }
 document.body.appendChild((im=document.createElement("IMG"))); //создали картинку
 im.style.cssText="position:absolute;visibility:hidden;"; //скрыли, display=none нельзя, иначе опера глючит
 im.src="./stat.php?d="+encodeURIComponent(location.href);//отсылаем что угодно, в данном случае текущий URL
 //не забудь что encodeURIComponent кодирует текст в UTF-8, на сервере
 // перекодируй если необходимо в локальную кодировку
 im.id="test_im"; //для функции show, когда будешь использовать, строчку убери
}
s(); //не боимся вызывать откуда угодно. Вызов не заметен.
// Если повесишь на body.onload(что естественно видно), то второй if в функции не обязателен

function show() {
  var img;
  if(img=document.getElementById("test_im")) { //если картинка созданна
    img.style.position="static"; //покажем её
    img.style.visibility="visible"; //на сервере генериться чёрный 
    img.style.border="1px solid black"; //квадратик 3х3
    document.getElementById("t").appendChild(im);
  } else alert("Image doesn't exists!"); //иначе сообщаем что мы мол не из http:// загруженны
}
//-->
</script>
</head>
<body>
А мы кинули мессагу на сервер, видно в статустной строке? =) <br>
Кинуть ещё раз:&nbsp; <button onclick="s()">отослать</button>
<div id="t"><span onclick="show()">Показать</span> загруженную картинку<br></div>
</body>
</html>


Как видишь, всё просто. Мозилла проглючит повесив в статусной строке бесконечное "Loading...", хотя картинка загрузилась. Мозилла вообще по любому поводу loading...
в статусе вешать любит smile

На сервере генерим саму картинку и принимаем инфу. На PHP:
Код
header("Content-type: image/jpeg"); //мы картинка
$img=imagecreate(3,3); //создали 3х3, можно 1х1
imagefill($img,1,1,0); //залили чёрным
imagejpeg($img); //отправили

$fp=fopen("stat.log","a"); //открыли файл статистики
@flock($fp, LOCK_EX);
fwrite($fp,(@$_GET['d']."\n")); //записали
fclose($fp);

Автор: fregs 22.6.2005, 09:50
Sardar
угу пасиб...

Автор: Aliance 23.6.2005, 12:02
Вот тут все хорошо объяснено по этому вопросу:
http://forum.vingrad.ru/index.php?showtopic=25357

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)