2019独角兽企业重金招聘Python工程师标准>>>

host文件的作用:

简述和原理
  在你用IE浏览网页的时候,是否碰到过这样的情况。有的网站会出现自动弹出的广告窗口,而且不止一个,占用了带宽,又很烦人。还有的网站进入时要求为浏览器安装插件的对话框,比如最常见3721网络实名和目前网上恶评如潮的淘宝网弹出广告。这些东西最讨厌,机器慢的时候,为了等待这个对话框弹出,要等很长时间,甚至有时候会让人以为机器死机,而且每次上都会弹出,十分讨厌。有些人提出可以用Maxthon gosurf等利用IE内核的多窗口浏览器来代替IE,这个方法是不错,不过IE的兼容性是最好的,而且IE普及率在90%以上,用的人还是最多的。还有些人提出可以通过修改注册表来解决,但是这种方法难度大,一般人不太懂,而且存在危险性,万一没改好,会给系统稳定造成很大影响。其实,只要改动一个名叫 hosts的文件,就可以轻松过滤这些烦人的垃圾,而且方便又安全。

  在修改之前,我们先了解一下访问网站的原理。
  用IE浏览器访问网站时,首先通过网络上的DNS(域名解析服务)服务器把网络域名,也就是通常所说的网址(比如www.sian.com.cn)解析成 61.172.201.227的IP地址,然后浏览器才能访问它。对于每个域名请求我们都要等待域名服务器解析后返回IP信息才能访问网站,这样访问网络的效率是比较低的。而根据Windows系统规定,在浏览器进行DNS请求以前,Windows系统会先检查自己的本地硬盘上的hosts文件中是否有这个网址映射关系,如果有就先调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。Hosts文件中存在这个网址的IP地址映射的话,浏览器就是直接访问这个IP地址,而不去请求DNS解析了。

  动手实战
  搞清楚原理之后,我们就可以动手修改了。
  在Windows 98和me系统下,hosts文件在Windows目录,在Windows 2000/XP系统中位于WinntSystem32DriversEtc目录中。Hosts文件没有后缀名,不过用记事本就能打开。右键单击hosts 文件,在“打开方式”中,选择用记事本打开。一般没有修改过的hosts文件,样子如下图

里面只做了一个映射,将localhost映射到127.0.0.1,也就是本机的IP地址。前面有#号的是说明,不起作用的。现在我们要做的事情,就是将这些插件和广告的网址映射到本机IP地址,这样就不会出现弹出窗口了。

  屏蔽插件
  首先去除3721的安装插件的提示对话框,将3721的网址都映射为127.0.0.1。
  如果你已经安装了3721网络实名,先卸载掉。然后再hosts文件中输入以下内容:
  127.0.0.1 www.3721.com
  127.0.0.1 cnsmin.3721.com
  127.0.0.1 download.3721.com
  127.0.0.1 union.3721.com
  127.0.0.1 3721.net
  127.0.0.1 address.3721.com
  127.0.0.1 assistant.3721.com

  这里要注意,IP地址输入完毕,至少输入一个空格后再输入网址,空格多一点没有关系。还有,每行只能输入一个IP地址和网址。

里面只做了一个映射,将localhost映射到127.0.0.1,也就是本机的IP地址。前面有#号的是说明,不起作用的。现在我们要做的事情,就是将这些插件和广告的网址映射到本机IP地址,这样就不会出现弹出窗口了。

  屏蔽插件
  首先去除3721的安装插件的提示对话框,将3721的网址都映射为127.0.0.1。
  如果你已经安装了3721网络实名,先卸载掉。然后再hosts文件中输入以下内容:
  127.0.0.1 www.3721.com
  127.0.0.1 cnsmin.3721.com
  127.0.0.1 download.3721.com
  127.0.0.1 union.3721.com
  127.0.0.1 3721.net
  127.0.0.1 address.3721.com
  127.0.0.1 assistant.3721.com

  这里要注意,IP地址输入完毕,至少输入一个空格后再输入网址,空格多一点没有关系。还有,每行只能输入一个IP地址和网址。

白色框内的就是it世界网站的IP地址,然后在hosts文件中输入以下内容

  61.145.121.108 www.it.com.cn

  输入完毕后保存,以后再访问it世界网站时,浏览器不会请求DNS解析而是直接调用hosts文件,这样就加快了访问速度。其他网站也可以按照这个方法操作。

  2)安全问题
  针对windows调用hosts文件的机制,有些病毒会采取修改hosts文件来达到某些目的。因此要注意hosts文件的安全性。除了安装杀毒软件之外,在修改和保存hosts文件后,要给hosts文件加上只读属性,防止病毒修改。
  右键单击hosts文件,选择“属性”,弹出属性窗口,在“只读”前面打上勾,按“确定”退出

public synchronized static boolean updateHostName(String hostName, String ip) throws Exception {if (StringUtils.isEmpty(hostName) || StringUtils.isEmpty(ip)) {throw new BusinessException("HostName or Ip can't be null.");}if (StringUtils.isEmpty(hostName.trim()) || StringUtils.isEmpty(ip.trim())) {throw new BusinessException("HostName or Ip can't be null.");}String splitter = " ";String fileName = null;// 判断系统if ("linux".equalsIgnoreCase(System.getProperty("os.name"))) {fileName = "/etc/hosts";} else {fileName = "C://WINDOWS//system32//drivers//etc//hosts";}// 更新设定文件List < ? > lines = FileUtils.readLines(new File(fileName));List <String> newLines = new ArrayList <String>();boolean findFlag = false;boolean updateFlag = false;for (Object line : lines) {String strLine = (String) line;if (StringUtils.isNotEmpty(strLine) && !strLine.startsWith("#")) {strLine = strLine.replaceAll("/t", splitter);int index = strLine.toLowerCase().indexOf(hostName.toLowerCase());if (index != -1) {String[] array = strLine.trim().split(splitter);for (String name : array) {if (hostName.equalsIgnoreCase(name)) {findFlag = true;if (array[0].equals(ip)) {// 如果IP相同,则不更新newLines.add(strLine);break;}// 更新成设定好的IP地址StringBuilder sb = new StringBuilder();sb.append(ip);for (int i = 1; i < array.length; i++) {sb.append(splitter).append(array[i]);}newLines.add(sb.toString());updateFlag = true;break;}}if (findFlag) {break;}}}newLines.add(strLine);}// 如果没有Host名,则追加if (!findFlag) {newLines.add(new StringBuilder(ip).append(splitter).append(hostName).toString());}if (updateFlag || !findFlag) {// 写设定文件FileUtils.writeLines(new File(fileName), newLines);// 确认设定结果String formatIp = formatIpv6IP(ip);for (int i = 0; i < 20; i++) {try {boolean breakFlg = false;InetAddress[] addressArr = InetAddress.getAllByName(hostName);for (InetAddress address : addressArr) {if (formatIp.equals(address.getHostAddress())) {breakFlg = true;break;}}if (breakFlg) {break;}} catch (Exception e) {logger.warn(e.getMessage());}Thread.sleep(3000);}}return updateFlag;}private static String formatIpv6IP(String ipV6Addr) {String strRet = ipV6Addr;StringBuffer replaceStr;int iCount = 0;char ch = ':';if (StringUtils.isNotEmpty(ipV6Addr) && ipV6Addr.indexOf("::") > -1) {for (int i = 0; i < ipV6Addr.length(); i++) {if (ch == ipV6Addr.charAt(i)) {iCount++;}}if (ipV6Addr.startsWith("::")) {replaceStr = new StringBuffer("0:0:");for (int i = iCount; i < 7; i++) {replaceStr.append("0:");}} else if (ipV6Addr.endsWith("::")) {replaceStr = new StringBuffer(":0:0");for (int i = iCount; i < 7; i++) {replaceStr.append(":0");}} else {replaceStr = new StringBuffer(":0:");for (int i = iCount; i < 7; i++) {replaceStr.append("0:");}}strRet = ipV6Addr.trim().replaceAll("::", replaceStr.toString());}return strRet;}

转载于:https://my.oschina.net/u/3647620/blog/1552581

用Java修改Window或者Linux下的hosts文件相关推荐

  1. Linux 下的 hosts文件

    2019独角兽企业重金招聘Python工程师标准>>> hosts 文件 目录在 /etc/hosts netstat -ntlp //linux 下查看端口 转载于:https:/ ...

  2. linux 修改文件名编码格式,linux下怎么改变文件的编码格式

    1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式:setfileencoding=utf-82.enconv转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如 ...

  3. Linux操作系统下/etc/hosts文件

    1. 关于/etc/host,主机名和IP配置文件 Hosts - The static table lookup for host name(主机名查询静态表) Linux 的/etc/hosts是 ...

  4. Linux下各种压缩文件的解压方法

    对于刚刚接触Linux 的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows 下最常见的压缩文件就只有两种,一是,zip,另一个是.rar ...

  5. linux 音频文件长度,Linux下压缩音频文件

    安装工具 sudo apt-get install lame 具体用法可以查看帮助  lame --help 通过更改音频文件的帧数 可以让文件变小  但是音质也会随之下降 现在比较多的mp3文件是1 ...

  6. (转载)linux下的find文件查找命令与grep文件内容查找命令

    linux下的find文件查找命令与grep文件内容查找命令 转载于和感谢:linux下的find文件查找命令与grep文件内容查找命令 目录 1.前言 1.1 find命令和grep命令的区别 2. ...

  7. Linux操作系统下/etc/hosts文件配置方法

    1.关于/etc/host,主机名和IP配置文件 Hosts - The static table lookup for host name(主机名查询静态表) hosts文件是Linux系统中一个负 ...

  8. 【转】Linux操作系统下/etc/hosts文件配置方法

    原文链接 http://my.oschina.net/liting/blog/387544 1.关于/etc/host,主机名和IP配置文件 Hosts - The static table look ...

  9. Linux下的压缩文件剖析

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rap.可 ...

最新文章

  1. HTTP 499 状态码 nginx下 499错误
  2. UITableView中selectRowAtIndexPath: animated:scrollPosition滚动到指定Row
  3. Markdown2.py And Pygments Test
  4. 暖通空调水系统分类、“管制”和同程异程式的优缺点
  5. MangosCfg文件中文说明
  6. app中使用用户名/邮箱/手机号登录的思路分析
  7. Netron 可视化Pytorh模型架构
  8. 推荐的四款产品原型设计工具
  9. Flink on Yarn报错:Container released on a *lost* node
  10. Cadence Allegro PCB设计88问解析(二) 之 Allegro中Artwork层复用(导入导出)
  11. 解决:Excel 下拉项数据报 输入内容不能大于255个字符
  12. vue.runtime.esm.js?2b0e:619 [Vue warn]: Property “XX“ must be accessed with “$data._tos“ because
  13. Genero BDL 数据类型(1)
  14. Linux alias查看/设置 命令别名
  15. mysql 分区 less than_mysql分区
  16. 疫情面试了13家企业软件测试岗位,面试题整理汇总,真的牛
  17. DEEPIN系统下安装wine
  18. DC综合后处理(查看生成的网表和报告)
  19. google的广告页面代码的js
  20. 年报背后:顺丰疯狂的错位价格战

热门文章

  1. Android Canvas绘图
  2. 思考思维(1):思考和深度思考总结
  3. (转)Lisp的本质
  4. 上市公司板块其他分类
  5. JDBC连接MySQL数据库(一)
  6. 【COCO】COCO2017数据集下载百度云
  7. IISExpress异常退出的问题
  8. 公司海外邮箱注册指南,外贸公司邮箱注册流程
  9. 用Python给图片添加水印的3种方法,简单实用
  10. 易语言大漠把游戏窗口嵌入辅助窗口