[Закрываются] семантические различные утилиты

Решил проблему.

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

headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Mobile Safari/537.36'
}

Оказалось, что мне пришлось включить все заголовки ответа, отправленные на сервер для запроса (найденные с помощью инструментов разработчика Chrome), как так:

headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.9',
    'Connection': 'keep-alive',
    'Cookie': 'Cookie; Cookie',
    'DNT': '1',
    'Host': 'e2.kase.gov.lv',
    'Referer': 'https://e2.kase.gov.lv/pub5.5_pasv/code/pub.php?module=pub',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Mobile Safari/537.36'
}
104
задан Paŭlo Ebermann 23 October 2011 в 22:48
поделиться

5 ответов

Eclipse имел эту функцию в течение долгого времени. Это называют "Структурой, Выдерживают сравнение", и это очень хорошо. Вот демонстрационный снимок экрана для Java, сопровождаемого другим для XML-файла:

(Отмечают минус и плюс значки на методах в верхней области.)

Eclipse's Java Structure Comparer Eclipse's XML Structure Comparer

29
ответ дан Hosam Aly 24 November 2019 в 04:12
поделиться

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

" А Мелкомодульный Структурный Подход Сравнения XML " заканчивается, частично с:

Наше теоретическое исследование, а также наша экспериментальная оценка показало, что предложенные урожаи метода улучшили структурные результаты подобия относительно существующих альтернатив, при наличии той же временной сложности (O (N^2))

(шахта акцента)

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

12
ответ дан Răzvan Flavius Panda 24 November 2019 в 04:12
поделиться

Решение этого шло бы на основание языка. Т.е. если это не разработано со сменной архитектурой, которая задерживает большой парсинг кода в дерево и семантическое сравнение с языком определенный плагин тогда, будет очень трудно поддерживать несколько языков. Для какого языка (языков) Вы заинтересованный наличием такого инструмента. Лично я любил бы один в C#.

Для C# существует дополнение разности блока к Отражателю, но это только делает разность на IL не C#.

можно загрузить различное дополнение здесь [zip] или перейти к проекту на codeplex сайте сюда .

2
ответ дан Jonathan Parker 24 November 2019 в 04:12
поделиться

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

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

См. наш http://www.semanticdesigns.com/Products/SmartDifferencer/index.html для механизма сравнения на основе синтаксического дерева, который работает со многими языками, который приведенное выше приближение.

РЕДАКТИРОВАТЬ Январь 2010: Доступны версии для C ++, C #, Java, PHP и COBOL. На веб-сайте приведены конкретные примеры для большинства из них.

ИЗМЕНИТЬ, май 2010: добавлены Python и JavaScript.

ИЗМЕНИТЬ, октябрь 2010: добавлен EGL.

ИЗМЕНИТЬ, ноябрь 2010: добавлены VB6, VBScript, VB.net

14
ответ дан 24 November 2019 в 04:12
поделиться

Компания под названием Zynamics предлагает семантический дифференциальный инструмент двоичного уровня. Он использует мета-монтажный язык, называемый Reil для выполнения теоретического анализа графиков 2 версий двоичных и создает график с цветовой кодировкой для иллюстрации различий между ними. Я не уверен в цене, но я сомневаюсь, что это бесплатно.

2
ответ дан 24 November 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: