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 相关文章推荐
关于实现代码语法标亮 dp.SyntaxHighlighter
Feb 02 Javascript
js parentElement和offsetParent之间的区别
Mar 23 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
jQuery中trigger()与bind()用法分析
Dec 18 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
Vuex之理解Mutations的用法实例
Apr 19 Javascript
bootstrapvalidator之API学习教程
Jun 29 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
Sep 29 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 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
php5中类的学习
2008/03/28 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python的一些用法分享
2012/10/07 Python
Python可变参数函数用法实例
2015/07/07 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python多进程重复加载的解决方式
2019/12/13 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
大学生职业规划前言模板
2013/12/27 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
骨干教师培训制度
2014/01/13 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
党员转正介绍人意见
2015/06/03 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
《藏戏》教学反思
2016/02/23 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis