Как заблокировать нежелательные сайты. Пишем свой блокиратор сайтов

Обслуживая многочисленные фирмы, мне часто приходится сталкивать с проблемой блокировки нежелательных сайтов. Вы даже не представляете, какой ущерб приносят фирмам сотрудники, проводящие время в Одноклассниках и им подобным сайтам.

Итак, как же заблокировать доступ к нежелательным сайтам? Можно использовать многочисленный софт, а можно сделать старым дедовским способом. Опять же, мне было удивительно узнать, что многие даже не знают, что в Windowsе это сделать очень просто.

В папке Windows/system32/drivers/etc лежит файл hosts. Открыв его блокнотом, можно увидеть следующую картину:

Это файл помогает ускорению поиска dns, однако он же может и заблокировать доступ к сайту, присвоив его доменное имя локальному хосту (нашему компьютеру). Открывая страницу по заблокированному таким способом сайту, браузер сообщит нам, что невозможно найти сервер.

На моем скриншоте я заблокировал сайты программы Alkogol для примера. Ну и к слову, могу сказать, что вирусы именно в этом файле часто блокируют доступ к сайтам антивирусов. Кроме того, можно сделать специальную подмену dns на компьютере жертвы, чтобы его браузер открывался на нужной нам странице (это я покажу в разделе «Хакинг»).

Так как заблокировать сайт? Открываем файл hosts блокнотом и вводим после строки с localhost айпи 127.0.0.1 и через пробел доменное имя блокируемого ресурса.

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

Давайте откроем Делфи и набросаем на нее контролов, как на моем скриншоте:

Здесь я использовал две кнопки, два Label, Memo и ProgressBar. Ниже привожу модуль, который вам нужно будет скопировать в свою программу, если не охота набивать его вручную:

 

unitMainUnit;

interface

uses

Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,

Dialogs,StdCtrls,Menus,ComCtrls;

type

TForm1=class(TForm)

Memo1:TMemo;

Button1:TButton;

ProgressBar1:TProgressBar;

Label1:TLabel;

Label2:TLabel;

Label3:TLabel;

Button2:TButton;

procedureFormCreate(Sender:TObject);

procedureFormResize(Sender:TObject);

procedureMemo1Change(Sender:TObject);

procedureButton1Click(Sender:TObject);

procedureFormClose(Sender:TObject;varAction:TCloseAction);

procedureButton2Click(Sender:TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1:TForm1;

implementation

{$R *.dfm}

Var

tf:TextFile;

path:string;

mask:string;

procedureTForm1.FormCreate(Sender:TObject);

//получим системную папку и добавим наш путь к файлу

Var

w:pchar;

begin

Memo1.Clear;

mask:=‘127.0.0.1 ‘;

GetMem(w,255);

GetSystemDirectory(w,254);

path:=string(w)+‘\drivers\etc\hosts’;

FreeMem(w,255);

try

AssignFile(tf,path);

except

ShowMessage(Ошибкаподключения);

end;

}

end;

procedureTForm1.FormResize(Sender:TObject);

begin

{Memo1.Width:=Width;

Memo1.Height:=Height; }

end;

procedureTForm1.Memo1Change(Sender:TObject);

begin

ifMemo1.Lines.Count=0thenbutton1.Enabled:=falseelse

Button1.Enabled:=true;

end;

procedureTForm1.Button1Click(Sender:TObject);

Var

i:integer;

begin

ifMemo1.Lines.Count=0then

begin

ShowMessage(‘Вы же ничего не ввели! Введите данные’);

Memo1.SetFocus;

exit;

end;

//GetWindowsDirectory(w,254); //получитьсистемнуюинфу

ProgressBar1.Max:=Memo1.Lines.Count;

Label1.Visible:=true;

Append(tf);

fori:=0toMemo1.Lines.Count1do

begin

Writeln(tf,mask+Memo1.Lines[i]);

ProgressBar1.Position:=ProgressBar1.Position+1;

end;

ShowMessage(‘Данные успешно обработаны. Безопасного вам интернета’+#13+‘Спасибо за использование программы’);

CloseFile(tf);

Close;

end;

 

procedureTForm1.Button2Click(Sender:TObject);

begin

IfMemo1.Lines.Count<>0then

begin

Memo1.Lines.SaveToFile(список.txt’);

 

end

else

begin

ShowMessage(Списокпуст. Заполнитеего);

exit;

end;

end;

end.

 

Давайте теперь немного поясню. В методе TForm1.Create я автоматизировал получение файла hosts. На разных компьютерах папка Windows может быть на разных дисках, отличных от C. Поэтому для получения пути до этой папки я использовал функцию Win32 Api GetSystemDirectory, параметрами которой выступают динамически созданная переменная w типа PChar и размер этой переменной (размер буфера). Потом я склеиваю полученный путь и с директорие hosts и удаляю память под w.

Там же я открываю файл, для чего воспользовался блоком try..except, чтобы приложение не падало. И уже в этот файл вводил сайты с поля Memo. Думаю, что вы с легкостью разберетесь в данном коде. Непонятные места я старался комментировать.

Все остальное в коде – это типичное юзабилити формы. У вас его может и не быть. Скачать исходники программы можете здесь.

Таким образом, мы разобрали с вами, как заблокировать сайты.

Вячеслав «VeGA» Головлев

Добавить комментарий

Внимание! Не будут добавляться комментарии в виде откровенного спама или прямого анкора на свои сайты. Все спамеры будут передаваться в базу Akismet

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: