Позитива пост
Dec. 16th, 2014 03:49 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Все, кто читает этот пост в ЖЖ, читают ЖЖ. А значит, много раз видели адресные URL из потрохов, которые содержат в себе исходный URL, а вокруг - много мусора в html escaping. Нажатие "Обновить" не помогает, потому что в СУПе то ли люди с непрямыми руками, то ли они так от чего-то защищаются. Во всяком случае, на жалобу в своё время они мне ответили что-то невразумительное.
Собственно, возникает это, когда обламывается один из минимум 3-4 редиректов, которые ЖЖ делает при отображении страницы для залогиненного пользователя (для незалогиненного - не знаю). При нагрузках, какой-нибудь еще хрени и так далее. Соответственно, при моей манере чтения фленты это штук 5 страниц с такими URL и 503 Varnish error вместо контента.
Как я понимаю, для Chrome и FF несложно сделать плагин, который будет восстанавливать исходный URL и делать запрос на него. Собственно, кто может ткнуть пальцем в описание того, как это сделать?
UPD: пример того, что остаётся в URL. Устаревший, но то, что бывает сейчас, принципиально не отличается.
http://www.livejournal.com/misc/get_domain_session.bml?return=http%3A%2F%2Fphiltrius.livejournal.com%2F867320.html&sign=2d07c4876bfa6ce276aee340aaef40ca&t=1366874215
Собственно, возникает это, когда обламывается один из минимум 3-4 редиректов, которые ЖЖ делает при отображении страницы для залогиненного пользователя (для незалогиненного - не знаю). При нагрузках, какой-нибудь еще хрени и так далее. Соответственно, при моей манере чтения фленты это штук 5 страниц с такими URL и 503 Varnish error вместо контента.
Как я понимаю, для Chrome и FF несложно сделать плагин, который будет восстанавливать исходный URL и делать запрос на него. Собственно, кто может ткнуть пальцем в описание того, как это сделать?
UPD: пример того, что остаётся в URL. Устаревший, но то, что бывает сейчас, принципиально не отличается.
http://www.livejournal.com/misc/get_domain_session.bml?return=http%3A%2F%2Fphiltrius.livejournal.com%2F867320.html&sign=2d07c4876bfa6ce276aee340aaef40ca&t=1366874215
no subject
Date: 2014-12-16 01:11 pm (UTC)... The hinge of armoring is important internal source ...
no subject
Date: 2014-12-16 01:27 pm (UTC)no subject
Date: 2014-12-16 01:22 pm (UTC)no subject
Date: 2014-12-16 01:27 pm (UTC)no subject
Date: 2014-12-16 01:32 pm (UTC)no subject
Date: 2014-12-16 01:38 pm (UTC)no subject
Date: 2014-12-16 01:58 pm (UTC)Надо ли с этим вообще бороться -- крайне не очевидно....
no subject
Date: 2014-12-16 02:00 pm (UTC)no subject
Date: 2014-12-16 02:06 pm (UTC)А нажать бэк и зайти еще раз не помогает?Потому что если ты выкусишь правильный url а куки не получишь, тебя опять в авторизационный центр направят...
А, понял, у тебя проблема в том что ты открыл в новом окне, что не загрузилось не посмотрел, а источник утерян...
no subject
Date: 2014-12-16 02:08 pm (UTC)no subject
Date: 2014-12-16 04:04 pm (UTC)Ну если считать, что из вон того тестового URL’а нужно получить
http://philtrius.livejournal.com/867320.html
и по нему перейти, то как-то примерно вот так:Обработка ошибок, более чёткое следование RFC и улучшение UI оставляется читателю в качестве упражнения. (Как есть оно просто добавляет в контекстное меню Greasemonkey пункт, который надо кликать руками.)
no subject
Date: 2014-12-16 06:49 pm (UTC)no subject
Date: 2014-12-16 08:34 pm (UTC)Может подскажешь с какого места начать его ваять??
А то предложенный пример предполагает нажатие кнопки, как я понял... Его за основу брать будет неудобно...
no subject
Date: 2014-12-17 03:55 am (UTC)А этот у меня уже готовый есть.
Гризманковские скрипты начинают ваять с постановки проблемы:
Формализуем: «Для всех ссылок (
<a>
), где адрес ссылки (href
) содержитlivejournal.com
, добавить параметрstyle=mine
.» (Я тут немного упрощаю — на самом деле следовало бы искать подстроку не во всём url’е, а только в хосте.) Учитываем, что параметры уже могут быть, а могут и не быть.no subject
Date: 2014-12-17 09:16 am (UTC)Для меня эта постановка проблемы неверная. Потому что заметная часть ссылок без style=mine приходят ко мне из почты, которую я смотрю внебраузерным почтовым клиентом. Поэтому для меня оно должно звучать в виде
"Если в строке браузера присутствует *.livejournal.com и отсутствует параметр style=mine"
no subject
Date: 2014-12-17 03:46 pm (UTC)Это хорошее уточнение.
Тогда ограничиваем применимость скрипта всеми страницами
*.livejournal.com/*
. Дальше у нас есть три случая. Либоwindow.location.search
пусто, тогда заменяем его на?style=mine
. Либо оно непусто, тогда отрываем ведущий?
, разбиваем по'&'
и проверяем наличие'style=mine'
. Если нет такого элемента — добавляем кwindow.location
суффикс&style=mine
. А если есть, то ничего не делаем.(Не проверял, писал в браузере — может потребоваться отладка.)
Upd: конечно, перепутал знак проверки во втором кейсе.
И ещё, похоже, нельзя лепить
style=mine
во все страницы. Например, обработчик редактирования комментов с этим параметром себя неадекватно ведёт. Поэтому пишем@include
, покрывающие всё нужное и не трогающие*.bml
, на всякий случай.no subject
Date: 2014-12-17 11:07 pm (UTC)no subject
Date: 2014-12-17 11:05 pm (UTC)no subject
Date: 2015-07-11 07:30 pm (UTC)Как это дело отлаживать?
Upd: Потребовалось заменить строчку на
// @include *.livejournal.com/misc/get_domain_session.bml?*
no subject
Date: 2015-07-11 08:21 pm (UTC)Так сейчас работает?
Про то, что хост может быть любой в домене livejournal.com, в постановке ничего не было.
Отлаживаются гризманки-скрипты как обычный javascript — через
console.log(…)
.no subject
Date: 2015-07-11 08:24 pm (UTC)Спасибо!
no subject
Date: 2015-07-11 07:54 pm (UTC)Как это дело отлаживать?
no subject
Date: 2016-10-31 10:06 pm (UTC)no subject
Date: 2014-12-16 06:48 pm (UTC)