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 相关文章推荐
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 Javascript
jQuery实现三级联动效果
Mar 02 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
对angular 监控数据模型变化的事件方法$watch详解
Oct 09 Javascript
setTimeout与setInterval的区别浅析
Mar 23 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
js canvas实现俄罗斯方块
Oct 11 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 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
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
js中bool值的转换及“&&”、“||”、 “!!”详解
2017/12/21 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
代码分析Python地图坐标转换
2018/02/08 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
Keras loss函数剖析
2020/07/06 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
项目合作协议书范本
2014/04/16 职场文书
《画风》教学反思
2014/04/16 职场文书
护林防火标语
2014/06/27 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
地道战观后感2000字
2015/06/04 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers
mysql 获取相邻数据项
2022/05/11 MySQL