Pull to refresh
37
@AlexeyKhread⁠-⁠only

User

Send message
Если вы статью прочитали и даже нашли время что-то по ней отписать, значит «рекламщики» все сделали правильн
Это же другое совершенно…
Какое решение кроме использования пула различных IP-адресов на сетевом адаптере видите? )
К сожалнию, не нашёт такой информации.
Но, боюсь предположить, что она не нахидтся в открытом доступе на серверах WHOIS, т.к. такие как reg.ru эту историю продают и даеко не для всех зон (или вообще только ru, su, рф).
Парсинг — это не проблема, просто немного муторно. Распарсить текст сможет программист любого уровня и для этого не нужно ничего искать в сети.
Здесь не стал уж вставлять простыни кода парсинга… Каждому нужно что-то получить своё в данных whois
Мне лично были интересны ns-сервера.
Для парсинга их написал
такую функцию ->
public static List<string> ParseNameServers(string whoisData){
    if (string.IsNullOrEmpty(whoisData)) return null;
    List<string> result = new List<string>();
    whoisData = whoisData.ToLower().Replace("\r\n", "\n").Replace("\r", "\n");
    foreach (string line in whoisData.Split('\n'))
        if (line.Length > 0){
            int sep = line.IndexOf(":");
            if (sep > 0){
                string param = line.Substring(0, sep).ToLower();
                if (param.Contains("n") && param.Contains("server")){
                    string nameServer = line.Substring(sep + 1, line.Length - sep - 1).Trim().ToLower();
                    while (nameServer.Length > 0 && nameServer.Substring(nameServer.Length - 1, 1) == ".")
                        nameServer = nameServer.Substring(0, nameServer.Length - 1);
                    if (nameServer.Length > 0 && nameServer.Contains(".") && !result.Contains(nameServer))
                        result.Add(nameServer);
                }
            }
        }
    if (result.Count == 0 && whoisData.Contains("ns server")) {
        bool startFound = false;
        foreach (string line in whoisData.Split('\n'))
            if (line.Contains("ns server")) startFound = true;
            else if (startFound){
                string nameServer = FormatDomainName(line);
                if (!ValidateDomainName(nameServer, false)) break;
                if (nameServer.Length > 0 && nameServer.Contains(".") && !result.Contains(nameServer))
                    result.Add(nameServer);
            }
    }
    return result;
}

public static string FormatDomainName(string value){
    if (string.IsNullOrEmpty(value)) return value;
    value = value.Trim().ToLower().Replace(",", ".");
    while (value.Contains("..")) value = value.Replace("..", ".");
    while (value.Length > 0 && value.Substring(0, 1) == ".") value = value.Substring(1, value.Length - 1).Trim();
    while (value.Length > 0 && value.Substring(value.Length - 1,1) == ".") value = value.Substring(0, value.Length - 1).Trim();
    return value;
}

private static string _symbols = "abcdefghijklmnopqrstuvwxyz0123456789-.";
public static bool ValidateDomainName(string value, bool onlySecondLevelDomains){
    if (string.IsNullOrEmpty(value)) return false;
    value = value.Trim().ToLower();
    int dotCount = 0;
    for (var a = 0; a < value.Length; a++){
        if (value.Substring(a, 1) == ".")
            dotCount++;
        if (!_symbols.Contains(value.Substring(a, 1)))
            return false;
    }
    return onlySecondLevelDomains ? dotCount == 1 : dotCount > 0;
}

Vscale — это проект Selectel, если я не ошибаюсь…
Ваш аккаунт по приглашению от пользователя, работающего в компании Selectel…
Это точно независимый обзор? )

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity