2013年2月22日星期五

如何解决DNS污染和DNS劫持


DNS污染和DNS劫持是非常常见的现象。

输入了一个错误的URL后,本应该出现的404页面却是电信114,
正常访问网站时出现的电信的小广告,
使用了VPN却依然无法正常访问某些境外网站,
以及各种钓鱼页面,
这些都是遭到DNS污染和DNS劫持的现象。
本站推荐给大家一个小程序,可以一劳永逸的解决这个问题
点此下载 ,安装(Vista/Win7需要以管理员身份运行)。
然后修改你的网络适配器设置(根据你的上网方式选择适配器),把DNS服务器地址手动指定为127.0.0.1,即本机地址,如下图所示。
程序默认使用OpenDNS,可以修改安装目录下的dnsserver.conf选用你自己喜欢的境外DNS服务器,比如Google DNS 8.8.8.8。
(1)错误的地址,返回干净的404错误页面(我改成了Google DNS,默认的OpenDNS也会重定向到它自己的页面)
(2)在很多地方,因为DNS污染的原因,就算通过代理服务器,也无法正常访问twitter,安装DNS Proxy后能正常访问了(当然需要代理)。
软件原理:
目前DNS协议是基于UDP的不可靠无连接传输,入侵者无法截获每一个DNS的response包,原因可能是计算量太大了,所以采用了一种污染的方式,抢先在真正的DNS response包返回之前先伪造一个response发送给请求者,而请求者在收到这个包之后以为就是真的结果了(因为无连接,先到原则),就忽略掉之后的response了。DNSProxy这个软件的做法很简单,先缓存第一个收到的response,如果在一段时间内又收到了另外一个response,那就丢弃之前那个,如果没有收到,那说明这个response是真的,直接返回给请求的应用程序,这样就可以过滤出真假response了

在Windows下使用shadowsocks代理的设置说明

一.下载客户端,下载地址:https://www.diyssh.net/soft/shadowsocks.zip
二.解压后打开config.json
{
    "server":"服务器地址",
    "server_port":服务器端口,
    "local_port":本地端口,
    "password":"密码",
    "timeout":60
}
按照提示修改服务器端口密码等信息,然后保存.
三.运行local.exe,上一步设置正确之后会打开一个dos窗口,如下图所示

四.设置浏览器代理,这一步就和使用SSH代理一样,FireFox下设置AutoProxy,Chrome下设置Proxy SwitchySharp扩展就可以了,设置代理为127.0.0.1:本地端口,默认的是127.0.0.1:1080,代理类型为socks5代理,这个一定不能弄错!
AutoProxy设置如下:

添加完毕之后记得设置它为默认代理.
Proxy SwitchySharp设置如下:

五.enjoy it!

开启 IE8 的兼容模式


  1. <meta http-equiv="X-UA-Compatible" content="IE=5" />  
  2. <meta http-equiv="X-UA-Compatible" content="IE=7" />  
  3. <meta http-equiv="X-UA-Compatible" content="IE=8" />  
当我们制作出来的页面无法在IE8中正常浏览时,我们可以加入上面那样的 meta 标记,让IE8浏览器以兼容模式正确浏览。从IE6到IE8,仅仅三个版本,我们就看到了三种不同的浏览模式。“古怪”模式就是IE6之前浏览器所采用的“Quirks 模式”,IE7和IE8又分别出现“IE7 标准模式”和“IE8 标准模式”,所以你明白为什么原来很好用的网站为什么在IE7或者IE8中就无法正常使用。而微软承诺的IE8标准模式将与W3C标准一致,但从Beta2版本看来并不如所愿,但可以肯定IE8能够正确渲染W3C标准的页面。不管那么多,如果你发现页面在IE8中无法正确显示时,可以指定它以“Quirks 模式”浏览,也就是指定 IE=5 那项。
开启 IE8 的兼容模式 - fpnag537 - fpnag537 的博客
如图所示,IE=5 、IE=7 、IE=8 分别开启“Quirks 模式”、“IE7 标准模式”和“IE8 标准模式”。再推荐几个站点给正在测试使用IE8的朋友:

a. 淘宝:http://ie8.taobao.com
b. 网易:http://ie8.163.com
c. 百度:http://stock.baidu.com/ie8/ie8.html
d. 腾讯:http://labs.qq.com/e/49/

一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10



Posted by  in 前段笔记开发笔记
一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype...

一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案
百度也应用了这种方案去解决IE的兼容问题
百度源代码如下
  1. <!Doctype html>
  2. <htmlxmlns=http://www.w3.org/1999/xhtmlxmlns:bd=http://www.baidu.com/2010/xbdml>
  3. <head>
  4. <metahttp-equiv=Content-Typecontent=“text/html;charset=utf-8″>
  5. <metahttp-equiv=X-UA-Compatiblecontent=IE=EmulateIE7>
  6. <title>百度一下,你就知道 </title>
  7. <script>var wpo={start:newDate*1,pid:109,page:‘superpage’}</script>
<meta http-equiv=X-UA-Compatible content=IE=EmulateIE7>
可以打开百度,右键查看源码看下!我们可以看下文件头是否存在这样一行代码!
这句话的意思是强制使用IE7模式来解析网页代码!
然而同样的解决方案在一些大型的电子商务网站也很多见
从源码中我们可以看到
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="X-UA-Compatible" content="IE=8" />
<title>Home page</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Online shopping for cool gadgets at the right price. Buy cheap computers, electronics, car accessories, cellphones, iPhone, apparels and home gadgets on, free shipping for all orders." />
<meta name="keywords" content="cool gadgets, free shipping" />
<meta name="robots" content="INDEX,FOLLOW" />
在这里送上几种IE使用模式!
  1. <metahttp-equiv=“X-UA-Compatible”content=“IE=8″>
2. Google Chrome Frame也可以让IE用上Chrome的引擎:
  1. <metahttp-equiv=“X-UA-Compatible”content=“chrome=1″/>
3.强制IE8使用IE7模式来解析
  1. <metahttp-equiv=“X-UA-Compatible”content=“IE=EmulateIE7″><!– IE7 mode –>
  2. //或者
  3. <metahttp-equiv=“X-UA-Compatible”content=“IE=7″><!– IE7 mode –>
4.强制IE8使用IE6或IE5模式来解析
  1. <metahttp-equiv=“X-UA-Compatible”content=“IE=6″><!– IE6 mode –>
  2. <metahttp-equiv=“X-UA-Compatible”content=“IE=5″><!– IE5 mode –>
5.如果一个特定版本的IE支持所要求的兼容性模式多于一种,如:
  1. <metahttp-equiv=“X-UA-Compatible”content=“IE=5; IE=8″/>
二.设定网站服务器以指定预设兼容性模式
如果服务器是自己的话,可以在服务器上定义一个自订标头来为它们的网站预设一个特定的文件兼容性模式。这个特定的方法取决于你的网站服务器。
录入,下列的 web.config文件使Microsoft Internet Information Services (IIS)能定义一个自订标头以自动使用IE7 mode来编译所有网页。
另外还有一起其他的解决方案,例如google的
ie7 – js中是一个JavaScript库(解决IE与W3C标准的冲突的JS库),使微软的Internet Explorer的行为像一个Web标准兼容的浏览器,支持更多的W3C标准,支持CSS2、CSS3选择器。它修复了许多的HTML和CSS问题,并使得透明PNG在IE5、IE6下正确显示。
使IE5,IE6兼容到IE7模式(推荐)
  1. <!–[if lt IE 7]>
  2. <script src=”http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE7.js” type=”text/javascript”></script>
  3. <![endif]–>
使IE5,IE6,IE7兼容到IE8模式
  1. <!–[if lt IE 8]>
  2. <script src=”http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE8.js” type=”text/javascript”></script>
  3. <![endif]–>
使IE5,IE6,IE7,IE8兼容到IE9模式
  1. <!–[if lt IE 9]>
  2. <script src=”http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js”></script>
  3. <![endif]–>
解决PNG显示问题
只需将透明png图片命名为*-trans.png
需要注意的是:此方法对背景平铺(background-repeat)和背景(background-position)无法起到任何作用,默认会占满整个容器

看完本文希望你的IE6,IE7,IE8,IE9,IE10等等兼容问题可以得到解决!

2013年2月21日星期四

Linux Find 命令使用详解


 通过文件名查找法:

这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来,那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令:

  find / -name httpd.conf

  这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:

  etc/httpd/conf/httpd.conf

  这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。

  如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。

  无错误查找技巧:

在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可能遇到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现"Permissiondenied."(禁止访问)字样。系统将无法查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入

  find / -name access_log 2>/dev/null

  这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。

  在Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系统和容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使用find /etc -name httpd.conf 就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find/etc”就是只在 etc目录下查找文件。因为“find/etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。

  根据部分文件名查找方法:

这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:

  find /etc -name '*srm*'

  这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:

  find/etc -name 'srm*'

  这是只有像srmyz 这样的文件才被查找出来,象absrmyz或者 absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。

linux 的shell之一 bash简介


Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。
bash 是一个为GNU项目编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。Bourne shell是一个早期的重要shell,由Stephen Bourne在1978年前后编写,并同Version 7 Unix一起发布。bash则在1987年由Brian Fox创造。在1990年,Chet Ramey成为了主要的维护者。
bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行,只有那些引用了Bourne特殊变量或使用了Bourne的内置命令的脚本才需要修改。 bash的命令语法很多来自Korn shell (ksh) 和 C shell (csh), 例如命令行编辑,命令历史,目录栈,$RANDOM 和 $PPID 变量,以及POSIX的命令置换语法: $(...)。作为一个交互式的shell,按下TAB键即可自动补全已部分输入的程序名,文件名,变量名等等。[1]
事实上对于刚接触linux的人而言,Linux/Unix的bash就相当于windows的dos命令提示符. 可以交互操作,也可以进行批处理操作,然而不同的是bash等shell的开发具有较强针对性,因而其功能及易用性远比dos命令提示符大得多。
编辑本段
参数说明

[2]-c字符串:若用-c参数,则bash从字符串中读入命令,如果字符串后还有变量就被设定为从$0开始的位置参数。
-i:若用-i参数,则bash是交互的。
-s:若用-s参数,则bash从标准输入中读入命令(在执行完-c带的命令之后。)直到输入exit。
-:单一的-符号表明参数执行完毕,并且屏蔽此后所跟参数,后面的所有变量都被看作是文件名。
-norc:如果bash是交互的,则不执行个人初始化文件:-/.bashrc,如果bash作为sh来运行,这个参数缺省是关闭的。
-noprofile:不执行系统范围的启动文件/etc/profile也不执行个人的启动文件-/.bash_profile,-/.bash_login或-/.profile,缺省情况下,bash作为登录的shell时以这些文件作为启动文件。
--refile文件名:如果bash是交互的,则以此文件作为bash的启动文件。替代-/.bashrc。
-version:在bash开始时显示此bash的版本号。
-quiet:不显示版本号和其他信息,这是缺省值。
-login:激活bash,伪装为登录shell。
-nobraceexpansion:不执行大括号扩展。
-nolineediting:在交互状态下不使用GNU的readline库去读取命令。即取消了命令行编辑功能。
-posix:改变bash的行为,使其符合Posix 1003.2规定的标准。

Linux shell编程之 while循环



#!/bin/bash
date;
x=0
while [ $x -lt 10 ];
do
    y="$x"
    while [ $y -gt 0 ];#这里应该有个分号。
    do
        echo -e "$y \c"
        y=`echo "$y-1"|bc`#y=y+1的意思,下面有个x=x-1
    done
    echo $x
    x=`echo "$x+1"|bc`
done
运行结果:
night@night-desktop:~/Desktop$ ./test.sh
2009年 05月 03日 星期日 14:35:54 CST
0
1 1
2 1 2
3 2 1 3
4 3 2 1 4
5 4 3 2 1 5
6 5 4 3 2 1 6
7 6 5 4 3 2 1 7
8 7 6 5 4 3 2 1 8
9 8 7 6 5 4 3 2 1 9

while :
do
    read CMD
    case $CMD in
        [qQ]|[qQ][uU][iI][tT]) break;;
        *) $CMD
    esac
done
#Linux