欺骗/伪造屏幕分辨率?

15

在浏览网页时,我需要伪造我的屏幕分辨率,向我正在查看的网站发送虚假信息,但保持我的视口不变(Chrome或FF的模拟无法解决我的问题)。

例如,如果我从全屏模式的浏览器访问具有1920x1080px分辨率的http://www.whatismyscreenresolution.com/网站我希望该网站认为我正在使用1024x728px,但仍能在全屏模式下浏览。

我猜测之一是我需要以某种方式覆盖js变量screen.width和screen.height(或完全摆脱js,但特定的网站在禁用js时无法工作),但如何操作?并且这样做是否足够?

这是为了匿名目的,我希望不需要详细解释。我需要看起来像一个设备,即使我从各种设备上访问该站点(Tor浏览器不是选择——更改IP)。 我正在使用Firefox 30.0浏览器,并在远程连接到的VPS(Xubuntu 14.04)上运行。

这个主题 (Spoof JS Objects) 让我接近但还不够,它仍然没有得到答案。我已经为此问题奋斗了相当长一段时间,因此非常感谢任何建议!


在Firefox中,screen.width和screen.height取决于缩放级别(如果缩放包括图像),因此虽然它不完全是您想要的,但您仍然可以通过以稍微不同的缩放级别随意浏览来实时更改它。此外,在“about:config”中的“layout.css.devPixelsPerPx”设置有效地将您的屏幕分辨率除以指定的数量(如果为正),但可能会产生令人讨厌的效果,使浏览器呈现为如果您的屏幕分辨率确实是这样。尽管如此,这种易变性意味着屏幕分辨率对于跟踪FF用户的影响较小。 - Stan Liou
2个回答

1
该网站使用以下Javascript来确定要显示的宽度/高度值:
    height = screen.height;
    width = screen.width;

    res = document.getElementById ('resolutionNumber');
    res.innerHTML = width + " X " + height;

如果您只关心确保这些值会更改,可以在它们的代码执行之前执行以下操作:
    screen = new function() { this.width = 1; this.height = 2 }

如果您关心屏幕对象的其他属性,则需要一些额外的Javascript来保留这些属性。
要查看此操作,请加载其页面,然后使用Firefox或Chrome开发工具将调试器放在其Javascript中(第116行,其中写着height = screen.height;),执行上述覆盖,然后按播放键!
如果您想对每个访问的页面都执行此操作,则需要将其纳入Chrome或Firefox扩展程序中(我已经制作了自定义Chrome扩展程序,非常容易)。

1

我在火狐浏览器中找到了一种方法。

  1. 打开所需的网站
  2. 通过转到工具 -> 开发人员 -> 响应式 Web 设计来访问工具
  3. 输入您喜欢的分辨率,然后刷新当前选项卡,网站将根据您设置的屏幕分辨率重新加载网站

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接