Ryan Shang

生死看淡,不服就干

0%

移动端iOS支付测试方法

背景

在商业产品的业务中,会有接入iOS支付的需求,但是iOS支付接入,会有这三个点:

  1. 需要配置host访问业务的沙箱环境
  2. 中间需要接口请求访问苹果相关服务
  3. 苹果服务会有SSL Pinning导致这些接口走代理服务会被iOS拦截

这就导致一个问题,手机配置host需要使用charles走代理,但是苹果相关接口会因此无法访问,陷入僵局

方案

既然无法在抓包时处理这种情况,就想到使用设备的自动代理,同过js脚本进行分流,让特定域名不走代理即可。

使用手机的代理时,配置wifi网络的代理为自动,并填写一个url,指向一个代理js文件,js文件内容如下:

1
2
3
4
5
6
7
8
9
10
function FindProxyForURL(url, host) {
if (
shExpMatch(host, "*.apple.com") ||
shExpMatch(host, "*.itunes.apple.com") ||
shExpMatch(host, "*.mzstatic.com")
) {
return "DIRECT";
}
return "PROXY xx.xx.xx.xx:8888; DIRECT;";
}

大致意思是匹配域名,如果是苹果相关的几个域名,走直连,其他的走代理,PROXY xx.xx.xx.xx:8888中的IP和端口就是代理服务器的IP和端口。