Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Как скачать документ из АИС ЦГАСО-3

Архив ЦГАСО несколько изменил у себя вёрстку и предыдущий способ скачивания работать перестал. Сегодня мне понадобились документы из этого архива, пришлось посмотреть в чём дело.

Для того, чтобы скачать листы дела, вам нужно в браузере (настоятельно рекомендую «Хром», в других браузерах я код не испытывал) перейти в раздел «Требования дел» и открыть на просмотр нужное вам дело (для этого нужно нажать на значок «книжки» в колонце «Действие»).

Дело (38.24КиБ)

Когда дело откроется, нужно открыть панель разработчика (открывается по Ctrl+Alt+I на «Виндоузе» или Cmd+Alt+I на «Маках») и там перейти во вкладку «Консоль» (Console). В этой вкладке вставить нижеприведённый код и нажать «Энтер».

!function () {
    var id = '[id=storageFilesViewerPnl]';
    var bt = '[id$=ForwardBtn]';
    var pages = {};
    var o = document.querySelector(id);

    !function _observe(undefined) {
        var ob = new MutationObserver(function() {
            var imgs = $(id+' img[src*=Pages]:first');
            if (imgs && imgs[0]) {
                var page = imgs[0].src.match(/id=([^&]+)/)[1];
                if (pages[page] == undefined) {
                    pages[page] = true;

                    ob.disconnect();

                    var next = $(bt);
                    if (next && next[0]) {
                        _observe();
                        next[0].click();
                    } else {
                        console.clear();
                        console.log("dxo.itemsValue=['" + Object.keys(pages).join("','")+"'];");
                    }
                }
            }
        });

        ob.observe(o, { childList: true, attributes: true, subtree: true, attributeFilter: ['src'] });
    }();

    o.setAttribute('src', true);
}();

Начнётся пролистывание документа. Запаситесь терпением. Как только оно закончится, на экране появится длинная строка, как на скриншоте ниже. Её надо скопировать в файл целиком.

Длинная строка в «Хроме» (302.25КиБ)

Далее, увы, вам придётся занять компилированием. Как это делается, рассказывать не буду, ищите в интернете. Вам понадобится программа cgodownloader.go из моего репозитория, её надо сохранить к себе на диск и скомпилировать (она написана на Гоу). Ей на вход надо передать имя файла (в моём случае это 150-1-120) и директорию, куда будут сохраняться картинки листов дела (у меня это 150-1-201-pict):

Запуск cgodownloader.go (27.49КиБ)

Когда программа закончит работу, в указанном вами директории будет лежать дело целиком.

81 комментарий
Василий 2015

Спасибо огромное! Ждал, и таки дождался этого поста!)))

Kraut 2015

В winxp, win7 если страниц несколько тысяч хром валится в диапазоне 500-700 страницы с ошибкой.
В Mint 17 еще попробую
До 400-500 свободно проглатывает
От меня тоже огромное спасибо

Константин 2015

Большое Вам спасибо!

Василий 2015

Кстати да, после 500 страницы хром почему-то виснет напрочь.

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Василий:

«Винды» у меня нет, поэтому сказать почему виснет я, увы, не могу.

Kraut 2015

p.s
В Minte дело 2700 листов хром завис напрочь после 920 стр.
Я так понимаю не хватает памяти
В xp увеличил файл подкачки освободил больше места на с: — ноль эмоций

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Kraut:

Очень странно, 2700 значений это не очень-то много. Можно вот так попробовать:

http://pastebin.com/eQ90xJSn

Василий 2015

Так как?:) Я заинтригован, а коммент не дописан.

Василий 2015

Оперативку просто адово ест, кстати.

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Василий:

Так как?:) Я заинтригован, а коммент не дописан.

Как не дописан? Там код приведён.

Константин 2015

Комментарий для Василий:

Если у Вас Мозилла с Noscript, то разрешите pastebin.com, сам только что разобрался.

Василий 2015

Ну у меня это вот так вот выглядит — кода не вижу.

https://fotki.yandex.ru/next/users/non-alcoholic/album/468891/view/1472979?page=0

Василий 2015

Комментарий для Константин:

Вот именно что в трех браузерах просмотрел, антивирус отрубил и все равно ничего не видно. и носкрипта у меня нет. Заговор какой-то:)))

Василий 2015

Все — нашел в коде страницы ссылку на пастбин. Сейчас буду пытаться туда зайти.

Василий 2015

А он не работает — видимо, временные неполадки.

Константин, новый скрипт помог решить проблему?

Константин 2015

Комментарий для Василий:

К сожалению, самое длинное дело на сегодня — 153 листа, постараюсь проверить на след. неделе. Скрипт рабочий.

Kraut 2015

В xp пробовал с новым скриптом, с обновленным флешем (выскакивало окошко обновления), с новым профилем в хроме, запускал прогу очистки памяти (сначала вроде бы помогало, но потом физическая память приблизилась к 99% и 3,4гб и снова завис браузер) — бестолку

Евгений Степанищев (bolknote.ru) 2015

Если увижу у себя проблему, буду править. Но у меня не Виндоуз, проблем пока не наблюдаю.

Василий 2015

На компе с 8 гб оперативки все скачалось — видимо, дело в ее объеме и прожорливости скриптика:)

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Василий:

Возможно, я просто не вижу что могло бы так есть память.

роман 2015

у меня в хроме после ввода скрипта в консоль пишет просто true. тобольский архив. у кого-нибудь пробовал на тобольском?

ml 2015

Плохо знаю JS, но может быть проще понять как по странным значениям из dxo.itemsValue (которые похожи на base64) получить ту GUID, которые на самом деле имена файлов с листами из дел?

Я немного покопался в коде. Видно, что такие псевдо-base64 там используются массово. Не только для сокрытия имён файлов. Если посмотреть на эти строки псевдо-base64 (например ’QNy9j9FDYhfSNXZw4XiMvt7tql8kfe+LcsnM7XIDbd/gHLlYD6Lm2g==’), то видно, что набор символов не отличается от стандартного base64. Причём все такие строки равны 56 байтам. Исходя из того, что base64 кодирует как 4:3 видно, что исходная строка равна 42 байтам. Если принять во внимание финальные == (добавленные для выравнивания), то на самом деле исходная строка всего 40 байт. Что сильно больше GUID, который надо закодировать (16 байт или 32 байта если записывать хексами или 36 байт если считать и разделители).

Я сравнил несколько GUID и соответствующие им псевдо-base64-строки. Между ними явно нет соответствия. То есть это не base64 с заменой символов. Тут или просто использование большого словаря соответствий между GUID (именами файлов) и псевдо-base64-строками. И тогда никакой закономерности и не будет. Или же кодируется GUID, разбавленный по неизвестному алгоритму каким-то мусором.

Не пробовали понять как генерируется код страницы при переходе на другой лист? Многие функции обфусцированы и под отладчиком ходить не очень удобно. Но может быть есть там где-то функция, преобразующая псевдо-base64-строку в GUID? Или же такое преобразование делается через вызов какой-то функции с сервера? Тогда сам алгоритм преобразования нам и не нужен, достаточно дёргать соответствующую серверную функцию и не придётся листать всё дело.

Евгений Степанищев (bolknote.ru) 2015

Комментарий для ml:

Не пробовали понять как генерируется код страницы при переходе на другой лист?

Нет, не пробовал.

Volhvuk 2015

Всем привет!
Значит решил я применить Вашу схему к Тюменскому архиву http://109.233.229.20:81/Pages/Main.aspx
Схема незаработала на этапе компиляции, создала кучу джпегов, которые по сути были html с информацией об ошибке...
Начал изучать код, и понял, что строка запроса несколько отличается от исходной, да и хост не тот.
Было:
const url = ` http://%s/Pages/ImageFile.ashx?level=10%26x=0%26y=0%26tileOverlap=1024%26id=%s%26page=0%26XHDOC=%26archiveId=1%60
const defaulthost=«cgaso.regsamarh.ru»
Сделал:
const url = ` http://%s/Pages/ImageFile.ashx?level=10%26x=0%26y=0%26tileSize=256%26tileOverlap=1%26id=%s%26page=0%26rotation=0%60
const defaulthost=«109.233.229.20:81»
В итоге качались только первые куски с координатами по х/у 0/0. А потом и вообще сайт архива застрелился. =)
Service Unavailable
HTTP Error 503. The service is unavailable.
Подождём-с когда поднимут, да послушаем мнение авторитетных товарищей. Что скажите?

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Volhvuk:

Лично я — ничего не скажу. Тюменский архив я не использую и не планирую.

Evgesha(scorpion_dev@mail.ru) 2015

Уважаемый bolknote.ru, если взялся за гуж, не говори что не гуж, не набивай себе цену, не к лицу, скажи в личку, что надо, и сделай для Тюмени, мне жалко времени своего для копирования(принкринов), у меня 6 деревень, в каждой деревне по 10 книг, и это мое древо, и злого умысла не вижу, пишу в фейсбук, не отвечаешь. Ведь главное в жизни это результат, а его пока нет, только куски и никакой конкретики, удали тогда свой пост, смысл с него, если ничего не понятно, а желания объяснить нету, проблему не в том, что народ тупой, проблема в том, что наставник из тебя никудышный.. Evgesha(scorpion_dev@mail.ru)

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Evgesha(scorpion_dev@mail.ru):

Я не собираюсь кого-то учить, наставлять или просвещать. Всё это я делаю для себя, блог веду тоже для себя. Если кто-то пользуется результатами моих трудов, я не против, но и только.

удали тогда свой пост

Что за бред? Почему я должен в своём блоге что-то удалять?

Volhvuk 2015

Комментарий для Volhvuk:

Нда, грубовато конечно Евгеша =)
И всё же, я думаю принцип работы в обоих архивах одинаковый, так как один и тот же софт у них стоит. Евгений, хотел вас попросить глянуть, что я не так делаю...
Общая картинка состоит так же из кусков с координатами x / y
Но у меня почему то скачивается только первый кубик с координатами 0/0, а приклеивания других кусочков не происходит.
НО, разобрался сам =) Спасибо. Вот только не пойму зачем они собирают мозайку из кучи мелких обрезков одного и того же файла, ведь по сути обращаются к одной и той же картинке. Они сами себе сервер перегружают запросами, только ради того, что бы запутать людей =)

Evgesha(scorpion_dev@mail.ru) 2015

Volhvuk если получилось, помоги другим, про кубики с координатами, давно увидел, и вина тому насколько понял не архив и ПО, а браузеры, чтобы наоборот увеличить скорость загрузки, за счет многопоточности.
А на счет высказывания это не грубо, а правда, не люблю лебезить,
Искренне считаю, если человек знает, всегда скажет что не так, хоть ночью разбуди, а здесь одна показуха, я разработчик, но типа я не консультирую, да бред это,
Вот если я сейчас знаю, то и могу рассказать свободно. как и чего достиг:
Операционная система Windows профессионал, 7, 64
Зашел на сайт архива http://109.233.229.20:81/%28%D1%83 меня есть предварительная регистрация)
выбрал архив с 5 листами(маленький для пробы)
На ПК уже предварительно установлен ХРОМ, согласно требованиям разработчика
Из поста > Как скачать документ из АИС ЦГАСО-3
скопировал текст программы и выполнил рекомендации

Когда дело откроется, нужно открыть панель разработчика (открывается по Ctrl+Alt+I на «Виндоузе» или Cmd+Alt+I на «Маках») и там перейти во вкладку «Консоль» (Console). В этой вкладке вставить нижеприведённый код и нажать «Энтер».

получил данные, сохранил файл
Взял из репозитория, указанного в этом же посте взял программу и файлы, скачал в отдельную папку
Установил GO?
а далее как раз затык, что надо сделать
Вот о чем речь

Далее, увы, вам придётся занять компилированием. Как это делается, рассказывать не буду, ищите в интернете. Вам понадобится программа cgodownloader.go из моего репозитория,

а вот далее все опять более менее понятно
скачиваем программу и устанавливаем Sublime Text 3
открываем cgodownloader.go,через правую кнопку мыши
правим строки
согласно поста Volhvuk

Значит решил я применить Вашу схему к Тюменскому архиву http://109.233.229.20:81/Pages/Main.aspx
Схема незаработала на этапе компиляции, создала кучу джпегов, которые по сути были html с информацией об ошибке...
Начал изучать код, и понял, что строка запроса несколько отличается от исходной, да и хост не тот.
Было:
const url = ` http://%s/Pages/ImageFile.ashx?level=10%26x=0%26y=0%26tileOverlap=1024%26id=%s%26page=0%26XHDOC=%26archiveId=1%60
const defaulthost=«cgaso.regsamarh.ru»
Сделал:
const url = ` http://%s/Pages/ImageFile.ashx?level=10%26x=0%26y=0%26tileSize=256%26tileOverlap=1%26id=%s%26page=0%26rotation=0%60
const defaulthost=«109.233.229.20:81»

в этой строке пишется размер шрифта и разрешение, 10 и 1024 соответственно

<td id=«LC17» class=«blob-code blob-code-inner js-file-line»><span class=«pl-k»>const</span> url = <span class=«pl-s»><span class=«pl-pds»>`</span> http://%s/Pages/ImageFile.ashx?level=10%26amp%3Bx=0%26amp%3By=0%26amp%3BtileOverlap=1024%26amp%3Bid=%s%26amp%3Bpage=0%26amp%3BXHDOC=%26amp%3BarchiveId=1%3Cspan class=«pl-pds»>`</span></span></td>

А вот дальше я не знаю, раз владелец не хочет консультировать, жду жаждущих, чтобы совместно одолеть этого зверя

Volhvuk 2015

В общем всё оказалось просто. В коде автора, дай бог ему здоровья, нужно исправить:
« http://pastebin.com/raw.php?i=VamLswki%22

Volhvuk 2015

В общем всё оказалось просто. В коде автора, дай бог ему здоровья, нужно исправить:
« http://pastebin.com/VamLswki%22

Volhvuk 2015

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

И ещё, уважаемый Евгений, подскажите пожалуйста, ваша программа качает в несколько потоков одновременно? Можно регулировать количество потоков, например сделать равным 1 ?

Evgesha(scorpion_dev@mail.ru) 2015

bolknote.ru (bolknote.ru) > Volhvuk (инкогнито)

Программа отработала, но файлы в директории не появились

C:\gopath>go run cgodownloader.go -dir=pikt-150-1-124 150-1-124
C:\gopath>

Volhvuk 2015

Во первых. Вы неправильно компилируете. Сначала нужно скомпилировать и создать исполняемый файл *.exe.
Во вторых скармливать нужно строкой вида:
C:\gopath>cgodownloader.exe -dir=pikt-150-1-124 150-1-124.html (или txt)

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Volhvuk:

И ещё, уважаемый Евгений, подскажите пожалуйста, ваша программа качает в несколько потоков одновременно? Можно регулировать количество потоков, например сделать равным 1 ?

Да, можно. По-умолчанию, работает на скачивание количество потоков (горутин) равное удвоенному количеству процессоров. Это строка N := runtime.NumCPU() * 2. Замените её на N := 1

Volhvuk 2015

Комментарий для Евгения Степанищева:

Спасибо! А то я чувствую, что 16 потоков многовато =)

Evgesha(scorpion_dev@mail.ru) 2015

Комментарий для Евгения Степанищева:

Евгений поясни, почему иногда после запуска, сохраняются только названия файлов, с размером 0, а иногда, этот же файл сохраняется нормально

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Evgesha(scorpion_dev@mail.ru):

Поддержкой программы я не занимаюсь.

Pavel 2015

Пробовал на последней версии Хром на разных машинах. Доходит до 40-70 страницы и вываливается с вот этим:

POST https://cgaso.regsamarh.ru/Pages/Requests/Requests.aspx net::ERR_INSECURE_RESPONSEH.w.executeRequest @ ScriptResource.axd?d=UwZdykvJ1Xe6QfXcN3F1R3gGc_gMBTkCcJwWrjeRpp5yJy3w6LEhf7yQOyMm2w-Ma6WM5tLUr9mUJ7…:2H.w.executeRequest @ ScriptResource.axd?d=UwZdykvJ1Xe6QfXcN3F1R3gGc_gMBTkCcJwWrjeRpp5yJy3w6LEhf7yQOyMm2w-Ma6WM5tLUr9mUJ7…:2H.w.invoke @ ScriptResource.axd?d=UwZdykvJ1Xe6QfXcN3F1R3gGc_gMBTkCcJwWrjeRpp5yJy3w6LEhf7yQOyMm2w-Ma6WM5tLUr9mUJ7…:2e._onFormSubmit @ ScriptResource.axd?d=4vAt_xqb4u1-ppH5IZUmbY0UYljj5vFL8pDcT6ztrTIjXVn5-WXjl3aYFmAXZTxvLO8mQqrxnmdkOw…:2(anonymous function) @ ScriptResource.axd?d=UwZdykvJ1Xe6QfXcN3F1R3gGc_gMBTkCcJwWrjeRpp5yJy3w6LEhf7yQOyMm2w-Ma6WM5tLUr9mUJ7…:2g @ ScriptResource.axd?d=UwZdykvJ1Xe6QfXcN3F1R3gGc_gMBTkCcJwWrjeRpp5yJy3w6LEhf7yQOyMm2w-Ma6WM5tLUr9mUJ7…:2(anonymous function) @ VM320:21
ScriptResource.axd?d=4vAt_xqb4u1-ppH5IZUmbY0UYljj5vFL8pDcT6ztrTIjXVn5-WXjl3aYFmAXZTxvLO8mQqrxnmdkOw…:2 Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 0
Resource interpreted as Image but transferred with MIME type text/html: « https://cgaso.regsamarh.ru/Pages/ImageFile.ashx?level=7%26x=0%26y=0%26tileSize=99999%26tileOverlap=1%26id=925235a0-f725-4c1a-ac96-965e65b736df%26page=0%26rotation=0%22​.
Resource interpreted as Image but transferred with MIME type text/html: » https://cgaso.regsamarh.ru/Pages/ImageFile.ashx?level=10%26x=0%26y=0%26tileSize=9%E2%80%A699%26tileOverlap=1%26id=9eb50428-36f4-41d7-ac31-d22122469d01%26page=0%26rotation=0%22​.
/Pages/ImageFile.ashx?level=8&x=0&y=0&tileSize=99999&tileOverlap=1&id=925235a0-f725-4c1a-ac96-965e65b736df&page=0&rotation=0:1 GET https://cgaso.regsamarh.ru/Pages/ImageFile.ashx?level=8%26x=0%26y=0%26tileSize=99999%26tileOverlap=1%26id=925235a0-f725-4c1a-ac96-965e65b736df%26page=0%26rotation=0 net::ERR_INSECURE_RESPONSE
Resource interpreted as Image but transferred with MIME type text/html: « https://cgaso.regsamarh.ru/Pages/ImageFile.ashx?level=9%26x=0%26y=0%26tileSize=99999%26tileOverlap=1%26id=925235a0-f725-4c1a-ac96-965e65b736df%26page=0%26rotation=0%22​.
/Pages/ImageFile.ashx?level=10&x=0&y=0&tileSize=99999&tileOverlap=1&id=925235a0-f725-4c1a-ac96-965e65b736df&page=0&rotation=0:1 GET https://cgaso.regsamarh.ru/Pages/ImageFile.ashx?level=10%26x=0%26y=0%26tileSize=9%E2%80%A699%26tileOverlap=1%26id=925235a0-f725-4c1a-ac96-965e65b736df%26page=0%26rotation=0 net::ERR_INSECURE_RESPONSE

что бы это могло быть?

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Евгения Степанищева:

«На последней версии Хрома», а не «Хром».

Что это такое — сказать трудно, судя по ошибке, сработала какая-то защита безопасности в браузере. Если столкнусь с этой ошибкой — разберусь, по описанию, увы, не скажу что это.

Pavel 2015

Ну да, у меня ляпы бывают.

Проверил в Firefox: стоит, как статуя, страницы не листает. В Опере — работает!

Иногда встречаются дела, где число файлов в списке больше числа страниц. Глюк какой-то. Вот на них скрипт бесконечно ходит по кругу и массив для скармливания скачивателю не формирует...

SIN 2015

Жрет физич. память не скрипт. В Win.7, Chrome при генерации изображений ЭЛАРом каждое последующее изображение сохраняет в оперативку. Это легко проверить... не запуская скрипт прощелкать 1000 изображений в ручную :-) и у Вас хром так-же вылетит с ошибкой.

Вопрос что делать? ...каким то образом выгружать данные из оперативки на HDD или настроить хром чтоб не сохранял в памяти просмотренные изображения... но как? Есть идеи?

SIN 2015

Проблема решилась увеличив файл подкачки до 12Гб (оперативки 8Гб)

Дмитрий 2015

Оперативку думаю жрёт всё таки скрипт — там рекурсия!!!

Евгений Степанищев (bolknote.ru) 2015

Комментарий для Дмитрий:

У этой «рекурсии» вложенность равна единице.

LuckyLuke 2015

Написал Эксель на языке VBA, который на данный момент умеет скачивать единичный файл (тюменских архивов) из квадратиков и склеивать их.

Теперь хочу, чтобы он умел скачивать дела целиком.

Хотелось бы чтобы VBA в режиме реального времени а) определял id картинки следующей страницы б) скачивал ее в) возвращался к а) пока листы в деле не закончатся.

Есть идеи как это сделать?

Евгений Степанищев (bolknote.ru) 2015

Комментарий для LuckyLuke:

Есть идеи как это сделать?

У меня что ли? Нет, никакого желания задумываться об этом.

LuckyLuke 2015

Евгений, я уже разобрался!

По поводу работы консоли, думаю, если сразу после кэширования id остановить загрузку страницы (получение данных), процесс перелистывания дела будет намного быстрее.

К сожалению сам не умею такого написать.

Евгений Степанищев (bolknote.ru) 2015

Комментарий для LuckyLuke:

если сразу после кэширования id

Где это, у меня нет там никакого кеширования id

остановить загрузку страницы

Как только нужное получено, сразу начинается загрузка следующей страницы, это, естественно, останавливает загрузку предыдущей

LuckyLuke 2015

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

Евгений Степанищев (bolknote.ru) 2015

Комментарий для LuckyLuke:

как раз из-за того, что продолжает загружаться старая.

Нет, не из-за этого. Из-за задержки сети и длительности ответа сервера.

SIN 2015

Идет кеширование страниц... не знаю как, но факт на лицо. Отсюда переполнение оперативки и как следствие вылет хрома с ошибкой после 500-800 стр. Если свернуть браузер в маленькое окно нажать просмотр документа и запустить скрипт, процесс перелистывания страниц идет намного шустрее, нет ошибки...

В последнее время документ невозможно скачать в глубоком разрешении... в чем причина не знаю, но при открытии инструмента разработчика стала вылетать ошибка https://cgaso.regsamarh.ru/javascript/suggest.js?tstmp=2015-02-19-12-12 Failed to load resource: the server responded with a status of 404 (Not Found)

p/s Windows 7

Ку 2016

Евгений, кажется, ЦГАСО опять перестроил формат данных, и всё снова перестало скачиваться

Евгений Степанищев (bolknote.ru) 2016

Комментарий для Ку:

Жаль. Если мне в этом архиве что-то ещё понадобится, буду смотреть.

Ку 2016

Будем ждать с огромной надеждой...

Alex (Иван) 2016

Очень будем ждать...

Салют 2016

В чем проблема? Скрипт вроде работает...

Urator 2016

Да, теперь скачиваются пустые jpg. Вся надежда на Вас.

Евгений Степанищев (bolknote.ru) 2016

Комментарий для Urator:

Пока мне в архиве, увы, ничего не нужно. Да и логин мой отчего-то перестал работать.

Alex (Иван) 2016

Комментарий для Евгения Степанищева:

Скорее всего закончился годовой доступ.

Alex (Иван) 2016

Временное решение в самой качалке заменить строчку на
const url = ` http://%s/Pages/ImageFilePart.ashx?Crop=False%26id=%s%26Page=0%26Zoom=1%60

SIN 2016

Иван молорик, все верно. Почему временное... Разрешение (глубину) изображения можно изменить параметром Zoom от 0,1 до бесстыдно глубокого.

Евгений Степанищев (bolknote.ru) 2016

Комментарий для Alex (Иван):

Скорее всего закончился годовой доступ.

Да нет, я недавно оформлял новый. Но у меня какие-то перебои с доступом — пускает не с первого раза.

Alex_navI 2016

А кто нибудь пробовал качать с Ярославского архива?

wyszomirsky 2016

Комментарий для Urator:

В тобольском архиве тоже однажды стали качаться только пустые jpg.

Андрей Сергеев 2018

Снова обновили АИС и все упало

Евгений Степанищев 2018

Увы, да. Но я сейчас не работаю в этом архиве — нужды нет, поэтому не переделываю программу.

Черяпин Сергей 2019

Здравствуйте.
Существует ли на данный момент рабочий способ скачивания дел из Самарского архива?

Евгений Степанищев 2019

Увы, проект я забросил — в архиве Самары у меня сейчас нет интересов.

Черяпин Сергей 2019

Может все же сможете помочь в этом деле? Я думаю, что много кому своей программкой поможете.

Евгений Степанищев 2019

У меня сейчас нет никакого мотива это делать.

Андрей Казьмин 2020

Добрый день, и с Праздниками!
Огромное спасибо за Ваш труд, несколько раз очень выручал.
Сейчас АИС архивы переходят на шифрование (https) и скачать ну никак не получается, скачиваются страницы с просьбой авторизоваться (шапка ниже). Никак не могу придумать, как запустить код на скачивание прямо из консоли браузера, после авторизации. Данной проблемой никто в рунете больше не занимался, поэтому вся надежда на Вас =)

<!DOCTYPE html>
<html xmlns=«http://www.w3.org/1999/xhtml»>
<head id=«Head1»><title>
Вход в систему АИС ЭЛАР-Архив
</title><meta http-equiv=«X-UA-Compatible» content=«IE=edge» /><meta http-equiv=«Pragma» content=«no-cache» /><link rel=«SHORTCUT ICON» href=«images/elar.ico» /><link href=«/Content/styles?v=UTluiiAofnuLMUIZfmCJWysnk0l5PYxT_aI6RY_vkag1» rel=«stylesheet»/>
<link href=«/Content/themes/base/css?v=4xzVQ8I5bAdpCaXTq6V-pbiazrTDxDcDLLOVK9vFcvA1» rel=«stylesheet»/>
<script src=«/bundles/jquery?v=yRPfz5bh9VSQAkfuQBBn0HqF_TV0k6KYzYy8itNB7gg1»></script>
<script src=«/bundles/jqueryui?v=YAvUtt2TDRGE4OYBGEMX1SClCu75Pv40FoxwBpawyRc1»></script>
<script src=«/bundles/javascript?v=uwcb5jqFGQ51ib9zcRYH09IacFZ_FKjGtEtsxfbLHdw1»></script>
</head>

Андрей 2020

Я конечно понимаю, что у Вас нет интереса к своему детищу. Но и полностью переделывать не прошу. Прошу лишь направить в правильном направлении.
По сути нужно перекомпоновать готовый код, чтобы он запускал из консоли браузера и не требовал подгрузки внешнего файла, а текст из файла просто ручками добавить в качестве массива. Но никак не пойму чем и как заменить функцию подгрузки внешнего файла на массив правильного формата.

Евгений Степанищев 2020

Спасибо, вас тоже с праздниками! ?

Утилита написана на Гоу, она не может запускаться в консоли браузера, там нужен другой язык программирования. Когда я смотрел в последний раз, что они там переделали, у меня сложилось впечатление, что мою утилиту нужно будет писать с нуля, прежний способ работать не будет.

Андрей 2020

Насколько я понял, Хром прекрасно понимает язык Go. Тем более, что синтаксис очень похож на JS. При запуске из консоли ошибки появились как раз на этапе подгрузки внешнего файла.

Евгений Степанищев 2020

Нет, ни один браузер не понимает язык Гоу. Выше, в этой статье, кусок на Джаваскрипте — он готовит ссылки для скачивания, вы видимо именно его копируете. Переписывать надо и его, и программу, которая скачивает (вот она как раз на Гоу написана).

Андрей Базникин 2020

Заставил работать скрипт для ГАВО, изменив эти строки:

```
var imgs = $(’div.img-pnl img[src*=Pages]:first’);
if (imgs && imgs[0]) {
var page = imgs[0].src.match(/Id=([^&]+)/)[1];
```

т. е. поменял селектор для imgs, вместо переменной id использовал «div.img-pnl», а в src в ГАВО Id пишется с заглавной.

Кто-нибудь ковырялся с содержимым, закодировнным в base64? внутри бинарные данные, нужно поковыряться в них. Обходить все страницы дела, собирай айдишники — это костыль :/

Еще одна мысль — нужно брать со страницы имена файлов и использовать их. Сделать опцию для выбора имени файла — оригинальное либо сквозная нумерация, как сейчас.

Андрей Базникин 2020

В общем, сделал вывод «ld : Название файла.jpg»

```
!function () {
var id = ’[id=storageFilesViewerPnl]’;
var bt = ’[id$=ForwardBtn]’;
var pages = {};
var o = document.querySelector(id);

!function _observe(undefined) {
var ob = new MutationObserver(function() {
console.log(«mutator!»)
var imgs = $(’div.img-pnl img[src*=Pages]:first’);
if (imgs && imgs[0]) {
var page = imgs[0].src.match(/Id=([^&]+)/)[1];
console.log(page)
if (pages[page] == undefined) {
var title = $(’input#MainPlaceHolder__storageViewerControl__storageFilesViewerControl_FilesDropDownList_I’).val()
console.log(«Title:» + title)
pages[page] = page + « : » + title;

var next = $(bt);
if (next && next[0]) {
next[0].click();
} else {
ob.disconnect();
console.clear();
console.log(Object.values(pages).join(«\n»));
}
}
}
});

ob.observe(o, { childList: true, attributes: true, subtree: true, attributeFilter: [’src’] });
}();

o.setAttribute(’src’, true);
}();
```

Результирующий файл обхожу скриптом на Perl (пока так, мне на перле быстрее всего мокапить)
```
#!/usr/bin/env perl

while (<>) {
m/^([\w-]+) : (.+)/ && do {
print «$1: $2\n»;
`curl -sS -C — retry 5 output ’$2’ ’http://gavo.arsvo.ru:8082/Pages/ImageFilePart.ashx?Zoom=1&Id=$1’`;
}
}
```

Евгений Степанищев 2020

Слушайте, ну вы же видите, что маркдаун не работает, зачем же упорствуете? )

Андрей Базникин 2020

Чтобы можно было видеть разметку и представлять как красиво это могло бы выглядеть )) Вдруг заработает — а мы готовы

Евгений Степанищев 2020

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

Евгений Морозов 2021

Кто нибудь решил проблему со скачиванием из архива?

Даша Семенова 2023

Кому нужен софт, скачивающий с АИСа — пишите в личку в ВК.