美文网首页JVMAndroid开发Android知识
怎样抓取jvm的https网络请求

怎样抓取jvm的https网络请求

作者: 亚克西 | 来源:发表于2017-02-18 11:19 被阅读48次

    用gradle构建时,常有需要去查看其网络请求,怎样抓取其网络请求呢?下面介绍gradle代理到charles上的抓包办法。

    由于gradle是运行在jvm上,所以配置jvm的代理方法,即是实现了对gradle的代理,代理设置分为步:

    1. 设置jvm的代理

    在gradle上设置jvm的代理有两种方式

    • 第一种方法,在gradle.properties中设置:

    systemProp.http.proxyHost=127.0.0.1
    systemProp.http.proxyPort=8888
    systemProp.https.proxyHost=127.0.0.1
    systemProp.https.proxyPort=8888

    gradle在运行时自动会将属性设置加载到jvm中。

    • 第二种方法,以运行参数的方式设置:

    gradlew
    -Dhttp.proxyHost=127.0.0.1
    -Dhttp.proxyPort=8888
    -Dhttps.proxyHost=127.0.0.1
    -Dhttps.proxyPort=8888

    代理设置完成后,发现http请求是可以在charles中正常代理查看的,但https请求却无法代理成功。原因是jvm上https的ssl握手环节证书验证不通过。由于Charles是以中间人的方式代理https请求,所以需要将charles的证书添加到jvm信任证书的列表中去。

    2.添加代理证书倒jvm的证书信任列表

    java工具包中集成了证书管理工具keytool,只需要用它将代理工具的证书(charles证书)导入到jvm证书信任列表中即可。
    导入方法:

    sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias certAliasName -file certPath.cert

    JAVA_HOME是系统的java的安装目录。
    jvm证书仓库的默认密码是“changeit”,如果修改过,请用重设的密码替换它。
    certAliasName 是你给导入的证书起的名字。
    certPath.cert 是导入的证书路径

    相关文章

      网友评论

        本文标题:怎样抓取jvm的https网络请求

        本文链接:https://www.haomeiwen.com/subject/lwmrwttx.html