网络正常只有自己访问网站异常一度让你怀疑,是不是被黑了!域名解析异常是如何发生的,如何解决处理及C#编程实现一键修改Hosts文件
首先大家要知道在浏览器上浏览虚拟主机,必须使用Hosts文件或域名系统(DNS)实现主机名到IP地址的解析。在局域网中用Hosts文件或DNS都可以,在Internet上只能用DNS了。
1.当用户输入一个域名以百度为例(www.baidu.com)。
2.首先会到C:\Windows\System32\drivers\etc目录中用Hosts文件去查询相关的IP是否存在,如果存在就会访问该IP地址。
3.不存在该域名解析,那么就会到公网DNS查找。
当你访问域名出现异常,可能Hosts文件被修改了或者DNS被挟持了。
解决方案:
1.首先检查你的C:\Windows\System32\drivers\etc目录下的Hosts文件查看是否存在域名强制转向IP的情况,有的话把这个选项去掉。找不到文件设置隐藏文件可见。

2.DNS被劫持或篡改了。你可以手动修改本地电脑的DNS,默认为空如下图,你可以在首选设置为:114.114.114.114,备用设置为:114.114.115.115;并查杀一下病毒。或者你的路由器被篡改了(设置的密码太弱),建议用修复工具修改。

上面介绍了网络正常域名访问出问题的原因,那么下面就带大家使用C#搞一个Hosts修改工具(大家可以来研究,了解技术,但是不要用来恶搞他人):
private static void updateHosts(string ip,string domain)
{
string path = @"C:\WINDOWS\system32\drivers\etc\hosts";
//通常情况下这个文件是只读的,所以写入之前要取消只读
File.SetAttributes(path, File.GetAttributes(path) & (~FileAttributes.ReadOnly));//取消只读
//1.创建文件流
FileStream fs =ip==""? new FileStream(path, FileMode.Create): new FileStream(path, FileMode.Append);
//2.创建写入器
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
//3.开始写入
bool result = false;//标识是否写入成功
try
{
StringBuilder sb = new StringBuilder();
sb.Append(ip);//IP地址
sb.Append(" ");
sb.Append(domain);//网址
sw.WriteLine(sb.ToString());
result = true;
}
catch (Exception ex)
{
result = false;
}
finally
{
//4.关闭写入器
if (sw != null)
{
sw.Close();
}
//5.关闭文件流
if (fs != null)
{
fs.Close();
}
}
if (result == true)
{
MessageBox.Show("成功!");
File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);//设置只读
}
else
{
MessageBox.Show("失败!");
return;
}
}

在网址部分输入www.baidu.com,之后添加试试看,你还能访问百度吗?
没关系,之后你点清除,你又可以访问了!
源码地址:https://files.cnblogs.com/files/jiyuwu/HostsEdit.zip
网络正常只有自己访问网站异常一度让你怀疑,是不是被黑了!域名解析异常是如何发生的,如何解决处理及C#编程实现一键修改Hosts文件的更多相关文章
- 小兴趣:修改Hosts文件,禁止访问指定网页
不知道Hosts文件什么鬼的朋友可以在网上搜索一下(大牛勿喷- -) 访问网址时,先查询本地的Hosts文件,那么如果我们将Hosts文件中的网址与IP的映射修改之后,将访问错误的IP. 如在文件尾追 ...
- 修改Hosts文件,禁止访问指定网页
不知道Hosts文件什么鬼的朋友可以在网上搜索一下(大牛勿喷- -) 访问网址时,先查询本地的Hosts文件,那么如果我们将Hosts文件中的网址与IP的映射修改之后,将访问错误的IP. 如在文件尾追 ...
- ios修改hosts文件后访问网址114导航域名无法解析问题
当前的问题是打开hosts文件转换成utf8格式浏览发现前面有@之类的非法字符,手动修改后可以访问.
- 用修改hosts的方式来屏蔽某些网站
首先呢,来自知乎的一些问答:修改 hosts 文件可以上一些墙内屏蔽的网站,其原理是什么? (然而通过增/改hosts的方法来FQ已经失效很久了) 然后呢,也可以通过修改hosts来达到屏蔽某些网站的 ...
- 如何在hosts文件添加自己想要解析的网站?及修改hosts的作用
http://union.zhuna.cn/help/144.asp 在Windows2003/XP系统中位于C:\Winnt\System32\Drivers\Etc 目录中,找到host文件. 首 ...
- 通过修改hosts解决gist.github.com无法访问的问题
1.打开mac终端先ping一下 ping 192.30.253.119 如果能ping通的话 ,说明可以访问 2.修改hosts文件,添加如下语句: 192.30.253.118 gist.gith ...
- 从用户访问网站流程开始,细说web网络基础
1.用户访问网站流程框架 2.dns解析原理 3.tcp/ip三次握手过程原理,11种连接状态 4.tcp/ip四次挥手过程原理,11种连接状态 5.http协议原理(www服务的请求过程)请求细节, ...
- htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站
看是否有文件上传操作(POST方法), IPREMOVED--[01/Mar/2013:06:16:48-0600]"POST/uploads/monthly_10_2012/view.ph ...
- iptables的conntrack表满了导致访问网站很慢
iptables的conntrack表满了导致访问网站很慢 转载自:https://my.oschina.net/jean/blog/189935 检查系统conntrack表是否满 现象:突然发现访 ...
随机推荐
- 服务器选型:x86 vs 小型机谁更胜一筹?
市场上关于X86 和小型机的争论从来就没有停止过,在以往的印象当中,x86服务器在中低端形成了统治之势,而小型机则在关键性应用领域(金融.证券.政府等)享有王者地位.但是随着X86服务器的不断发展,这 ...
- 并发包学习(三)-AbstractQueuedSynchronizer总结
J.U.C学习的第二篇AQS.AQS在Java并发包中的重要性,毋庸置疑,所以单独拿出来理一理.本文参考总结自<Java并发编程的艺术>第五章第二节队列同步器. 什么是AbstractQu ...
- 20165233 Java第七、十章学习总结
20165233 2017-2018-2 <Java程序设计>第五周学习总结 教材学习内容总结 ch07 内部类:Java支持在一个类中声明另一个类,这样的类称为内部类,而包含内部类的类称 ...
- Putty使用密钥登陆SSH
平时工作学习必须要使用Windows,在SSH远程连接软件里Putty算是用得比较顺手的,而且很小巧. 但是每次输入密码很麻烦,还容易输错,OpenSSH可以利用密钥来自动登陆,如此一来方便了不少.配 ...
- 《OpenCL异构并行编程实战》第十二至十四章
▶ 第十二章,在其他语言中使用 OpenCL ● JOCL(Java Building for OpenCL),PyOpenCL ● 一个 PyOpenCL 的例子代码,需要 pyopencl 包 i ...
- es6 class 了解
ES6之class ES5中通常通过构造函数和原型的组合形式来创建对象.在ES6中引入class作为对象模板, Class定义语法 class point{ constructor(x,y){ thi ...
- ubuntu安装rtx
终端安装RTX sudo apt-get install wine 安装wine下的window扩展包安装工具winetricks,在终端下输入: sudo wget http://winetrick ...
- 2015年传智播客JavaEE 第168期就业班视频教程17-登录功能业务逻辑实现(代码)
点击红色在业务层接口EmpEbi创建方法login 按F4弹出类继承层次视图 这些快捷键是条件反射了. 业务层做MD5数据加密,不能放在表现层也不能放在数据层必须放在业务层.它属于业务操作. 数据层的 ...
- OPENSSL 生成https 客户端证书
下面说下拿服务器证书.(前提是服务器是https,客户端认证用的时候),服务端不给的时候,我们自己去拿(不给怼他!,哈哈,开个玩笑,都会给的) openssl s_client -connect 域名 ...
- KVC(forKey,forKeyPath)
KVC是Cocoa一个大招,非常牛逼. 利用KVC可以随意修改一个对象的属性或者成员变量(并且私有的也可以修改) 如:Person.m文件中: @implementation Person{ ...