我正在使用基于移动网络的互联网连接,当他们将网站呈现给最终用户时,正在重写源代码.
在localhost我的网站看起来很好,但是当我通过移动网络连接从远程服务器浏览网站时,该网站看起来很糟糕.
检查源代码我发现一段JavaScript代码正在注入我的页面,这会禁用一些使网站看起来很糟糕的CSS.
我不想要图像压缩或带宽压缩,而不是我精心设计的CSS.
如何阻止或阻止移动网络提供商(在这种情况下为Vodafone)代理将JavaScript注入我的源代码?
Pio*_*ula 42
您可以在页面上使用它.它仍然压缩并将所有内容放入内联但它不会破坏像jquery这样的脚本,因为它会根据W3C标准逃避一切
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)
在您的服务器上,您可以设置cahce控件
"Cache-Control: no-transform"
Run Code Online (Sandbox Code Playgroud)
这将停止所有修改并显示您的网站!
参考文档在这里
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.5
http://stuartroebuck.blogspot.com/2010/08/official-way-to-bypassing-data.html
网站在3G下的iPad/iPhone上展示JavaScript错误,但不在WiFi下
bob*_*nce 34
你肯定不是第一个.不幸的是,许多无线ISP一直在使用这种粗暴和不受欢迎的压缩方法.它来自Bytemobile.
它的作用是让代理重新压缩你默认获取的所有图像(使图像质量明显变差).然后它粗略地在您的文档中注入一个脚本,该脚本添加了一个选项,用于为每个重新压缩的图像加载正确的图像.不幸的是,由于该脚本是一个可怕的20世纪90年代风格的JS,它在您的命名空间中肆意破坏,劫持您的事件处理程序并且很有可能弄乱您自己的脚本.
我不知道如何停止注射本身,缺乏使用HTTPS.但你可以做的是检测或破坏脚本.例如,如果您在文档末尾附近(在1.2.3.4脚本包含和内联脚本触发器之间)添加一个脚本到中性使用的onload挂钩:
<script type="text/javascript">
bmi_SafeAddOnload= function() {};
</script>
Run Code Online (Sandbox Code Playgroud)
然后脚本将无法运行,因此您的事件和DOM将保持不变.另一方面,初始脚本仍然会使用垃圾填充您的命名空间,并且它导致的任何标记问题仍然存在.此外,用户将被困在重新压缩的图像,无法获得原件.
您可以尝试让用户知道:
<script type="text/javascript">
if ('bmi_SafeAddOnload' in window) {
var el= document.createElement('div');
el.style.border= 'dashed red 2px';
el.appendChild(document.createTextNode(
'Warning. Your wireless ISP is using an image recompression system '+
'that will make pictures look worse and which may stop this site '+
'from working. There may be a way for you to disable this feature. '+
'Please see your internet provider account settings, or try '+
'using the HTTPS version of this site.'
));
document.body.insertBefore(el, document.body.firstChild);
}
</script>
Run Code Online (Sandbox Code Playgroud)
Cam*_*son 11
我很惊讶没有人把它作为答案.真正的解决方案是:
使用HTTPS!
这是阻止ISP(或其他任何人)检查您的所有流量,窥探访问者以及修改您的网站的唯一方法.
随着Let's Encrypt的出现,获得证书现在变得轻松自如.在这个时代,没有理由不使用HTTPS.
您还应该使用重定向和HSTS的组合来保持所有用户使用HTTPS.
您的提供商可能已启用Bytemobile Unison功能,称为"无客户端个性化".尝试访问固定的URL http://1.2.3.50/ups/ - 如果已配置,您将最终进入一个页面,该页面将禁用您不喜欢的所有功能.包括Javascript注入.
祝好运!亚历克斯.
小智 7
如果您正在编写自己的网站,请添加标题为我工作:
PHP:
Header("Cache-Control: no-transform");
C#:
Response.Cache.SetNoTransforms();
VB.Net:
Response.Cache.SetNoTransforms()
Run Code Online (Sandbox Code Playgroud)
在将任何数据发送到浏览器之前,请务必使用它.
我找到了一个技巧.只需添加:
<!--<![-->
Run Code Online (Sandbox Code Playgroud)
后:
<html>
Run Code Online (Sandbox Code Playgroud)
更多信息(德语):
| 归档时间: |
|
| 查看次数: |
21356 次 |
| 最近记录: |