Как я могу попросить веб-сервер обслуживать их «мобильную» версию своих веб-страниц с eww?

11

Я использую в ewwпоследнее время для просмотра веб-страниц в поисках документации и тому подобное. Мне не нравится, что он ewwполучает ту же веб-страницу, что и Firefox или Google Chrome, он не может отображать веб-страницы, как это делают эти веб-браузеры. Затем, я хочу добиться, чтобы ewwвеб-сайты, которые он посещает, отправляли мобильную версию своих веб-страниц, таким образом, у меня был бы более простой макет eww(или, по крайней мере, это мое предположение).

shackra
источник
2
Никогда не использовал eww, но хитрость может заключаться в том, чтобы подделать ваш User-Agent. Большую часть времени веб-сервер проверяет это значение, прежде чем перенаправить вас на мобильную версию сайта.
Nsukami _

Ответы:

11

ewwиспользует urlбиблиотеку, поэтому мы можем добавить совет, url-http-user-agent-stringчтобы подделать User-Agentстроку:

(advice-add 'url-http-user-agent-string :around
            (lambda (ignored)
              "Pretend to be a mobile browser."
              (concat
               "User-Agent: "
               "Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30")))

Я взял строку браузера User-Agent мобильного браузера www.useragentstring.com.

С этим советом я получаю мобильную версию google.com; Ваш пробег может варьироваться.

(Я нашел это с помощью M-x apropos RET user-agent RET.)

Константин
источник
2
Возможно, вы захотите проверить, что текущий основной режим ewwперед тем, как изменить пользовательский агент, его изменение безоговорочно может сломать другие пакеты в зависимости от библиотеки URL
Iqbal Ansari
о чем emacs-w3m? как получить мобильную версию? Насколько я знаю, в наши дни мы на самом деле используем адаптивный дизайн, поэтому смыслом является фальшивый размер экрана вместо строки агента.
Чен Бен
изменение user-agent является чем-то необходимым, потому что некоторые веб-серверы будут обслуживать страницу без Javascript, что в любом случае не оценивается eww ...
shackra
1
@IqbalAnsari: К сожалению, ewwвызовы url-http-user-agent-stringс текущим буфером fundamental-mode(буфер, возвращаемый process-buffer), так что это не работает. Я согласен, что было бы намного лучше установить строку агента пользователя только дляeww , но я не знаю, как этого добиться.
Константин
1
@chenbin: вам нужно установить w3m-user-agent. Смотрите этот пост Саша Чуа, чтобы узнать, как это сделать.
Константин
0

В последних версиях Emacs вы можете просто использовать переменную настройки url-user-agent:

(setq url-user-agent "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7\n")
tmalsburg
источник
Извините, как недавно?
Шакра
Он был представлен 5 ноября 2014 года.
tmalsburg