Решил проблему.
Ранее, когда имитировали браузер, я использовал только следующие заголовки:
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'
}
Eclipse имел эту функцию в течение долгого времени. Это называют "Структурой, Выдерживают сравнение", и это очень хорошо. Вот демонстрационный снимок экрана для Java, сопровождаемого другим для XML-файла:
(Отмечают минус и плюс значки на методах в верхней области.)
То, что Вы нащупываете, является "древовидной разностью". Оказывается, что это намного более твердо преуспеть, чем простая ориентированная на строку текстовая разность, которая является действительно просто сравнением двух плоских последовательностей.
" А Мелкомодульный Структурный Подход Сравнения XML " заканчивается, частично с:
Наше теоретическое исследование, а также наша экспериментальная оценка показало, что предложенные урожаи метода улучшили структурные результаты подобия относительно существующих альтернатив, при наличии той же временной сложности (O (N^2))
(шахта акцента)
Действительно при поиске большего количества примеров дерева differencing, я предлагаю фокусироваться на XML, так как это управляло практическими разработками в той области.
Решение этого шло бы на основание языка. Т.е. если это не разработано со сменной архитектурой, которая задерживает большой парсинг кода в дерево и семантическое сравнение с языком определенный плагин тогда, будет очень трудно поддерживать несколько языков. Для какого языка (языков) Вы заинтересованный наличием такого инструмента. Лично я любил бы один в C#.
Для C# существует дополнение разности блока к Отражателю, но это только делает разность на IL не C#.
можно загрузить различное дополнение здесь [zip] или перейти к проекту на codeplex сайте сюда .
Для правильного "семантического сравнения" вам необходимо сравнить синтаксические деревья языков и учитывать значение символов. Действительно хорошая семантическая разница поймет семантику языка и поймет когда один блок кода был эквивалентен по функциям другому. Собирается для этого требуется средство доказательства теорем, и хотя это было бы чрезвычайно мило, в настоящее время непрактично для реального инструмента.
Работоспособное приближение к этому - простое сравнение синтаксических деревьев и создание отчетов изменения с точки зрения вставленных, удаленных, перемещенных или измененных структур. Подойдя несколько ближе к «семантическому сравнению», можно было бы сообщить когда идентификатор изменяется последовательно в блоке кода.
См. наш http://www.semanticdesigns.com/Products/SmartDifferencer/index.html для механизма сравнения на основе синтаксического дерева, который работает со многими языками, который приведенное выше приближение.
РЕДАКТИРОВАТЬ Январь 2010: Доступны версии для C ++, C #, Java, PHP и COBOL. На веб-сайте приведены конкретные примеры для большинства из них.
ИЗМЕНИТЬ, май 2010: добавлены Python и JavaScript.
ИЗМЕНИТЬ, октябрь 2010: добавлен EGL.
ИЗМЕНИТЬ, ноябрь 2010: добавлены VB6, VBScript, VB.net
Компания под названием Zynamics предлагает семантический дифференциальный инструмент двоичного уровня. Он использует мета-монтажный язык, называемый Reil для выполнения теоретического анализа графиков 2 версий двоичных и создает график с цветовой кодировкой для иллюстрации различий между ними. Я не уверен в цене, но я сомневаюсь, что это бесплатно.