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 相关文章推荐
JS实现拖动示例代码
Nov 01 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
Apr 14 Javascript
浅谈jQuery.easyui的datebox格式化时间
Jun 25 Javascript
js实现导航栏中英文切换效果
Jan 16 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
Apr 13 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
js传递数组参数到后台controller的方法
Mar 29 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
Jul 25 Javascript
Vue export import 导入导出的多种方式与区别介绍
Feb 12 Javascript
javascript单张多张图无缝滚动实例代码
May 10 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
IStream与TStream之间的相互转换
2008/08/01 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
php中memcache 基本操作实例
2015/05/17 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python占用的内存优化教程
2019/07/28 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
为什么要使用servlet
2016/01/17 面试题
英文自我鉴定
2013/12/10 职场文书
五年级音乐教学反思
2014/02/06 职场文书
防沙治沙典型材料
2014/05/07 职场文书
工作保证书
2015/01/17 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
销售员岗位职责范本
2015/04/11 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
房产证明范本
2015/06/19 职场文书
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL