如何请求Web服务器使用eww来提供其“移动友好”版本的网页?


11

eww最近用于浏览网络以查找文档和类似内容。我不喜欢eww接收与Firefox或Google Chrome相同的网页,它不能像那些Web浏览器那样呈现网页。然后,我要实现的目的是eww告诉网站它访问的网站发送了网页的移动友好版本,因此,我将呈现出一个更简单的布局eww(或至少是我的假设)。


2
从未使用过eww,但是诀窍可能是伪造您的User-Agent。在大多数情况下,网络服务器会在将您重定向到网站的移动版本之前检查该值。
Nsukami _ 2014年

Answers:


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 2014年

那又如何emacs-w3m呢?如何获得手机版本?据我所知,这些天我们实际上使用了响应式设计,所以重点是假的屏幕尺寸而不是代理字符串。
chen bin

更改用户代理是必需的,因为某些Web服务器将为缺少Javascript的页面提供服务,无论如何这都是eww不能评估的……
shackra 2014年

1
@IqbalAnsari:不幸的是使用当前缓冲区(由返回的缓冲区)进行eww调用,因此这不起作用。我同意,这将是更好的设置用户代理字符串唯一,但我不知道如何实现这一目标。url-http-user-agent-stringfundamental-modeprocess-buffereww
君士坦丁

1
@chenbin:您需要设置w3m-user-agent。请参阅Sacha Chua的这篇文章,了解一种实现方法。
君士坦丁

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")

对不起,最近多少?
shackra 2015年

它于2014
。– tmalsburg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.