我可以安全地阻止Dalvik浏览器代理请求吗?

11
我注意到当Android操作系统的用户访问我的网站时,每个页面上会不断发生两个请求。第一个是正常的浏览器请求,第二个来自“Dalvik”。例如:

“GET / HTTP/1.1” 200 2126 “-” “Mozilla/5.0(Linux;Android 5.0.2;SAMSUNG SM-G925F/G925FXXU1AOD8 Build/LRX22G)AppleWebKit/537.36(KHTML,like Gecko)SamsungBrowser/3.0 Chrome/38.0.2125.102 Mobile Safari/537.36” 1229 2802

“GET / HTTP/1.1” 200 2117 “-” “Dalvik/2.1.0(Linux;U;Android 5.0.2;SM-G925F Build/LRX22G)” 546 8729

据我理解,第一个请求来自实际浏览器,而另一个则来自运行浏览器的虚拟机(Dalvik)。问题在于,Dalvik请求不使用相同的cookie和/或POST数据,这会触发服务器端的错误。例如,当用户注册帐户时。正常的浏览器会通过POST数据进行发送,但是Dalvik请求只会在动作url上执行GET。类似地,如果用户已登录,Dalvik将尝试在基于权限的页面上进行GET,因为它没有会话,可能会将其重定向到其他位置。
据我观察,用户并没有遇到实际问题,但是我们在错误日志记录中发现了这些尝试。所以我的问题是:如果浏览器代理指示“Dalvik/..*”,我能否安全地阻止所有访问尝试?用户会有任何不良影响吗?考虑到与Dalvik相关的请求实际上没有重新发布真实数据或携带会话,这似乎不太可能。但是希望有更多Android经验的人可以提供一些反馈,例如,我是否应该发出特定的HTTP头/状态代码,如“401未经授权”或“400错误请求”?
感谢您的任何帮助。

请参见:https://dev59.com/4WAg5IYBdhLWcg3wQpBX - hsluoyz
1
我一直在看到访问8000端口流媒体服务器的ID字符串(因此始终是200),最常见的是LG和华为型号,并且大多数流量来自菲律宾和中国。我看到的不仅有两个重复的get请求...我看到的get请求一直持续到客户端似乎用尽了带宽:大约80个或更多同时进行的get请求。还没有开始阻止,但正在监视,并且看到这些数字稳步增加。最终将会形成DDoS攻击。 - Hugh Buntu
2个回答

3
无法渲染特定服务器响应时(可能是PDF、流媒体服务器或其他),浏览器/WebView 就会触发意图(intent)以打开另一个应用程序。虚拟机(Dalvik)处理此路由,同时可能会将文件下载到设备上,以便其他应用程序可以访问它(通常情况下,应用程序无法访问彼此的文件,但其他应用程序需要该文件以呈现它)。
关键是在启动意图前先下载文件,并导致文件被下载两次:一次是为了弄清楚浏览器不能如何处理它,一次是由 Dalvik 下载,以便它可以传递 file:// URL 给您可能会或可能不会启动的应用程序。

0

这是三星手机的Linux shell。我的操作系统列为“Linux 3.4.0-7500527(Dalvik 2.1.0)”,它是三星Galaxy S5。你能否建立一个与你的网站副本(即使是最小的),让gets接收到501,也许?有了这个,应该很容易找出问题所在。


2
绝对不仅仅是三星手机。我在许多其他设备上也看到过它。 - Giles Hunt

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