carmelist: (Default)
[personal profile] carmelist
Оригинал взят у [livejournal.com profile] sharpc в Чиним ljArchive
С некоторых пор самая удобная (хотя, увы, давно не поддерживающаяся) программа для оффлайн-копии ЖЖ ljArchive (что это такое и как этим пользоваться можно прочитать, например, тут) стала выдавать ошибки при синхронизации комментариев (по таймауту) вида:

The server is not responding. Please try again later.
EF.ljArchive.Engine.ExpectedSyncException: An expected exception occurred: ServerNotResponding ---> System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly.
и дальше коллстек из EF.ljArchive.Engine.Sync.ExportCommentsMeta в System.Xml.


Ошибка происходила из-за того, что в этой функции XmlTextReader пытался читать из WebResponse.GetResponseStream(), который возвращал не XML, как ожидалось, а главную HTML-страницу. Дальнейшее исследование показало, что для скачивания комментариев ЖЖ не устраивает авторизация, которую производит ljArchive, например, для скачивания записей. При сравнении HTTP-запросов Semagic (в последней версии которого скачивание комментариев работает) и ljArchive выяснилось, что их куки ljloggedin отличаются: у Semagic они имеют вид u9812774:s1373, а у ljArchive u9812774:s1371:11 BASE64-подобных символов, взятых из куков ljsession. Остальное было делом техники: надо в файле Engine/Util.cs:72 (функция HttpWebRequestFactory::Create) заменить строку
wr.CookieContainer.Add(new Cookie("ljloggedin", ljsession.Substring(ljsession.IndexOf(":") + 1, ljsession.LastIndexOf(":") - ljsession.IndexOf(":") - 1), "/", uri.Host));
например, на
wr.CookieContainer.Add(new Cookie("ljloggedin", ljsession.Substring(ljsession.IndexOf(":") + 1, ljsession.LastIndexOf(":", ljsession.LastIndexOf(":") - 1) - ljsession.IndexOf(":") - 1), "/", uri.Host));
и скачивание комментариев магическим образом заработало. Авось еще какое-то время не отвалится.


Для тех, кто не хочет компилировать, я положил пропатченную версию EF.ljArchive.Engine.dll на Народ. К сожалению, компиляторы разные, поэтому бинарный дифф большой, в идеале же достаточно было бы исправить всего 18 байт.

Date: 2012-05-21 07:46 pm (UTC)
From: [identity profile] kirulya.livejournal.com
Увы, сколько ни старалась - не вышло.

Date: 2012-05-22 01:58 am (UTC)
From: [identity profile] carmelist.livejournal.com
Странно! Я поступил простейшим методом из предложенных. Заменил файл EF.ljArchive.Engine.dll на скаченый с Народа. Работает.

Date: 2012-05-22 04:56 am (UTC)
From: [identity profile] kirulya.livejournal.com
Я тоже. Не работает. Пришлось заменить снова старым.
Я страдаю и буду думать дальше.

Date: 2012-05-22 05:57 am (UTC)
From: [identity profile] carmelist.livejournal.com
Пробовала на разных компах?

Date: 2012-05-24 10:13 pm (UTC)
From: [identity profile] bukvoed.livejournal.com
У меня та же история. :(

Date: 2014-01-05 07:13 pm (UTC)
From: [identity profile] fixin.livejournal.com
спасибо. мне помогло.

Заюзал LG Archive

Date: 2014-01-05 08:00 pm (UTC)
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] fixin сослался на вашу запись в записи «Заюзал LG Archive (http://fixin.livejournal.com/1329999.html)» в контексте: [...] ые слова: Однако я таки нашел решение, погуглив: http://carmelist.livejournal.com/408339.html [...]

Date: 2014-11-18 08:13 am (UTC)
From: [identity profile] bon-chat.livejournal.com
Случайно наткнулась на эту запись. Были проблемы с сохранением архива. Но благодаря вам решилось, спасибо :)

Date: 2014-11-18 10:10 am (UTC)
From: [identity profile] carmelist.livejournal.com
Очень рад, Вам это помогло!

Profile

carmelist: (Default)
carmelist

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 28th, 2026 07:55 pm
Powered by Dreamwidth Studios