现需要在 Android 上做一个浏览器一样的控件,截获请求数据与返回的数据,能不能提供一下思路?多谢大侠们! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunjws
V2EX    Android

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

  •  
  •   sunjws 2017-05-31 09:19:49 +08:00 13911 次点击
    这是一个创建于 3111 天前的主题,其中的信息可能已经有所发展或是发生改变。
    23 条回复    2017-05-31 15:05:03 +08:0
    honeycomb
        1
    honeycomb  
       2017-05-31 09:25:14 +08:00 via Android
    webview ?
    lsyAndroid
        2
    lsyAndroid  
       2017-05-31 09:27:49 +08:00 via Android
    同楼上
    qqpkat2
        3
    qqpkat2  
       2017-05-31 09:38:09 +08:00
    当然是内嵌浏览器了
    sunjws
        4
    sunjws  
    OP
       2017-05-31 09:47:36 +08:00
    @honeycomb webview 截获不到啊....没有相应接口;

    @qqpkat2 安卓谷歌内核我研究了下,太复杂了,没有找到想要的相关接口;还有其他可能的开源内核么?最好是封装好的
    binsys
        5
    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
        6
    pengfei  
       2017-05-31 10:09:01 +08:00
    你下一个`Packet Capture`, 开源软件, 你看看是不是你说的那种
    codehz
        7
    codehz  
       2017-05-31 10:13:24 +08:00
    shouldInterceptRequest 这个方法看过了吗。。
    pcatzj
        8
    pcatzj  
       2017-05-31 10:21:51 +08:00
    同楼上,有个 webView.setWebViewClient 方法,重写楼上的方法,基本所有的请求都会经过这个方法
    pcatzj
        9
    pcatzj  
       2017-05-31 10:23:24 +08:00
    这个是网页的请求,如果是 native 本地请求,可以用 okhttp,设置 intercept,也能够拦截所有的请求
    pubby
        10
    pubby  
       2017-05-31 10:28:01 +08:00 via Android
    @codehz 这个 post 数据拿不到
    codehz
        11
    codehz  
       2017-05-31 10:39:17 +08:00
    @pubby #10 是 shouldInterceptRequest(WebView, WebResourceRequest)这个方法。。。之前那个 string 参数的确实只有 get
    pubby
        12
    pubby  
       2017-05-31 11:20:45 +08:00 via Android
    @codehz 试过了,post 请求时没 body 数据
    pubby
        13
    pubby  
       2017-05-31 11:24:44 +08:00 via Android
    @codehz 去年试的,最近 api 有没有改动不知道
    codehz
        14
    codehz  
       2017-05-31 11:28:54 +08:00
    @pubby #12 不是啊,覆盖那个方法后,请求不是你手动发出的么。。你只要按照 WebResourceRequest 的参数发 POST 请求给服务器,然后获取到的值作为返回值,然后顺便记录或者要啥操作都可以了啊
    pubby
        15
    pubby  
       2017-05-31 11:58:45 +08:00
    @codehz 楼主要截获这个请求啊,如果是 post 请求,你没法从这个 WebResourceRequest 里面获取原始需要 post 的数据啊
    qzskaka
        16
    qzskaka  
       2017-05-31 12:18:45 +08:00
    使用 TBS x5
    sunjws
        17
    sunjws  
    OP
       2017-05-31 13:35:32 +08:00
    @codehz 是的 不能获取到原始数据,不要再次拿到此接口进行 post,而是捕捉到原始数据

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

    点点链接这种没问题,遇到表单递交就失败了
    codehz
        22
    codehz  
       2017-05-31 15:04:51 +08:00   1
    @pubby #21 你可以参考这篇文章
    http://blog.csdn.net/kpioneer123/article/details/51438204
    用 JSInterface+注入代码的方式截获请求体
    yankebupt
        23
    yankebupt  
       2017-05-31 15:05:03 +08:00
    猜测楼主做的某某小助手,抓的不是自己的数据...
    那只能希望内容方不开 https 或者跨域检测了。开的的话强行过滤修改估计有小概率被各种检测误杀...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2664 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 05:56 PVG 13:56 LAX 21:56 JFK 00:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86