客户端开发中的后端数据拦截与修改

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()。执行...

【讨论】:

以上是关于客户端开发中的后端数据拦截与修改的主要内容,如果未能解决你的问题,请参考以下文章

我正在开发一个 Android 应用程序并使用 Firebase 作为我的后端

Struts2 JSON拦截器未填充我的Action类

web开发之http和wsgi

用 Python 中的 web3.py 库开发 Dapp

Kubernetes 中的后端/前端服务之间没有通信

你最喜欢的后端开发框架是什么?