Проверка валидности ip адреса


Содержание

Проверка валидности ip адреса

Есть ли в Delphi функция проверки IP-адреса на валидность?

Я , конечно могу сам написать свою, но интересует именно наличие готовой.

> [0] SergP © (04.10.11 16:56)

А что вы подразумеваете под валидностью?
Если по адресу XXXX.XXXX.XXXX.XXXX ничего нет, то он валиден?


> проверки IP-адреса на валидность?

В смысле? Значение IP или что?

для невалидного адреса мы не сможем выяснить, есть по нему что-то или нет.

Имеется ввиду
> И. Павел © (04.10.11 16:59) [1]
>
> > [0] SergP © (04.10.11 16:56)
>
> А что вы подразумеваете под валидностью?
> Если по адресу XXXX.XXXX.XXXX.XXXX ничего нет, то он валиден?
>

Да нет. Мне не нужно проверять или такой адрес существует в сети. Просто проверить валидно ли значение.

например:
15.22.35.48 — валидно
12,25,25,12 — невалидно
352.15.25.22 — невалидно
127.0.1 — невалидно

Мне не нужно проверять или такой адрес существует в сети.

в сети существуют хосты, а не адреса.
адреса существуют в адресном пространстве.
причем все. и все они валидны.

Т.е. нужно выяснить, может ли строка является представлением IP-адреса в IPv4

ты в курсе, что строковых представлений не одно?
причем «666» — тоже валидное представление ИП адреса.

Имеется ввиду форма записи «Десятичная с точками»

Опять проблемы с парсингом строки. :(

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

Кроме IP есть ещё порт. Их тоже все проверять будешь на валидность?


> Jeer © (04.10.11 17:31) [9]
>
> Опять проблемы с парсингом строки. :(

Нет. Я же в [0] писал, что:


> Я , конечно могу сам написать свою, но интересует именно
> наличие готовой.

Просто когда есть что-то готовое, то нет смысла захламлять код своими вариантами таких функций.
Поэтому и пытаюсь узнать есть ли что-то готовое.
Если нет — напишу сам.


> SergP © (04.10.11 16:56)

За это вреся можно написать с десяток подобных функций и не захламлять форум :)

> SergP © (04.10.11 17:36) [12]


> Кроме IP есть ещё порт. Их тоже все проверять будешь на
> валидность?

Ну для порта проверок и не нужно, достаточно чтобы он был числом и умещался в word

Ну для порта проверок и не нужно

для адреса тоже самое, только dword.

А ИП откуда берешь?


> Dennis I. Komarov © (04.10.11 17:43) [16]
>
> А ИП откуда берешь?

Пользователь вводит. Вот и нужно проверить, чтобы он не вел какую-то хрень.

Лишь бы похоже было, а все остальное не важно.

Где-то даже валялся компонент IP-Edit :)

Используй MaskEdit, он решит большую часть твоих проблем.

дома валяется код, кажися Розыча, вроде даже не компонент, а виндовый.

если не выложат, то попозже.

А код в общем случае для получения InAddr примерно такой (данные представлены в виде IP адреса или UNC имени):

InAddr := inet_addr(PChar(Addr));
if InAddr = INADDR_NONE then
begin
Host := gethostbyname(PChar(Addr));
if not Assigned(Host) then
begin
// OutputDebugString(PChar(Addr + » gethostbyname failed»));
Exit;
end;
// OutputDebugString(PChar(«gethostbyname = » + Addr));
InAddr := PInAddr(Host.h_addr_list^)^.S_addr;
end;


> Anatoly Podgoretsky © (04.10.11 17:51) [18]
>
> Лишь бы похоже было, а все остальное не важно.

Все остальное проверится потом.
Главное чтобы не вводили откровенной фигни.


>
> SergP © (04.10.11 16:56)
> Есть ли в Delphi функция проверки IP-адреса на валидность?
>

TIdIPAddress

Проверка на валидность + конвертация:

function StrToIP(const s: string; out IP: Longword): boolean;
var
pCurChar: ^byte;
prevChar: byte;
i, dotCount: integer;
x: longword;
begin
Result := false;
IP := 0;
x := 0;
dotCount := 0;
pCurChar := @s[1];
prevChar := ord(«.»);
for i := length(s)-1 downto 0 do
begin
if (pCurChar^ >= ord(«0»)) and (pCurChar^ 255 then exit;
if i = 0 then
begin
IP := IP shl 8 + x;
Result := (dotCount = 3);
exit;
end;
end
else if pCurChar^ = ord(«.») then
begin
if (dotCount = 3) or (prevChar = pCurChar^) then exit;
inc(dotCount);
IP := IP shl 8 + x;
x := 0;
end
else exit;
prevChar := pCurChar^;
inc(pCurChar);
end;
end;


> Омлет © (04.10.11 18:55) [26]

Дык это все делается вызовом одной единственной АПИ :)
Rouse_ © (04.10.11 17:58) [22]

зы: которая так-же учитывает следующие представления IP адреса:

Internet address value Meaning
«4.3.2.16» Decimal
«004.003.002.020» Octal
«0x4.0x3.0x2.0x10» Hexadecimal
«4.003.002.0×10» Mix

WinAPI не кроссплатформенно ))

> Омлет © (04.10.11 18:55) [26]

Поправка
[+] контроль количества цифр, чтобы «0127.0.0.1» не прошел.

function StrToIP(const s: string; out IP: Longword): boolean;
var
pCurChar: ^byte;
prevChar: byte;
i, dotCount, digitCount: integer;
x: longword;
begin
Result := false;
IP := 0;
x := 0;
dotCount := 0;
pCurChar := @s[1];
digitCount := 0;
prevChar := ord(«.»);
for i := length(s)-1 downto 0 do
begin
if (pCurChar^ >= ord(«0»)) and (pCurChar^ 255 then exit;
if i = 0 then
begin
IP := IP shl 8 + x;
Result := (dotCount = 3);
exit;
end;
end
else if pCurChar^ = ord(«.») then
begin
if (dotCount = 3) or (prevChar = pCurChar^) then exit;
inc(dotCount);
IP := IP shl 8 + x;
x := 0;
digitCount := 0;
end
else exit;
prevChar := pCurChar^;
inc(pCurChar);
end;
end;

uses
comctrls, commctrl;
type
TIPEdit = class(TWinControl)
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure WMGetDlgCode( var Message:TWMGetDlgCode); message WM_GETDLGCODE;
end;
procedure TIPEdit.CreateParams(var Params: TCreateParams);
begin
InitCommonControl(ICC_INTERNET_CLASSES );
inherited CreateParams(Params);
CreateSubClass(Params, WC_IPADDRESS);
Params.Style := Params.Style or WS_TABSTOP;
end;
procedure TIpEdit.WMGetDlgCode;
begin
inherited;
Message.Result := Message.result or DLGC_WANTARROWS; // and not DLGC_WANTTAB;
end;
var Edit1: TIPEdit;
procedure TForm1.FormCreate(Sender: TObject);
begin
if not Assigned(Edit1) then begin
Edit1 := TIPEdit.Create(Self);
with Edit1 do
begin
Name := «Edit1»;
Parent := Self;
Left := 24;
Top := 16;
W >Height := 21;
Tabstop := True;
end;
SendMessage(Edit1.Handle,IPM_CLEARADDRESS,0,0);
SendMessage(Edit1.Handle,IPM_SETADDRESS,0,MAKEIPADDRESS(127,0,0,1));
end;
end;

Не помню чей (to Rouse_ вроде твой, но могу ошибаться), но кого-то из мастеров. Если интересно, можно на .net поискать, так что на авторство не претендую :)


> Омлет © (04.10.11 19:07) [29]
> WinAPI не кроссплатформенно ))

Ну тогда правь ошибки :) Например оть тут будет вылет при пустой строке:
pCurChar := @s[1];
:)


> Dennis I. Komarov © (04.10.11 19:11) [30]

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

А, не, это код от Leonid Troyanovsky.
У меня вот так было: http://forum.sources.ru/index.php?showtopic=173391

> Rouse_ © (04.10.11 19:13) [31]

fixed + support unicoded Delphi.

function StrToIP(const strIP: AnsiString; out uintIP: Longword): boolean;
var
pCurChar: ^byte;
prevChar: byte;
i, dotCount, digitCount: integer;
x: longword;
begin
Result := false;
if strIP = «» then exit;
uintIP := 0;
x := 0;
dotCount := 0;
pCurChar := @strIP[1];
digitCount := 0;
prevChar := ord(«.»);
for i := length(strIP)-1 downto 0 do
begin
if (pCurChar^ >= ord(«0»)) and (pCurChar^ 255 then exit;
if i = 0 then
begin
uintIP := uintIP shl 8 + x;
Result := (dotCount = 3);
exit;
end;
inc(digitCount);
end
else if pCurChar^ = ord(«.») then
begin
if (dotCount = 3) or (prevChar = pCurChar^) then exit;
inc(dotCount);
uintIP := uintIP shl 8 + x;
x := 0;
digitCount := 0;
end
else exit;
prevChar := pCurChar^;
inc(pCurChar);
end;
end;


> Омлет © (04.10.11 19:24) [34]
>
> > Rouse_ © (04.10.11 19:13) [31]
>
> fixed + support unicoded Delphi.

А обниливание результата при ошибке? :)
Writeln(StrToIP(«255.255,255.255», D));

var
D: Cardinal;
begin
Writeln(StrToIP(«255.255,255.255», D));
writeln(D);
readln;
end.
255 кажет ;)

> Rouse_ © (04.10.11 19:31) [35]
> А обниливание результата при ошибке? :)

Обнуление? Зачем? Это же out, а не var..

if StrToIP(«255.255,255.255», D) then
continue and use D
else
invalid IP


> Омлет © (04.10.11 19:38) [37]
> Обнуление? Зачем?

Затем что всегда найдется индивидум, который не проверит результат :)

Илон Маск рекомендует:  Вывод круговой диаграммы

> Затем что всегда найдется индивидум, который не проверит результат

function StrToIP(const strIP: AnsiString; out uintIP: Longword): boolean;
var
pCurChar: ^byte;
prevChar: byte;
i, dotCount, digitCount: integer;
x: longword;
begin
if strIP <> «» then
begin
uintIP := 0;
x := 0;
dotCount := 0;
pCurChar := @strIP[1];
digitCount := 0;
prevChar := ord(«.»);
for i := length(strIP)-1 downto 0 do
begin
if (pCurChar^ >= ord(«0»)) and (pCurChar^ 255 then break;
if i = 0 then
begin
if dotCount <> 3 then break;
uintIP := uintIP shl 8 + x;
Result := true;
exit;
end;
inc(digitCount);
end
else if pCurChar^ = ord(«.») then
begin
if (dotCount = 3) or (prevChar = pCurChar^) then break;
inc(dotCount);
uintIP := uintIP shl 8 + x;
x := 0;
digitCount := 0;
end
else break;
prevChar := pCurChar^;
inc(pCurChar);
end;
end;
Result := false;
uintIP := 0;
end;

Зы: кстати по поводу разделения результата и возвращаемого значения, я сам так периодически делаю, но давно пришел к выводу что это есть не правильный подход и сейчас себя приучаю не писать функции вида:
function Foo(out/var OutputValue): Boolean
ибо гораздо правильней делать
function Foo: OutputValue
убирается избыточность, а проверку лучше по самому возращенному значению делать.

Прокси чекер

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

Прокси чекер валидности умеет:

    проверять IPv4 прокси; автоматически определять HTTP(s) и Socks5 протоколы; определять страну и город IP адреса; чекать скорость и пинг прокси-сервера; проверять анонимные персональные прокси с авторизацией по логину и паролю; групповая, скоростная многопоточная проверка прокси — 64 потока и более 100 мбит; удобный вывод результатов с помощью фильтра отображения. Наш бесплатный прокси чекер онлайн для проверки валидности имеет высокие показатели проверки прокси:


В каком формате добавлять прокси в чекер?

  • Если у вас публичные прокси (без логина и пароля), то — IP:PORT
  • Если у вас приватные прокси (с авторизацией по логину и паролю), то — IP:PORT:USER:PASS

P.S.: Если вы купили прокси у нас, то они приватные!

IP. Port Страна Логин Пароль Тип Скорость Anonymus Состояние

Нужны стабильные персональные прокси?

Онлайн прокси чекер для проверки адресов на валидность

Одним из главных недостатков многих бесплатных прокси-серверов, в том числе и российских, является их недостаточная скорость в совокупности с невысоким аптаймом (временем доступности). Подобные недостатки не позволяют комфортно выполнять необходимые пользователям задачи и сильно действуют на нервы. Но и тратить дополнительные средства для покупки платных прокси может позволить себе не каждый. Да и не всегда это целесообразно. Как поступить, как получить актуальный список валидных прокси и при этом не потратить денег?

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

Преимущества сервиса проверки proxy от компании ProxySale

Предлагаемый нами сервис обладает рядом уникальных возможностей:

    Имеется возможность получения подробной информации по каждому серверу – скорость, пинг, уровень анонимности, тип прокси, а также географическая принадлежность (страна и город); Выдача аналитических данных чекера имеет тонкую настройку и позволяет экспортировать только ту часть результатов, которая реально вам необходима; Наш сервис работает на достаточно мощном аппаратном комплексе, что позволяет ему уверенно справляться с обработкой большого количества запросов и выдавать результаты в кратчайшие сроки. И еще наш сервис абсолютно бесплатный и, мы надеемся, будет таким всегда – разве это не существенное преимущество?

Ищете чекер прокси для проверки на валидность? Мы разработали его для вас, пользуйтесь и наслаждайтесь возможностью получения быстрой и достоверной информации обо всех необходимых вам прокси-серверах!

Как проверять email адрес на валидность правильно

Предположим, у вас есть простая задача — создать форму, которая даст пользователю возможность подписаться на e-mail оповещения. Разумеется, вам необходимо предотвратить ввод в эту форму всякого мусора, при этом не должно получаться так, чтобы валидный адрес вдруг был забракован системой.

Как же выглядит e-mail адрес? Интуитивно можно предположить, что так:

Выглядит хорошо, но это совершенно не тот случай, когда стоит доверять интуиции. Доверять следует спецификации. А спецификация говорит нам следующее:

Конечно, и тут можно обойтись с помощью регулярного выражения:

Но с этим есть несколько проблем:

  • Как вы будете проверять правильность этого монстра? Такие регулярные выражения переходят «из уст в уста» на форумах, и каждый добавляет в них функциональность до тех пор, пока работа с выражением становится невозможной. И это именно тот случай.
  • Я бы не сказал, что регулярные выражения такой длины эффективнее, чем другие методы. Чем длиннее выражение, тем дольше оно будет компилироваться (сравнение всегда происходит за O(n)).
  • С помощью регулярного выражения можно сделать только проверку на соответствие. Выполнить проверку на то, находится ли домен в чёрном списке, у вас уже, увы, не получится.

Давайте пойдём другим путём

Вот основа нашей проверки:

А вот диаграмма, описывающая алгоритм, по которому наша программа будет работать:

Если вы заметили, что тут не все правила соблюдаются — не волнуйтесь, мы вернёмся к этому позже. Если вы не заметили, и вообще не понимаете, что тут происходит, то сейчас объясню.

Вершина графа — состояние проверки. Ребро графа — прочитанный символ. Если в результате считывания символа невозможно перейти ни по одному ребру, значит, адрес не валиден. Вот, например, как будет реализована первая часть этого алгоритма:

Теперь о проверках, которые мы сделаем, после того, как код пройдёт по этой диаграмме:

Валидатор ip адреса на PHP

Пример хелпера-валидатора на PHP для проверки формата ip адреса.

Функция проверяет является ли формально строка ip-адресом по протоколам ipv4 или ipv6. Возвращает булево значение.

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

Данная запись опубликована в 13.11.2015 17:26 и размещена в PHP. Вы можете перейти в конец страницы и оставить ваш комментарий.

Мало букафф? Читайте есчо !

Проверка HTML на наличие ошибок

Один из этапов «технического аудита» — выявление ошибок в HTML документе. Если в документе есть ошибки, робот может неправильно интерпретировать часть .

PHP проверка адреса электронной почты, email

Серию валидаторов пополняю функцией проверки введенного email на соответствие формальным требованиям. По стандарту RFC822 Если есть необходимость соблюсти все требования, которые упомянуты в громоздкой спецификации RFC822, то лучший путь — воспользоваться .

RegEx: Найти IP Адреса в Файле с Помощью Grep

Ниже представлены регулярные выражения, которые помогут найти и напечатать все IP адреса из файла.

Данные регулярные выражения соответствуют шаблонам IPv4 адресов.

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

В данной заметке Вы найдете как сами регулярные выражения, так и примеры того, как найти и извлечь все IP адреса из файла с помощью команды grep.

Регулярное Выражение для Поиска IP Адресов

Паттерн для поиска IPv4 адресов (этот паттерн соответствует всем значениям от 0.0.0.0 to 999.999.999.999 и в большинстве случаев этого бывает достаточно).

Найти Все IP Адреса с Помощью Grep

Пропарсим файл и найдем в нем все IP адреса из диапазона от 0.0.0.0 до 999.999.999.999 с помощью grep:

Это довольно простое регулярное выражения, но Вы должны понимать что далеко не все его значения являются правильными IP адресами с технической точки зрения.

Далее мы рассмотрим паттерн, под который попадают исключительно правильные IP адреса.

Поиск Правильных IPv4 Адресов

Регулярное выражение для поиска и проверки правильных IPv4 адресов:

Извелечь Только Валидные IP Адреса

Находим только правильные IP адреса с помощью grep:

Опция Описание
-E, —extended-regexp Использовать расширенное регулярное выражение
-o, —only-matching Печать только IP адресов

Пропускайте опцию -o , если Вы хотите вывести не только IP адреса, но и сами строки в которых они содержатся.

Определяем локацию пользователя по IP

В функционал многих сайтов закладывают функцию определения города посетителя (клиента). Плюсы этого очевидны, фирмы с филиалами в разных городах могут показывать разные номера телефонов, интернет магазины могут сразу предложить подходящий тариф доставки и многое другое. Для решения данного рода задачи подойдет использование баз GeoIP, но главное помнить что точность данных не будет 100%.

Для определения локации пользователя по его IP-адресу нужно, где то раздобыть базу данных GeoIP или обратится к сервису.

Сервис ipinfo.io есть возможность пользоваться и бесплатно если запросов не много.

Пример как можно получить данные в PHP:

В ответ мы получаем данные ( пример):

Так же данные можно получить и на стороне клиента с использованием jQuery:

Валидатор ботов

Так называемый «Валидатор ботов» проверяет IP адреса на принадлежность Хосту поисковой системы. На данный момент он идентифицирует роботов поисковых систем: Google, Яндекс, Mail.ru и Bing. Список IP адресов (по одному IP в строке) вставляем в форму «Форма валидатора ботов» и нажимаем кнопку проверки.

В этой колонке отображаются проверяемые IP адреса. Каждый из IP адресов можно проверить в глобальной системе «AbuseIPDB» (пока это самая «знающая» база по отзывам IP адресов, которую мне удалось встретить) перейдя по ссылке интересующего IP адреса. На многие адреса уже есть отзывы специалистов, скорее всего они развеят сомнения у Вас, блокировать IP или нет.

Тут ничего особенного, просто отображается Хост IP адреса, по которому будет проводиться проверка, принадлежит ли данный IP официально заявленным Хостам поисковых систем. В основном отображение Хоста помогает в дальнейшем находить несоответствия Маскировок.

Валидность


Если Хост совпадает с Хостами (которые официально заявлены поисковыми системами), то в колонке «Валидность» указывается какой поисковой системе принадлежит IP адрес. Если же в базе соответствий не найдены совпадения, в колонке «Валидность» будет пометка «Маскировка», означающая, что данный IP маскируется под поискового робота и просто «тырит» содержимое Вашего сайта. Что с ним делать решайте сами, часто маскируемые боты по одному и тому же IP появляются 1-2 раза и каждый раз блокировать их по IP не всегда бывает целесообразно, в общем смотрите по ситуации — анализируйте.

Про ботов «Mail.RU_Bot»

На сегодняшний день боты компании Mail.ru (как показывает мой личный опыт) некорректно идентифицируют себя при запросах на сайты. К примеру если у роботов Google и Яндекс хосты явно указывают на принадлежность к компании и DNS записи соответствуют их указаниям, то у Mail.ru это остается загадкой и как правило обратный DNS запрос может возвращать «DNS Record not found». По этой причине мой валидатор для некоторых ботов «Mail.RU_Bot» может возвращать «Маскировка».

Если при проверки в моем валидаторе выдает «Маскировка», а в логах сайта бот идентифицирует себя как «Mail.RU_Bot», то сделайте так называемый «обратный запрос DNS» (Reverse DNS Lookup) используя, например, сервис MXToolBox.

Форма валидатора ботов

Вы можете проверить сразу несколько IP адресов используя построчный список (каждый IP с новой строки).

Проверка валидности ip адреса

Пример #1 Валидация e-mail адреса, используя функцию filter_var()

= ‘joe@example.com’ ;
$email_b = ‘bogus’ ;

if ( filter_var ( $email_a , FILTER_VALIDATE_EMAIL )) <
echo «E-mail адрес ‘ $email_a ‘ указан верно.\n» ;
>
if ( filter_var ( $email_b , FILTER_VALIDATE_EMAIL )) <
echo «E-mail адрес ‘ $email_b ‘ указан верно.\n» ;
> else <
echo «E-mail адрес ‘ $email_b ‘ указан неверно.\n» ;
>
?>

Результат выполнения данного примера:

Пример #2 Валидация IP-адреса, используя функцию filter_var()

if ( filter_var ( $ip_a , FILTER_VALIDATE_IP )) <
echo «IP-адрес ‘ $ip_a ‘ указан верно.» ;
>
if ( filter_var ( $ip_b , FILTER_VALIDATE_IP )) <
echo «IP-адрес ‘ $ip_b ‘ указан верно.» ;
>
?>

Результат выполнения данного примера:

Пример #3 Дополнительные параметры функции filter_var()

= ‘1’ ;
$int_b = ‘-1’ ;
$int_c = ‘4’ ;
$options = array(
‘options’ => array(
‘min_range’ => 0 ,
‘max_range’ => 3 ,
)
);
if ( filter_var ( $int_a , FILTER_VALIDATE_INT , $options ) !== FALSE ) <
echo «Число A ‘ $int_a ‘ является верным (от 0 до 3).\n» ;
>
if ( filter_var ( $int_b , FILTER_VALIDATE_INT , $options ) !== FALSE ) <
echo «Число B ‘ $int_b ‘ является верным (от 0 до 3).\n» ;
>
if ( filter_var ( $int_c , FILTER_VALIDATE_INT , $options ) !== FALSE ) <
echo «Число C ‘ $int_c ‘ является верным (от 0 до 3).\n» ;
>

$options [ ‘options’ ][ ‘default’ ] = 1 ;
if (( $int_c = filter_var ( $int_c , FILTER_VALIDATE_INT , $options )) !== FALSE ) <
echo «Число C ‘ $int_c ‘ является верным (от 0 и 3).» ;
>
?>

Валидация email адресов — как важная мера для поддержания гигиены базы подписчиков

Чистые списки email адресов, высокие показатели доставляемости и высокая репутация отправителя — это польза, которую вы, как отправитель рассылки, можете извлечь из валидации списков подписчиков.

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

Содержание

Что такое валидация email адресов

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

Три шага проверки email на валидность:

  1. Проверка формата и синтаксиса адреса.

На первом этапе проверяется соответствие email адреса общепринятым стандартам. Также выявляются ошибки в обоих частях адреса — локальной (до символа @) и в доменной (после символа @). Это могут быть пробелы, лишние и не характерные символы, отсутствие символа @ и так далее.

  1. Верификация домена и сервера.

После подтверждения синтаксиса и формата идет проверка подлинности и активности DNS-записей. На этом же этапе проверяется подлинность MX-записи, а также ее способность получать письма.

  1. Подтверждение почтового ящика.

На последнем этапе подтверждается существование самого почтового ящика, а также проверяется, не переполнен ли он. Такая проверка проходит по протоколу SMTP. Инструмент, с помощью которого происходит проверка, пингует конкретный email адрес сообщениями EHLO или HELO и фиксирует ответ сервера. Если он есть, то ящик считается валидным и активным.

Типы инструментов для валидации email адресов

Существует две категории инструментов для валидации email адресов: приложения и SaaS (software-as-a-service, буквально — «программа в качестве сервиса»). Приложение надо скачать и установить на компьютер, в то время как SaaS решения доступны в онлайне, поэтому работать с ними можно через веб-браузеры на любых устройствах.

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

Стоимость валидаторов

Компьютерные приложения доступны по стоимости, так как обычно пользователь приобретает лицензию на использование инструмента на одном рабочем месте. Как правило, такие программы позволяют верифицировать неограниченное число email адресов. В случае онлайн-инструментов, клиент платит за месячную подписку и/или за количество верификаций, доступных в течение месяца.

Количество пользователей продукта

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

С SaaS инструментами ситуация отличается: пользователь может войти в аккаунт на сайте провайдера услуги с любого устройства, имеющего веб-браузер. При этом часто один аккаунт могут использовать несколько сотрудников. Некоторые онлайн-валидаторы позволяют ограничить доступ к аккаунту, открыв его лишь для нужных IP-адресов.

Сохранность данных

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

С другой стороны, если с этим компьютером что-то случится, вы можете потерять всю базу данных. Поэтому всегда нужно иметь свежую резервную копию списков на внешнем накопителе или на другом компьютере. В то же время, если вы проверяете ваши списки подписчиков онлайн-валидатором, вся информация хранится на сервере провайдера этого сервиса — в вашем аккаунте, защищенном от вирусов. Но опять же, никакой сервис не застрахован от сбоев и утечек пользовательских данных, так что не помешает завести привычку делать резервные копии списков.

Безопасность IP-адреса

Несмотря на ряд преимуществ, интенсивное использование десктоп-валидаторов подвергает опасности репутацию вашего IP-адреса. Почтовые серверы, на которых находятся ящики ваших подписчиков, могут принять верификационные запросы за спам-атаку, и в ответ вы получите ложные статусы проверки почтовых аккаунтов.

В худшем случае, ваш IP может быть занесен в черные списки антиспам-служб. Конечно, всегда можно подобрать прокси-серверы для маскировки IP-адреса, но за надежные прокси придется заплатить, что повысит затраты на кампанию в целом.

Онлайн-валидаторы списков рассылки

1. Snov.io Verifier многошаговый онлайн-валидатор, который проверяет синтаксис email адреса, его формат, домен и валидность МХ-записи почтового аккаунта. Кроме того, Snov.io пингует каждый email адрес простым техническим запросом чтобы подтвердить его существование на почтовом сервере. Можно проверять списки подписчиков прямо в вашем аккаунте или использовать API.

Пример отчета верификации в Snov.io Verifier

2. Correct.email Verifier тоже работает со списками любого размера. Вот как выглядит результат проверки email адресов в этом сервисе:

Пример проверки email адресов в Correct.email Verifier

3. BriteVerify Email Verifier еще один SaaS инструмент. Валидация адресов проходит те же три этапа: проверка синтаксиса, подтверждение домена, пингование почтового ящика. Этот валидатор позволяет проверять списки любого размера, как в режиме реального времени, так и по API.

Пример отчета верификации в BriteVerify Email Verifier

Как предотвратить попадание в списки невалидных адресов

Email валидаторы — инструменты для исправления ошибок, которые уже случились. Но еще лучше предотвратить попадание невалидных адресов в ваши списки, не так ли? Для этого следуйте трем простым приемам.

Применяйте метод подписки double opt-in

Иногда, вводя свой email в форму подписки, люди случайно нажимают не ту клавишу или добавляют лишний пробел или символ. Double opt-in не дает некорректно указанному адресу попасть в список получателей рассылки. Сначала клиент вводит свой email адрес в форму подписки, потом ему нужно зайти в почтовый ящик, открыть регистрационное письмо и перейти по ссылке для подтверждения подписки.

Пример письма подтверждения подписки на блоге SendPulse

Если подписчик изначально указал неправильный email адрес, то он просто не получит письмо подтверждения.

Следите за статистикой ошибок доставки

Не забывайте проверять статистику результатов отправки рассылки — особое внимание уделяйте данным по невалидным и несуществующим адресам. SendPulse, например, предоставляет подробные отчеты по ошибкам доставки писем. Вот, как они выглядят:

Пример статистики рассылок в сервисе SendPulse

Статистика ошибок в SendPulse показывает такие статусы:

«Временно недоступен» — одна или несколько попыток доставки email сообщения по указанному количеству получателей оказались неудачными, но попытки продолжаются. Последняя отправка письма закончилась неудачно по не зависящим от сервиса причинам: возможно, почтовые сервера адресатов были недоступны или отказались принять письмо.

«Адрес не существует» — доставка не удалась, потому что указанного адреса получателя не существует на текущем домене.

«Отклонено сервером как спам» — письмо отклонено сервером адресата, как спам. Это произошло потому, что во время последней отправки почтовый сервер получателя отказался принимать письмо, квалифицировав его как спам. Также причиной данной ошибки может стать заблокированный адрес получателя.

«Почтовый ящик получателя переполнен» — почтовый ящик получателя полностью заполнен, а значит, новым email сообщениям нет в нем места. В таком случае адрес становится временно недоступным, а повторная отправка осуществляется минимум через три дня.


«Адресат считает письмо спамом» — в случае если от получателя рассылки приходит жалоба на спам, его адрес добавляется в список постоянной недоступности.

«Доставка не удалась по иным причинам» — доставка сообщения рассылки на сервер адресата не удалась по иным причинам, о которых не было получено достаточно детальной информации. Часто причиной этому могут стать неправильные настройки почтового сервера у получателя.

«Домен не существует» — указанный в домен не существует и доставка сообщений рассылки на указанный адрес получателя невозможна.

Всегда просматривайте отчеты отправки и проверяйте email адреса на валидность для предотвращения ошибок.

Сегментируйте и реактивируйте подписчиков

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

  1. 1-6 месяцев назад;
  2. 6-12 месяцев назад;
  3. Больше года назад.

После этого, составьте график реактивации. Отправьте реактивационную рассылку подписчикам из первой группы, потом попробуйте реактивировать вторую группу, а после этого, смешайте адреса из третьей группы с теми подписчиками из первой и второй групп, которые откликнулись на ваши реактивационные письма.

Автоматизация email рассылок

Отправляйте цепочки триггерных сообщений приветствия, брошенной корзины, реактивации, совмещая внутри одной цепочки email, SMS и web push.

На протяжении всего периода реактивации следите за количеством баунсов в ящике, с которого ведется рассылка. Как только вы заметите увеличение их количества, прекратите отправку таких писем и удалите неактивных подписчиков из адресных книг.

Подведем итоги

Для того, чтобы содержать адресные книги в чистоте и предотвращать ошибки доставки, помните о трех принципах:

1. Используйте double opt-in чтобы получать только верные email адреса.

2. Заведите аккаунт в онлайн-валидаторе и проверяйте адреса перед отправкой рассылки.

3. Сегментируйте клиентов по дате подписки и старайтесь реактивировать их, следя за статистикой ошибок отправки и за жалобами на спам.

Сервис проверки анонимности и IP адреса

Существует множество сайтов, где можно проверить свой IP адрес и другие сетевые параметры. Такие проверки помогают понять, что может выдать реальное местоположение.

Многие годы мы пользовались проверками на сайтах Whoer и 2IP и рекомендовали их нашим клиентам.

Почему мы сделали свою проверку анонимности и IP адреса?

Наш VPN и прокси сервис связан с анонимностью, поэтому мы сами часто посещали эти сайты и проверяли IP адрес. В результате бесконечного количества тестов мы стали замечать баги и неточности при работе этих сайтов.

Мы писали, чтобы они убрали баг с некорректным определением DNS сервера.

Сайт определяет главный IP адрес сервера и указывает его в списке DNS серверов. Если выполнить DNS запрос, используя главный IP адрес сервера командой nslookup google.com [IP сервера], то такой запрос не будет выполнен. Это говорит о том, что данный IP адрес не является DNS сервером и его не нужно добавлять в список DNS серверов на сайте.

Другой баг связан с определением анонимности через модуль p0f и интерпретацией данных.

Модуль p0f умеет определять значения MTU и сравнивать его с эталонными значениями MTU для VPN с разными типами шифрования. Если значение MTU соответствует какому-то типу VPN из таблицы эталонных значений, то p0f говорит об использовании VPN. Если определенного значения MTU нет в базе и оно меньше 1400, то p0f всегда показывает, что определен VPN.

Разработчики p0f не учли, что системный администратор может вручную изменить значение MTU для соединений и тогда ВСЕ подключения будут считаться VPN подключениями. В результате эту ошибку не исправили и на сайте проверки IP адреса и всегда показывается, что определен VPN.

Нас не услышали и проверки на тех сайтах работают также с ошибками.

Проверка анонимности на примере фактов, а не домыслов

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

Мы хотели сделать проверку анонимности такой, чтобы она носила точный характер. Мы стали экспертами по проверкам анонимности и сейчас хотим рассказать вам какие проверки основаны на фактах, а какие на домыслах.

Творчество на стыке технологий

Мы пересмотрели проверки анонимности на более чем 10 сайтах и выбрали все самое важное. Затем объединили проверки со всех популярных сайтов проверки IP адреса в удобную таблицу. Теперь можно на одной странице узнать все о своей анонимности.

Итак, разберем все проверки подробно.

Цветной баннер

По баннеру можно сразу понять — Все отлично или Есть над чем задуматься.

Баннер имеет 3 цвета: красный, желтый и зеленый. Только зеленый баннер гарантирует совершенную анонимность.

Проверка IP адреса и DNS серверов

Основной блок проверяет IP адреса и DNS сервера разными способами. Проверки реализованы через PHP, JavaScript, технологии WebRTC, Flash и Java. Если страны будут отличаться, то они будут подчеркнуты красным цветом.

Проверка Геолокации через HTML 5 вынесена в отдельную кнопку, так как она представляет высокую опасность обнаружения реального местоположения, если вы используете включенный модуль Wi-FI на вашем устройстве.

Функция Геолокации через HTML 5 берет координаты GPS устройства от модуля Wi-Fi в обход VPN, прокси, TOR и всех других способов оставаться анонимным. Мы рекомендуем использовать проводное Ethernet подключение и отключать модуль Wi-Fi.

Супер Проверка анонимности

IP адрес проверяется на наличие в Блэклисте. Если IP адрес занесен в Блэклист, то некоторые сервисы могут блокировать этот IP адрес (например, блокировать доставку почты с этого IP адреса). Наличие IP адреса в Блэклисте никак не влияет на вашу анонимность.

В Интернете есть список открытых нодов сети Tor. Если IP адрес находится в этом списке, значит вы используете сеть TOR. Вы анонимны, но значит вам есть что скрывать и некоторые веб-сайты могут блокировать свой контент для таких пользователей.

Proxy HTTP Header

Proxy HTTP Header проверяет на наличие отпечатков прокси в заголовках браузера. Используйте анонимные прокси или socks 5 протокол, чтобы избежать обнаружения.

Proxy fingerprint на основе модуля p0f проверяет отпечатки браузера на использование прокси.

Основное предназначение VPN fingerprint – это выявить использование VPN. Модуль p0f узнает значение MTU соединения и на основании этого делает вывод об использовании VPN.

Как мы писали в начале статьи мы исключили некорректный вывод данных в модуле p0f и оставили только значения, которые 100% утверждают об использовании VPN. В результате этого мы получили правдивую оценку вашей анонимности.

Следует также отметить, что модуль p0f не успевает развиваться за технологиями VPN и содержит устаревшие штампы определения VPN соединений.

Двусторонний пинг между клиентом и сервером помогает определить наличие туннеля (обычно VPN или прокси туннеля). Если значения пинга сильно отличаются между собой, то это говорит об использовании туннеля.

Открытые порты проверяются на указанном IP адресе. Если на IP адресе открыты стандартные порты VPN и прокси, то велика вероятность, что вы скрываете свое реальное местоположение. Интернет-провайдеры всегда блокируют указанные порты.

Например, стандартный порт OpenVPN 1194, Socks прокси 1080, IPSec VPN 4500 и 500, веб прокси использует 8080 порт.

Мы используем расширенный список стандартных портов и проверяем TCP и UDP подключения. Если мы находим открытый порт из таблицы, то это говорит о том, что на этом IP адресе используется VPN или прокси. Вы остаетесь анонимными, но веб-сайты могут ограничивать контент для таких пользователей.

Проверка часового пояса

Сравнивается ваш часовой пояс, установленный локально на устройстве и часовой пояс, который используется для этой страны по IP адресу. Если они отличаются, то подчеркивается красным.

Проверка операционной системы

Показываются значения, полученные из заголовков браузера, через JavaScript, модуль p0f и определяется операционная система.

Проверка браузера

Проверяются заголовки браузера, через JavaScript, модуль p0f и определяется версия браузера и используемый язык в браузере. Настройте браузер так, чтобы показывались языки, используемые в стране по IP адресу.

Включенные технологии

Мы проверяем включены ли у вас технологии, которые могут рассказать о вашем реальном местоположении.

Мы рекомендуем отключать эти технологии для совершенной анонимности. Некоторые веб-сайты могут некорректно работать без указанных технологий.

Наш веб-сайт для корректной работы требует только наличия JavaScript и Cookies. Мы работаем над тем, чтобы избавить наш сайт от этих требований.

Наша страница Проверки анонимности и IP адреса полностью заменяет использование всех других сайтов. Мы пересмотрели более 10 разных сайтов, чтобы собрать все важные проверки на 1 странице.

Если у вас есть предложения и пожелания, то мы будем рады о них узнать. Напишите в раздел Задать нам вопрос.

Станьте экспертом!

Получите больше информации о том, как быть анонимным в Интернете.
Получите знания в 1 клик

Илон Маск рекомендует:  Faq глюки timage
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL