CMS анализатор

  • Автор темы Автор темы surrealmix
  • Дата начала Дата начала

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
.........................не имею представления как это всё реализовать )))
 
ну парси страницу своими признаками :)
ищи есть ли они в ней или нету. один признак одна строчка кода, потом циклом анализ чего напарсили
 
А те что есть в других софтах чем не устраивают?
 
А те что есть в других софтах чем не устраивают?

Зачем ещё что-то делать руками (брать результат работы зеннопостера и прогонять какой-то другой программой)?
ЗенноПостер и предназначен для автоматизации процессов без участия человека =)

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

Кнопку Бабло еще не встроили, все равно нужно что то делать иначе толку не будет
 
Вот, написал кое-как. Ищет по какому-нибудь одному признаку.
Чтобы искало по нескольким признакам, пока-что не придумал как реализовать.
Код:
Развернуть Свернуть Копировать
//Получаем исходный код страницы активной вкладки
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
Вот, написал кое-как. Ищет по какому-нибудь одному признаку.
Чтобы искало по нескольким признакам, пока-что не придумал как реализовать.
Код:
Развернуть Свернуть Копировать
//Получаем исходный код страницы активной вкладки
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;
Ну как нашли решение?
 

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