Как определить привычки веб-серфинга и перенаправить браузер? - PullRequest
2 голосов
/ 13 октября 2010

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

В принципе, я бы хотел запустить небольшой фоновый процесс, который бы выглядел примерно так:

if (user is on website for > 20 minutes every 24 hours )
   {
     browser redirect user to specified website
   }

Я понимаю, что мог бы легко получить стороннюю программу, которая бы делала это, но я бы с удовольствием сделал это сам! Проблема в том, что я абсолютно не знаю, как понять такой проект - или даже какие языки я мог бы использовать, чтобы сделать что-то подобное. У меня достаточно приличные знания PHP и Java, и я всегда учусь, поэтому любые предложения о том, как это сделать, будут очень благодарны!

Большое спасибо:)

Ответы [ 6 ]

2 голосов
/ 13 октября 2010

Не существует простой базовой программы, которая будет делать это.

Для чего-то подобного требуется, чтобы они всегда использовали один и тот же браузер и чтобы он опубликовал межпроцессный API, которыйчтобы увидеть, какие сайты просматриваются, и перейти на другие сайты.Это много предположений.Ваши дети всегда могут использовать другой браузер, или они могут убить процесс в системе.Независимо от того, какое программное обеспечение вы устанавливаете на своем компьютере, они почти всегда могут обойти его.Там не будет простой способ сделать это.

Лучшее решение трудно.По сути, это брандмауэр.Установите брандмауэр в вашем доме и установите фильтр для пересылаемых пакетов.Осмотрите пакеты, чтобы найти HTTP-запросы и перехватите их.Записывайте, что запрашивается, и, если он превышает ваш лимит, переписывайте пакеты так, как вы хотите.

Возможно, было бы лучше просто найти коммерческое программное обеспечение, которое делает то, что вы хотите.

0 голосов
/ 13 октября 2010

Для этого вам необходимо запрограммировать (умный) прокси-сервер http.Это обычно считается нетривиальной деятельностью.Но эй, есть хакеры, которые говорят, что это можно сделать:

HTTP-прокси-сервер в 20 строках файла node.js Код (используется node.js библиотека)

Просто добавьте свою собственную логику, и вот вы здесь.Король прокси-холма; -)

0 голосов
/ 13 октября 2010

Короткий ответ: решить эту проблему довольно сложно по причинам, указанным Эриком.

Единственный способ сделать это - настроить что-то вроде WireShark , который будет анализировать весь сетевой трафик на машине и искать запросы к определенному шаблону URL ( facebook ) и запускать таймер всякий раз, когда это происходит.Однако существуют дополнительные сложности, когда кто-то хочет сказать: «Я не хочу тратить здесь больше 20 минут в день», потому что в сегодняшней сети практически невозможно определить, что значит проводить 20 минут на сайте.Посмотрите эту тему на форумах OS X Hints для полезного обсуждения, почему это сложно.Это в основном сводится к тому, как веб-сайты делают запросы для вас в эти дни, а не вы нажимаете вручную.Конечно, если вы не заботитесь о том, чтобы пользователь действительно находился там, а просто предоставляете ему 20 минут в день с момента первого входа на сайт, тогда проблема становится немного проще.

Выможет выяснить, как написать программное обеспечение для вашего маршрутизатора в качестве одного из возможных проектов.Использование Tomato или DD-WRT дает вам возможность контролировать работу вашего маршрутизатора и дает централизованный доступ, необходимый для размещения анализатора во всей сети (особенно если у вас естьнесколько компьютеров, которые вы пытаетесь сделать это).Конечно, это добавляет сложности в попытке выяснить, что значит для одного человека проводить время на сайте по сравнению с другим.Если все ваши ПК однопользовательские, то проблемы не так сложны, но если у вас несколько пользователей на ПК, вы даже не сможете отключить IP-адрес как уникальный пользователь.

Если вы не используетеЕсли вы не хотите программировать свой роутер, то вам придется написать сетевой анализатор и установить его на каждой машине.Что-то вроде jNetStream может дать вам хороший старт, поскольку написание сетевого анализатора, вероятно, не может считаться «простой» программой, как вы думали, что собираетесь писать.

В любом случае, однаждыВы настроили и запустили его, вам просто нужно выяснить, как подключить его к вашей ОС.Я сомневаюсь, что какой-либо язык действительно "не подходит" для этой задачи, поэтому имейте это в виду!

0 голосов
/ 13 октября 2010

Я вижу два простых способа решения этой проблемы:

  1. Вы можете написать расширение для вашего любимого браузера. Посмотрите, например, на Учебник по созданию расширения Firefox .
  2. Вы можете написать прокси-сервер http (s) и настроить браузер на его использование.

Я не рекомендую 2-й, ИМХО, он требует слишком много работы для простого домашнего решения.

0 голосов
/ 13 октября 2010

Я думаю, что вы могли бы достичь такой функции с помощью программируемого прокси. В мире рубинов за время существования фантастики MouseHole . К сожалению, те времена прошли. В настоящее время, используя Java, я смотрю на такие вещи, как этот документ . Наконец, вы также можете взглянуть на proxomitron .

0 голосов
/ 13 октября 2010

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

...