现需要在 Android 上做一个浏览器一样的控件,截获请求数据与返回的数据,能不能提供一下思路?多谢大侠们!

2017-05-31 09:19:49 +08:00
 sunjws
6538 次点击
所在节点    Android
23 条回复
honeycomb
2017-05-31 09:25:14 +08:00
webview ?
lsyAndroid
2017-05-31 09:27:49 +08:00
同楼上
qqpkat2
2017-05-31 09:38:09 +08:00
当然是内嵌浏览器了
sunjws
2017-05-31 09:47:36 +08:00
@honeycomb webview 截获不到啊....没有相应接口;

@qqpkat2 安卓谷歌内核我研究了下,太复杂了,没有找到想要的相关接口;还有其他可能的开源内核么?最好是封装好的
binsys
2017-05-31 10:06:09 +08:00
要截取 android 数据?
限定:在 android app 本身上动手,不说 proxy 方式或者路由交换机方式
有 root 权限的好说,自己百度一堆。
如果非 root 的需求,目前唯一的解决方案是写代码实现 android 提供的 VpnService api,虽然叫 VPN api,但是他拿到的是一个 fd,能拿到 本机所有三层的流量。
这个服务启动 android 系统会提示用户让用户选择是否允许。
请参考一个用此实现的广告过滤 app
https://github.com/julian-klode/dns66
pengfei
2017-05-31 10:09:01 +08:00
你下一个`Packet Capture`, 开源软件, 你看看是不是你说的那种
codehz
2017-05-31 10:13:24 +08:00
shouldInterceptRequest 这个方法看过了吗。。
pcatzj
2017-05-31 10:21:51 +08:00
同楼上,有个 webView.setWebViewClient 方法,重写楼上的方法,基本所有的请求都会经过这个方法
pcatzj
2017-05-31 10:23:24 +08:00
这个是网页的请求,如果是 native 本地请求,可以用 okhttp,设置 intercept,也能够拦截所有的请求
pubby
2017-05-31 10:28:01 +08:00
@codehz 这个 post 数据拿不到
codehz
2017-05-31 10:39:17 +08:00
@pubby #10 是 shouldInterceptRequest(WebView, WebResourceRequest)这个方法。。。之前那个 string 参数的确实只有 get
pubby
2017-05-31 11:20:45 +08:00
@codehz 试过了,post 请求时没 body 数据
pubby
2017-05-31 11:24:44 +08:00
@codehz 去年试的,最近 api 有没有改动不知道
codehz
2017-05-31 11:28:54 +08:00
@pubby #12 不是啊,覆盖那个方法后,请求不是你手动发出的么。。你只要按照 WebResourceRequest 的参数发 POST 请求给服务器,然后获取到的值作为返回值,然后顺便记录或者要啥操作都可以了啊
pubby
2017-05-31 11:58:45 +08:00
@codehz 楼主要截获这个请求啊,如果是 post 请求,你没法从这个 WebResourceRequest 里面获取原始需要 post 的数据啊
qzskaka
2017-05-31 12:18:45 +08:00
使用 TBS x5
sunjws
2017-05-31 13:35:32 +08:00
@codehz 是的 不能获取到原始数据,不要再次拿到此接口进行 post,而是捕捉到原始数据

@pengfei
@binsys 谢谢两位,想要的就是这里面抓到的数据,我再研究一下
sunjws
2017-05-31 13:47:57 +08:00
@qzskaka 谢谢你,但是我并没有找到对应的抓包方法
huazidev
2017-05-31 14:17:31 +08:00
如果需要截取 post 请求的数据的话,目前我们这边使用的方法是让 web 端通过 js 将 post 数据返回,仅供参考。。
codehz
2017-05-31 14:29:11 +08:00
@pubby #15 那个 Request 只是请求描述对象。。。实际请求还没发出去,你可以选择自己发包,替换默认实现
@sunjws #17

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/364831

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX