开发手机APP和 H5 应用经常需要在本地和线上环境分开测试,一般想到的操作都是修改hosts,我也一直这么干的,但手机上修改hosts是需要 ROOT权限的,这样太过麻烦,还有变砖头的风险,而且有些手机根本不能ROOT的。

忙和了一下午,总算完全达到预期,有点收获,下面说说重点,主要是两个:

  1. 本地 DNS 服务
  2. 网络代理

做个本地的 DNS 服务,有点像DNS劫持的感觉,这个是一劳永逸的办法
首先,你需要一个Linux 虚拟机或一台服务器
我下面的配置使用的 Centos7.0 系统,不通版本可能有些差别的。

一、安装 DNSMasq

# 安装
yum install dnsmasq -y service dnsmasq start# 编辑配置参数vi /etc/dnsmasq.conf# 查找 resolv-file 去掉注释符,添加文件路径# 表示 dnsmasq 会从这个指定的文件中寻找上游dns服务器
resolv-file=/etc/resolv.conf# 查找 no-hosts , 确保前面有 # 井号的(表示被注释掉的),否则 hosts 配置不起作用
# 监听的IP
listen-address=127.0.0.1,192.168.0.103strict-orderaddn-hosts=/etc/hostscache-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
DNS3=202.101.172.35
#DNS3=202.101.172.47# 保存后, resolv.conf 文件内容会自动更新的cat /etc/resolv.conf# 查看DNS是否已添加进去# 注册服务
chkconfig dnsmasq on# 重启
/etc/init.d/dnsmasq restart# centos7 下使用的命令
systemctl restart dnsmasq# 检查是否安装成功netstat -tunlp|grep 53yum install bind-utils# 测试是否启用 DNS 配置dig m.ai9475.com# 编辑 hosts 文件,配置本地 DNS 劫持域名 IP 的映射关系vi /etc/hosts192.168.0.105 m.ai9475.com

这样服务端的 DNS 劫持就基本配置好了
下一步还需要在手机上设置 DNS 对应的 IP,

打开 网络设置 -> wifi连接 -> 修改网络 -> 高级 -> 静态IP方式 -> 修改第一个NS的IP即可,第二个可用正常的公网DNS

如下图:

最后注意:修改 hosts 之后,需要重启 dnsmasq 还有 network 最好也重启

二、使用本地网络代理

这个方法比较有局限性,对 H5 网页应用还可以,对部分原生 APP 可能无效哦,但有个好处是配合一些软件可以做前端的抓包查看,对测试接口之类的查看数据很有用

我用到过两个软件,
1. Fiddler
这个软件使用很方便,网上有很多介绍,这里就不说了,但据说仅支持 windows 平台
2. Whistle
这个是开源的项目,跨平台,我目前用的是这个,配置也很简单
下面简单说下如何安装使用

依赖 Nodejs,所以先安装 nodejs
我这里图方便,就用 yum 的方式安装了

curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum install -y nodejs

下载速度可能有些忙,10KB/s 下载了好半天才下完,耐心等吧

npm install cnpm -g --registry=https://registry.npm.taobao.org
cnpm install -g whistle
w2 start

这样就完成了。。。

查看代理请求数据,就是抓包数据

http://127.0.0.1:8900
http://127.0.0.1:8899

:8899 是代理的端口,但也可以查看抓包数据

两个端口都可以看,下图看看效果先(图片可以直接拖拽查看大图)

其他的就直接看官方说明文档吧,中文的,很清晰明了
https://avwo.github.io/whistle/install.html

后面就是手机上操作和上面的 DNS 设置是同一个地方

打开 网络设置 -> wifi连接 -> 修改网络 -> 高级 -> 代理(手动配置) -> 填写局域网中服务器的IP,如192.168.0.103,端口 8899 

如下图:

最后就是修改服务器上的 hosts,参考上方 DNS 配置 hosts 的操作是一样的

差不多就这样设置好了。

最后需要注意的就是清除手机上的缓存,一定要关闭浏览器和应用,清理内存后再打开,否则手机上的 DNS 和网络设置可能没有切换过来的。

以上配置我都是在 android 设备上测试的, ios 没有应用可测试,不过按理说应该是一样的效果的。
虽然代理的方法对有些APP 不一定有用,但建议还是 DNS 和 代理一起上吧。。。就这样了。

手机无须ROOT不用修改hosts即可在本地测试安卓、苹果APP和H5应用相关推荐

  1. PHP安卓苹果APP在线封装打包制作源码 H5手机网站转APP 免签封装绿标

    简介: PHP安卓苹果APP在线封装打包制作源码 H5手机网站转APP 免签封装绿标 更新记录: 1.解决ios无法下载的问题 2.优化打包流程 修复原先各种问题 3.可自行上传安卓证书 4.可自行上 ...

  2. 不root如何修改host+android5.1,王者荣耀安卓手机免ROOT不用电脑修改战区2020最新版教程...

    大家好,这里是小北杂货店,我是小北.更多好玩技巧请前往[小北杂货店]微信公众号领取. 今天小北教大家如何免ROOT不用电脑修改王者荣耀战区,不过这里教的是安卓手机版的,苹果IOS版的修改战区教程请点击 ...

  3. 修改hosts文件在本地调试微信JS-SDK

    1.修改hosts文件 路径:c:\windows\system32\drivers\etc 2.打开测试公众号填写第一步修改的域名地址 JS接口安全域名 3.工程文件,vue.config.js d ...

  4. 苹果手机10秒解除锁屏_Redmi 10X手机密码忘了怎么办?手机10秒解除锁屏,三步解开安卓苹果密码【详细步骤】...

    智能手机在使用过程中,经常会遇到忘记密码的情况.而自己的粗心大意,导致手机无法开机,是非常烦的一件事情.今天的主角是安卓手机,针对密码忘了怎么办的问题,教大家刷机的方法,帮大家来详细解决密码忘记无法开 ...

  5. (已更新)Discuz手机模板:NVBING5-APP手机版,界面美观大方,可封装安卓/苹果APP,模板文件+插件+分类信息导入文件

    Discuz手机模板:NVBING5-APP手机版--是一款界面美观大方的完整Discuz手机模板,附带模板+插件+分类信息导入文件+详细的安装说明+模块说明. 功能介绍 *支持封装安卓APP.苹果A ...

  6. linux hosts文件如何修改_如何修改hosts文件?让你简单方便快捷管理

    如何修改hosts文件?几种修改方法让你简单方便快捷,hosts 是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库&q ...

  7. 如何添加修改hosts文件?几种修改方法让你简单方便管理

    如何修改hosts文件?几种修改方法让你简单方便快捷,hosts 是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库&q ...

  8. 命令行修改文件文件夹访问权限 cacls, 修改hosts内容方法

    背景 日常使用Windows的过程中,hosts(C:\Windows\System32\drivers\etc)文件可能被一些程序串改,因此在网上找到禁止/允许修改hosts文件的bat脚本,但是在 ...

  9. Android手机修改hosts文件

    有的时候,我们需要在内网环境测试软件,内网将域名解析的时候比较麻烦,Android手机直接修改hosts文件可以带来方便. hosts文件的作用实际上就是将域名解析为ip地址,比如你的hosts文件里 ...

最新文章

  1. 2022王道操作系统名词解释概念题
  2. pandas对dataframe进行排序:单数据列排序、多数据列排序、NA值排序位置、排序算法
  3. boost::type_erasure::param相关的测试程序
  4. python做excel数据分析统计服_Python也能做到Excel那样,条件统计轻松解决工作需求...
  5. 记录一些我关注的人的博客
  6. Linux高频命令汇总,高频Linux命令
  7. Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现
  8. 【前端小技能】ElementUI表格双击可编辑--开箱即用
  9. 兼职开发怎样才能变成技术合伙人?
  10. 软件需求包括3个不同的层次――业务需求、用户需求和功能需求
  11. 移动跨平台ReactNative动画组件Animated【14】
  12. 微信小程序 - excel通过云函数导入云数据库
  13. 在kile中使用Astyle插件使代码自动对齐
  14. 小程序中打开pdf文件(wx.downloadFile+wx.openDocument)
  15. Java基础学习—— IO流
  16. 深度学习笔记整理(五)——提高泛化能力的方法
  17. npm国外镜像,国内镜像互相切换
  18. Nuendo 5 v5.1.1 WiN 英文精简版音乐制作软件下载
  19. 解决重复提交问题(前端和后端的解决方案java版)
  20. 【链表】C++链表反转、链表逆序打印

热门文章

  1. Promise难懂?一篇文章让你轻松驾驭
  2. 建设中的海淀基督教堂
  3. 矿坑系列 ── Structured binding declaration
  4. Cocos2Dx之动画-欧阳左至
  5. 通过百度简单获取本地 ip 地址
  6. 从供给面到需求面研究方法论的转变-中国视角下的宏观经济
  7. 《幸福就在你身边》第六课、心动就要行动【哈佛大学幸福课精华】
  8. 聚观早报 | 《三体》将于2023年上映;李恩祐加入京东董事会
  9. Gor 流量复制实战
  10. RK3568+FPGA+翼辉操作系统在电力产品的应用