Charles模拟苹果IP段去请求网络

300 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

前言

需求:验证特定IP请求网络时,是否会对该IP做不同的操作

我在测试iOS的包体时,由于iOS提审的特殊性,iOS的包体开发会写一个通过是否为苹果IP段的IP来判断审核期间和非审核期间的功能,那么测试的时候,就需要分别测试审核期间和非审核期间的相关功能。

  • 审核期间就是认为是苹果那边的人审核应用,我们需要给到苹果审核人员看到的是正常合规的内容,这些内容尽可能的简洁完整、符合苹果审核规定,例如不出现兑换码、引导评分、赌博、抽奖、色情图片等内容。

  • 非审核期间就是用户这边的看到的正常内容。

审核期间就假设苹果审核IP段是17.0.0.1~17.0.0.255,那么判断到是苹果IP的网络请求,就专门针对苹果IP打开应用时展示不一样的内容。如果是非审核期间,那么给到用户看到的就是正常的内容。

废话不多说,我是用下面这个方法来验证的。

验证方法

使用Charles工具里的Rewrite 功能添加请求头“X-Forwarded-For”:17.0.0.1

设置方法:

1.进入到Rewrite Settings界面设置添加规则,例如我这里设置的是匹配juejin.cn这个域名

image.png

2.设置添加类型,添加类型选择“Add Header”,选中Request,仅添加请求头不需要匹配信息。

3.在Replace下输入

Name字段:X-Forwarded-For

Value:17.0.0.1

4.点击OK即可设置成功。

image.png

5.再次请求接口时,会在请求头看到以IP“17.0.0.1”去请求服务端。

image.png

X-Forwarded-For解释

X-Forwarded-For是一个HTTP拓展头部,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP。现在已经成为标准,被各种代理工具、负载均衡、转发服务等使用了。在抓包工具上,用这个X-Forwarded-For请求头来告诉服务器,我现在是用xxx这个ip来请求服务器的意思。

总结

简单来说就是使用Charles拦截请求信息,重写网络请求时添加一个请求头信息来伪造的一个IP,告诉服务端,现在是xxx的IP去请求服务端,让服务端返回对应内容。

如果有针对IP做不同内容返回、对指定IP切审核服、切状态、返回不同的内容等内容,都可以用该方法去验证。