如何模拟国外访问?

背景

最近公司一次App Store审核时,审核失败,原因是审核人员在美国登录访问,属于异地登录被风控拦截。
添加白名单后,同事找了美国的一个朋友,帮忙访问,验证没有问题
后面就在想怎么简单模拟出在国外访问的效果.

模拟方式

尝试了以下方式

  1. 绑定hosts方式
  2. 找一个美国的朋友,帮忙访问
  3. 在国外云服务器上面安装一个模拟器
  4. 在国外云服务器上面安装一个代理

先说结果,1和3是不可行的,2和4可行
最初以为绑定hosts就可以,虽然通过国外中转了一下,但是客户端IP还是客户端的
模拟器一般不允许安装在虚拟机上,而物理机成本又太高
找美国朋友方式,前提条件比较多,暂不讨论,下面主要说一下代理方式

代理方式

先说一下代理的背景:有的公司内部限制了外网访问,只允许部分服务器访问外网,如果要访问外网,就需要中转,而这台中转的服务器一般叫着代理服务器;这样通过代理服务器就能访问外网了。
通过代理访问,对于服务端来说记录的客户端IP是代理的IP,而不是原始访问的IP。
基于代理这样的原理,我们就可以在国外的云服务器上面,搭建一个代理服务器,然后通过代理去访问目标服务器,这样就模拟出国外访问效果。

具体步骤

  1. 在阿里云或vultr里创建云服务器
  2. 安装代理软件
  3. 客户端配置远程代理
  4. 访问目标服务器

步骤1、3、4都很简单就略过,重点说步骤2

代理安装

代理软件一般选择nginx,但是nginx适合代理http,对于https,由于有证书校验问题,就不合适了。
幸好有牛人,通过改造nginx的方式很好支持了https,详细安装过程见:
https://github.com/chobits/ngx_http_proxy_connect_module#example
安装是基于源代码方式,过程还是比较复杂,为简化安装,把安装好的打了一个包,做了一个绿色版的,下载就可以使用
见:https://github.com/yanchangyou/nginx-proxy

后记

由于我国限制了部分国外服务的访问:如谷歌、Facebook,为防止使用代理方式访问这些网站,会对这类访问进行拦截,导致代理服务不可用,vultr目前拦截的厉害,推荐使用阿里云服务器,并且不要去访问google、Facebook等网站,防止被GWF拦截.

同理能模拟跨省登录,只需要云服务器在对应的省市