150行Node.js实现的dns代理工具


Posted in Javascript onAugust 02, 2019

工具地址:github.com/Yi-love/dns…

安装: npm install dns-proxy-server -g

这个我觉得应该还是挺实用的一个工具。开发过程中我们需要配置IP来访问测试环境域名。

使用电脑开发测试还好,直接使用Switch hosts! , 修改域名IP即可访问特定IP的域名网站。

那么如何在手机上也尽可能容易的访问到测试环境呢?

手机如何访问到内部网络特定IP域名?

手机要访问到测试环境的域名,我们需要做的就是建立一个代理服务,然后手机通过代理服务访问测试环境域名。

常见的代理方式:

  1. 请求代理
  2. DNS代理

请求代理

无非就是作为一个中间人,代替手机访问测试环境域名,然后将请求结果返回手机。如果代理的是http请求还好,遇到https请求代理的话可以不是那么灵验了。虽然fiddler可以配置证书代理 https 请求,但是实际效果并不如人意,失败率还挺高的。

DNS代理

DNS代理说小一点就是个DNS解析服务,说大了就是个域名系统。

DNS代理只会告诉手机当前访问域名在哪个IP上。之后DNS代理访问并不会参与手机和测试环境域名直接的请求代理。

所以说:请求代理和DNS代理最大的区别就在这里,请求代理会参与请求,DNS不会参与。

为什么需要DNS代理

当前app里面有很多的内嵌页面(都是https请求), 使用请求代理,可能会App都登陆不了,这个适合选择DNS更合适。

但是DNS代理是看不见请求数据的,所以在需要抓包的场景,DNS无法做到。

使用 dns-proxy-server 服务

dns-proxy-server 是使用Node.js纯原生编写。使用非常方便。非常适合前端在手机app里预览内嵌页面。

安装:

npm install dns-proxy-server -g

使用:

dnsproxy[ ip[ port]]

案例: dnsproxy 172.28.24.1

150行Node.js实现的dns代理工具

mac用户需要使用 sudo dnsproxy [ip [port]] 方式。因为DNS绑定的是机器53端口。

配合 Switch hosts! 爽歪歪!!!!。

Javascript 相关文章推荐
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
Dec 29 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
Eclipse配置Javascript开发环境图文教程
Jan 29 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 Javascript
Vue监听数组变化源码解析
Mar 09 Javascript
详解用Node.js写一个简单的命令行工具
Mar 01 Javascript
JavaScript中使用import 和require打包后实现原理分析
Mar 07 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 Javascript
javascript数组元素删除方法delete和splice解析
Dec 09 Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 Javascript
el-select 下拉框多选实现全选的实现
Aug 02 #Javascript
js动态获取时间的方法分析
Aug 02 #Javascript
微信小程序实现语音识别转文字功能及遇到的坑
Aug 02 #Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 #jQuery
vue单页应用的内存泄露定位和修复问题小结
Aug 02 #Javascript
vue回到顶部监听滚动事件详解
Aug 02 #Javascript
微信小程序npm引入vant-weapp的踩坑记录
Aug 01 #Javascript
You might like
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
php无序树实现方法
2015/07/28 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
JQuery触发事件例如click
2013/09/11 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
毕业生就业自荐信
2013/12/04 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
党员大会主持词
2014/04/02 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android