CMS анализатор

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63
Ребята, подскажите пожалуйста код сниппета для анализатора движков сайтов (CMS). (думаю что не только мне это будет полезно.)
Программа должна искать в сорс-коде страницы признаки движков сайтов.

Программма должна быть поддерживаемой (чтобы можно было с лёгкостью в неё добавить новые движки и их признаки без особых знаний)
Например, у нас есть какое-то количество признаков (кусков кода) - DLE(dle_root|dle-speedbar|dle-content).
Их может быть от одного до n-го количества.

Программа берет признак и ищет его в сорс-коде страницы.
Если находит, то берет второй признак и ищет его. Ищет третий признак (тут смысл в том чтобы наиболее точно орпеделить на каком движке стоит сайт, поэтому желательно искать нескольк признаков одной CMS.)
Если не находит больше 2-х признаков, то ничего страшного.
return engine; (в данном случае результат будет "DLE")


Код:
string golink = project.Variables["golink"].Value;
string engine;

//переходим по ссылке
Tab tab = instance.ActiveTab;
    tab.Navigate(golink);

//Получаем исходный код страницы
string source = instance.ActiveTab.GetSourceText("utf-8");

//Ищем в source коде страницы признаки CMS
.........................не имею представления как это всё реализовать )))
 

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63

schnaps

Client
Регистрация
07.02.2010
Сообщения
837
Благодарностей
150
Баллы
43
ну парси страницу своими признаками :-)
ищи есть ли они в ней или нету. один признак одна строчка кода, потом циклом анализ чего напарсили
 

Hungry Bulldozer

Moderator
Регистрация
12.01.2011
Сообщения
3 441
Благодарностей
831
Баллы
113
А те что есть в других софтах чем не устраивают?
 

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63
А те что есть в других софтах чем не устраивают?
Зачем ещё что-то делать руками (брать результат работы зеннопостера и прогонять какой-то другой программой)?
ЗенноПостер и предназначен для автоматизации процессов без участия человека =)

Не силён в программировании, поэтому и спрашиваю решение у знатоков.
 

Baramon

Client
Регистрация
15.07.2011
Сообщения
316
Благодарностей
31
Баллы
28
Ну так вам и отвечают, берете парсите по признакам, и дальше реализуете что вам нужно.

Кнопку Бабло еще не встроили, все равно нужно что то делать иначе толку не будет
 

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63
Вот, написал кое-как. Ищет по какому-нибудь одному признаку.
Чтобы искало по нескольким признакам, пока-что не придумал как реализовать.
Код:
//Получаем исходный код страницы активной вкладки
string source = instance.ActiveTab.GetSourceText("utf-8");

int num_string = -1;
string cms_engine;

//Признаки DLE
string dle_1 = System.Text.RegularExpressions.Regex.Escape(@"dle_root");
string dle_2 = System.Text.RegularExpressions.Regex.Escape(@"dle-speedbar");
string dle_3 = System.Text.RegularExpressions.Regex.Escape(@"dle-content");

//Признаки Wordpress
string wp_1 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресса1");
string wp_2 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресс2");
string wp_3 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресса3");
string wp_4 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресса4");

//Составляем регулярки
string dle = "(" + dle_1 + "|" + dle_2 + "|" + dle_3 + ")";
string wp = "(" + wp_1 + "|" + wp_2 + "|" + wp_3 + "|" + wp_4 + ")";

//Создаём список и добавляем в него строки с регулярками
List<string> list = new List<string>();
	list.Add(dle); //DLE
	list.Add(wp); //WORDPRESS
			
for (var i = 0; i < list.Count; i++)
{
	var reg = new System.Text.RegularExpressions.Regex(list[i],  System.Text.RegularExpressions.RegexOptions.None);
	var result_match = reg.Matches(source).Count;
	var finded = reg.Matches(source);
	
	if (result_match >= 1)
	{
		var finded_text = list[i];
		num_string = list.IndexOf(finded_text);
		break;
	}
}

switch (num_string) {
	case 0:
		cms_engine = "DLE";
		break;
	case 1:
		cms_engine = "WordPress";
		break;
	default:
		cms_engine = "unknown";
		break;
}

return cms_engine;
 
  • Спасибо
Реакции: bedl0

Hazar

Client
Регистрация
05.12.2018
Сообщения
107
Благодарностей
19
Баллы
18
Вот, написал кое-как. Ищет по какому-нибудь одному признаку.
Чтобы искало по нескольким признакам, пока-что не придумал как реализовать.
Код:
//Получаем исходный код страницы активной вкладки
string source = instance.ActiveTab.GetSourceText("utf-8");

int num_string = -1;
string cms_engine;

//Признаки DLE
string dle_1 = System.Text.RegularExpressions.Regex.Escape(@"dle_root");
string dle_2 = System.Text.RegularExpressions.Regex.Escape(@"dle-speedbar");
string dle_3 = System.Text.RegularExpressions.Regex.Escape(@"dle-content");

//Признаки Wordpress
string wp_1 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресса1");
string wp_2 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресс2");
string wp_3 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресса3");
string wp_4 = System.Text.RegularExpressions.Regex.Escape(@"признак вордресса4");

//Составляем регулярки
string dle = "(" + dle_1 + "|" + dle_2 + "|" + dle_3 + ")";
string wp = "(" + wp_1 + "|" + wp_2 + "|" + wp_3 + "|" + wp_4 + ")";

//Создаём список и добавляем в него строки с регулярками
List<string> list = new List<string>();
    list.Add(dle); //DLE
    list.Add(wp); //WORDPRESS
           
for (var i = 0; i < list.Count; i++)
{
    var reg = new System.Text.RegularExpressions.Regex(list[i],  System.Text.RegularExpressions.RegexOptions.None);
    var result_match = reg.Matches(source).Count;
    var finded = reg.Matches(source);
   
    if (result_match >= 1)
    {
        var finded_text = list[i];
        num_string = list.IndexOf(finded_text);
        break;
    }
}

switch (num_string) {
    case 0:
        cms_engine = "DLE";
        break;
    case 1:
        cms_engine = "WordPress";
        break;
    default:
        cms_engine = "unknown";
        break;
}

return cms_engine;
Ну как нашли решение?
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)