⼿机⽆须ROOT不⽤修改hosts即可在本地测试安卓、苹果APP和
H5应⽤
开发⼿机APP和 H5 应⽤经常需要在本地和线上环境分开,⼀般想到的操作都是修改hosts,我也⼀直这么⼲的,但⼿机上修改hosts是需要ROOT权限的,这样太过⿇烦,还有变砖头的风险,⽽且有些⼿机根本不能ROOT的。
忙和了⼀下午,总算完全达到预期,有点收获,下⾯说说重点,主要是两个:
1. 本地 DNS 服务
2. ⽹络代理
做个本地的 DNS 服务,有点像DNS劫持的感觉,这个是⼀劳永逸的办法
⾸先,你需要⼀个虚拟机或⼀台服务器
我下⾯的配置使⽤的 Centos7.0 系统,不通版本可能有些差别的。
⼀、安装 DNSMasq
# 安装
yum install dnsmasq -y
service dnsmasq start
# 编辑配置参数
vi /f
# 查 resolv-file 去掉注释符,添加⽂件路径
# 表⽰ dnsmasq 会从这个指定的⽂件中寻上游dns服务器
resolv-file=/f
# 查 no-hosts , 确保前⾯有 # 井号的(表⽰被注释掉的),否则 hosts 配置不起作⽤
# 监听的IP
listen-address=127.0.0.1,192.168.0.103
strict-order
addn-hosts=/etc/hosts
cache-size=32768
# 配置到⽹卡参数,centos7 和 6 的⽹卡名是不同的,⽤ifconfig 查看替换下
# centos 7 以前
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# centos7 不⼀定相同
vi /etc/sysconfig/network-scripts/ifcfg-enp3s0
#  最多只能写3个,注意原配置中若存在则需要调整
DNS1=127.0.0.1
DNS2=192.168.0.103
网页appDNS3=202.101.172.35
#DNS3=202.101.172.47
# 保存后, f ⽂件内容会⾃动更新的
cat /f
# 查看DNS是否已添加进去
# 注册服务
chkconfig dnsmasq on
# 重启
/etc/init.d/dnsmasq restart
# centos7 下使⽤的命令
systemctl restart dnsmasq
# 检查是否安装成功
netstat -tunlp|grep 53
yum install bind-utils
# 测试是否启⽤ DNS 配置
dig m.ai9475
# 编辑 hosts ⽂件,配置本地 DNS 劫持域名 IP 的映射关系
vi /etc/hosts
192.168.0.105 m.ai9475
这样服务端的 DNS 劫持就基本配置好了下⼀步还需要在⼿机上设置 DNS 对应的 IP,
打开⽹络设置 -> wifi连接 -> 修改⽹络 -> ⾼级 -> 静态IP⽅式 -> 修改第⼀个NS的IP即可,第⼆个可⽤正常的公⽹DNS
如下图:
最后注意:修改 hosts 之后,需要重启 dnsmasq 还有 network 最好也重启
⼆、使⽤本地⽹络代理
这个⽅法⽐较有局限性,对 H5 ⽹页应⽤还可以,对部分原⽣ APP 可能⽆效哦,但有个好处是配合⼀些软件可以做前端的抓包查看,对测试接⼝之类的查看数据很有⽤
我⽤到过两个软件,
1. Fiddler
这个软件使⽤很⽅便,⽹上有很多介绍,这⾥就不说了,但据说仅⽀持 windows 平台
2. Whistle
这个是开源的项⽬,跨平台,我⽬前⽤的是这个,配置也很简单
下⾯简单说下如何安装使⽤
依赖 Nodejs,所以先安装 nodejs
我这⾥图⽅便,就⽤ yum 的⽅式安装了
curl --silent --location desource/setup_4.x | bash -
yum install -y nodejs
下载速度可能有些忙,10KB/s 下载了好半天才下完,耐⼼等吧
npm install cnpm -g --registry=registry.
cnpm install -g whistle
w2 start
这样就完成了。。。
查看代理请求数据,就是抓包数据
:8899 是代理的端⼝,但也可以查看抓包数据
两个端⼝都可以看,下图看看效果先(图⽚可以直接拖拽查看⼤图)
后⾯就是⼿机上操作和上⾯的 DNS 设置是同⼀个地⽅
打开⽹络设置 -> wifi连接 -> 修改⽹络 -> ⾼级 -> 代理(⼿动配置) -> 填写局域⽹中服务器的IP,如192.168.0.103,端⼝ 8899
如下图:
最后就是修改服务器上的 hosts,参考上⽅ DNS 配置 hosts 的操作是⼀样的
差不多就这样设置好了。
最后需要注意的就是清除⼿机上的缓存,⼀定要关闭浏览器和应⽤,清理内存后再打开,否则⼿机上的 DNS 和⽹络设置可能没有切换过来的。
以上配置我都是在设备上测试的,没有应⽤可测试,不过按理说应该是⼀样的效果的。
虽然代理的⽅法对有些APP 不⼀定有⽤,但建议还是 DNS 和代理⼀起上吧。。。就这样了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。