客户端开发中的后端数据拦截与修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了客户端开发中的后端数据拦截与修改相关的知识,希望对你有一定的参考价值。
参考技术A Mobile App/SDK开发中会经常调用后端REST接口进行CRUD操作,但RESTful API 可能定义好但尚未开发完成,或有实现缺陷,这就要求client能mock接口数据或直接修改API返回数据,以保证APP UI或Mobile SDK API能按设计工作。为实现该目的且最好平台(android & ios)无关,将探讨基于mitmproxy的抓包和数据拦截。
不同客户端需要配置相应CA证书已进行数据的加解密,否则无法与服务端建立安全的连接。例如
会报如下错误
不预置和信任证书的情况下可使用 --insecure 模式或 --cacert 指定证书路径来解决。
或
最快的方式是在客户端浏览器地址栏中访问 mitm.it ,然后根据向导安装和配置证书。若该地址不能正常访问,如显示为 “If you can see this, traffic is not passing through mitmproxy.“ ,此时需要手动配置证书,否则HTTPS网页或Apps的请求不能正常加解密。
测试
结果
https://discourse.mitmproxy.org/t/self-created-ca-client-certificates/605/4
https://docs.mitmproxy.org/stable/concepts-certificates/
参考资料
使用石墨烯,在与客户端发送graphql请求时,如何拦截+内省发布数据?
【中文标题】使用石墨烯,在与客户端发送graphql请求时,如何拦截+内省发布数据?【英文标题】:Using graphene, when sending a graphql request with a client, how can I intercept + introspect post data? 【发布时间】:2020-12-07 02:58:33 【问题描述】:使用石墨烯,当向客户端发送出站graphql请求时,如何拦截+内省查询参数并发布数据?
此请求正在从一个后端服务发送到另一个后端服务 两个查询和突变都是通过 POST 发送的我的用例是我需要对数据有效负载(dict)进行加密签名,但要做到这一点,我需要石墨烯完成将查询转换为 GET 或将突变转换为 POST 的步骤,然后才能获取数据来自查询参数或帖子正文。
签署请求所需的输入数据是dict:
data =
"operationName": "blah",
"variables": ,
"query": "fancy graphql query here"
【问题讨论】:
【参考方案1】:此请求数据:
调用client.execute时可用 在石墨烯中间件中不完全可用,因为我们无法访问解析信息中查询的字符串值(至少在测试客户端中)因此,唯一可以访问这些输入的地方是在调用 client.execute 之前,或者通过制作 Client 类的自定义版本,实现一个 execute 方法,在那里烘焙签名,然后调用 super()。执行...
【讨论】:
以上是关于客户端开发中的后端数据拦截与修改的主要内容,如果未能解决你的问题,请参考以下文章