需求比较特殊,要捕获所有请求,转到特殊代理通道再返回结果给页面
api 21 之后用这个截获所有请求
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)
对 GET 请求都没问题,但是 POST 之类的请求,只能从 request 上得到 method,url,headers 之类的数据,无法获取请求数据(post data)
网上查了一下,这个 issue 提了有两年了官方还没加上这个功能
1
MntCw 2016-05-05 13:33:54 +08:00 via Android
我之前也遇到这个问题, Ajax 可以 post 过去。也想知道有没有更好的解决方法
|
3
Gonster 2016-05-05 13:44:58 +08:00
插个题外话,手机好多 APP 用第三方身份提供商通过 OAuth2.0 做登录的,手机应用登录的时候用 webview 打开提供商的登录页面, webview 的请求内容可以被手机应用拦截,那用 OAuth2.0 的意义呢,密码不是会被手机应用获取到吗。
|
4
wadahana 2016-05-05 14:21:38 +08:00
1. webview 可以设置代理。
2. elf hook 某几个动态库的 connect 函数. |
5
pubby OP |
6
faywong8888 2016-05-05 14:38:44 +08:00
与楼上相同,
给 webview 设置代理是一条可行的道路。 |
7
wadahana 2016-05-05 14:56:05 +08:00 2
看版本,>=14 < 19 可针对 webview , 其他都是全局。
你把全部请求拿到本地 http proxy 再做一次过滤。 |
8
wadahana 2016-05-05 15:30:39 +08:00
最好的替代品就是自己编个 webkit......
|