【发布时间】:2016-11-08 10:44:06
【问题描述】:
我注意到,当使用 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 移动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 Unauthorized”或“400 Bad Request”?
任何帮助将不胜感激。
【问题讨论】:
-
我在访问 8000 端口的流媒体服务器(所以总是 200 的)时看到了这个 ID 字符串,通常标识为 LG 和华为型号,并且大部分流量来自菲律宾和中国。我看到不止两个重复获取...我看到一直在发生,直到客户端似乎用完带宽:大约 80 次左右同时获取。尚未开始阻止,但正在监视并看到这些数量稳步增加。最终它将构成 DDoS 攻击。