谷歌宣布他们是https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html。
在Android中,来自WebViews的请求获得一个标头HTTP_X_REQUESTED_WITH
,它被设置为应用程序的包名。尽管这可以被覆盖,所以可以使用WebView隐藏到我们正在请求的服务器上。我不知道还有别的什么默认的方法来做这个。
有没有一种方法可以检测服务器端--不管客户端做什么--一个请求来自Android WebView。谷歌是如何做到这一点的?
发布于 2017-01-23 17:19:44
没有直接回答您的问题(对不起),而是关于您所引用的WebView对OAuth的反对:即使您找到了避免在OAuth流中检测到WebView的方法,但这样做可能会违反Google服务:用户数据策略,特别是“不要误导Google有关应用程序的操作环境”一节。所以我不建议你这么做。
通常,为OAuth (比如通过安卓AppAuth)使用自定义选项卡会带来更好的用户体验,因为用户很可能已经被登录--谷歌允许他们在无需再次登录的情况下审查您的请求。这也是一种更安全的体验。这就是迁移- a更安全、更有用的最终用户OAuth体验的目标:-)
发布于 2017-02-01 18:42:18
正如其他人所说,WebView和普通浏览器之间存在一系列差异,但它们都包含在从浏览器发送到标头中的数据中,因此您可以绕过它们。
然而,这里有一个libaray https://github.com/Valve/fingerprintjs2,所以您可以阅读它来查看它们所做的细节。因为它创建了一个设备指纹,所以google可以使用像这样的标签来检测/
它们也有可能在WebView核心代码中运行自己的Javascript,而这些代码是您无法删除的,并且可以从中检测到。因此,除非您将自己的浏览器包装为视图,否则您将无法绕过检测。
与上述方法类似,他们也可以在隐藏的iframe中使用chrome:// system,并从其中检测出内容,以识别E.Gchrom://about-view/,并打印硬编码的用户代理。同样,绕过这种情况的唯一方法是滚动您自己的浏览器。
正如@WilliamDenniss所说的,如果他们发现你的应用程序和你的账户都会被屏蔽,你的账户上的所有应用程序都会被屏蔽,并阻止你再次从这个账户发布应用程序。
发布于 2017-02-01 11:13:03
所有通过webview发送的http请求都有X-Requested-With
头,可以用来检测请求来自webview。
X-Requested-With: the.app.packageName
https://stackoverflow.com/questions/41801836
复制相似问题