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 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
Sep 15 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
Oct 29 Javascript
JavaScript之引用类型介绍
Aug 10 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
Aug 18 Javascript
JavaScript中的this,call,apply使用及区别详解
Jan 29 Javascript
Node.js文件操作方法汇总
Mar 22 Javascript
javascript this详细介绍
Sep 19 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
vue-quill-editor富文本编辑器简单使用方法
Sep 21 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 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与javascript的两种交互方式
2006/10/09 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
原生js实现验证码功能
2017/03/16 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python中用于计算对数的log()方法
2015/05/15 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python logging模块的使用总结
2019/07/09 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python编写俄罗斯方块
2020/03/13 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
大一期末自我鉴定
2013/12/13 职场文书
师生聚会感言
2014/01/26 职场文书
高三励志标语
2014/06/05 职场文书
给朋友的赠语
2015/06/23 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS