2008年8月6日星期三

co.cc 难道又被封了?

我有个站用的是co.cc的免费域名,前段时间一直运行好好的,不过最近几天不能正常访问了。今天查了一下原因,发现连co.cc都ping不通了。用tor试了一下,我的网站和co.cc都可以正常访问,也就是说不出意外的话,co.cc应该是被河蟹了,不由得我想发发牢骚。网络应该是开放、自由的,不能老逼真人带着套(tor)啊。

CO.CC 提供免费二级域名注册,没有广告,支持隐藏或不隐藏原URL转发。提供完全DNS解析功能,可以修改DNS、设置A记录、CNAME记录、NS记录以及MX记录,还完全支持Google Apps企业邮局。如果给封了那实在是太可惜了,再说没几天就开奥运了,cnn都解封了,怎么能现在封co.cc呢?要封也应该等到国外的朋友们都走了不是吗?

2008年8月4日星期一

编程方式更改Tor身份——Switch TOR to a new identity

Tor 俗称洋葱路由器,用于防范流量过滤、嗅探分析,可以实现匿名对外连接、匿名隐藏服务。Tor 的代理一般在2-5层左右,加密程度也比较高。在一些需要使用代理的项目中用Tor 替代常用的代理服务器,有两个显著的好处:一是安全,二是可用代理非常多而且可靠性也很高。

在程序中使用Tor 的一个关键问题就是如何在程序中强制Tor 使用新的身份(切换代理),如果不能在程序中更换身份那使用Tor 的意义也就不大了。

Tor 默认HTTP代理端口是8118,Socket代理端口是9050,控制端口是9051。我们可以通过向Tor 控制端口发送命令来强制Tor 使用新的身份。

下面有三段代码,分别由shell、php和c#实现切换Tor 使用新的身份。

shell代码片段:
spawn telnet 127.0.0.1 9051
expect "Escape character is'^]'."
send "AUTHENTICATE\r"
expect "250 OK"
send "signal NEWNYM\r"
expect "250 OK"
send "quit\r"

php版本:
/** * Switch Tor to a new identity. **/
function tor_new_identity($tor_ip='127.0.0.1', $control_port='9051', $auth_code='')
{
$fp = fsockopen($tor_ip, $control_port, $errno, $errstr, 30);
if (!$fp) return false; //can't connect to the control port
fputs($fp, "AUTHENTICATE $auth_code\r\n");
$response = fread($fp, 1024);
list($code, $text) = explode(' ', $response, 2);
if ($code != '250')
return false; //authentication failed

//send the request to for new identity
fputs($fp, "signal NEWNYM\r\n");
$response = fread($fp, 1024);
list($code, $text) = explode(' ', $response, 2);
if ($code != '250') return false; //signal failed
fclose($fp); return true;
}
?>

c#版本代码片段:
TcpClient client = new TcpClient();
client.Connect("127.0.0.1", Convert.ToInt32(9051));
NetworkStream stream = client.GetStream();
byte[] cmd = null;
string strCmd = string.Format("AUTHENTICATE \"{0}\"\r\n",password);
cmd = System.Text.Encoding.Default.GetBytes(strCmd);
stream.Write(cmd, 0, cmd.Length);
byte[] buffer = new byte[2];
int count = 0;
string strResponse = "";
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
while (count != 0 && stream.DataAvailable)
{
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
if (count < buffer.Length)
break;
}
if (strResponse.IndexOf("250") == -1)
{
MessageBox.Show("AUTHENTICATE Fail!");
return;
}
buffer = new byte[1024];
strCmd = "signal NEWNYM\r\n";
cmd = System.Text.Encoding.Default.GetBytes(strCmd);
stream.Write(cmd, 0, cmd.Length);
strResponse = "";
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
while (count != 0 && stream.DataAvailable)
{
count = stream.Read(buffer, 0, buffer.Length);
strResponse += System.Text.Encoding.Default.GetString(buffer, 0, count);
if (count < buffer.Length)
break;
}
if (strResponse.IndexOf("250") == 1)
MessageBox.Show("Switch Identity OK!");

参考文章地址:
http:// linux.chinaunix.net/bbs/thread-1014409-1-1.html
http:// w-shadow.com/blog/2008/06/20/tor-how-to-new-identity-with-php
http:// www.cnblogs.com/sxlfybb/archive/2008/07/07/1237662.html

2008年8月3日星期日

C#修改IE配置 禁止IE显示图片 禁止IE显示Flash

最近在用 C# 写程序的时候需要用编程的方式修改IE的配置属性。一是要禁止IE显示图片,二是要禁止IE显示Flash。

禁止IE显示图片,如果手动修改的话应该是取消选中 工具 -> Internet 选项 -> 高级 -> 显示图片 -> 多媒体 -> 显示图片 就可以了。
在程序中,只能通过修改注册表来实现。C# 示例代码如下:
RegistryKey regKey = Registry.CurrentUser;
string SubKeyPath = @"Software\Microsoft\Internet Explorer\Main";
RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true);
optionKey.SetValue("Display Inline Images", "no");

禁止IE显示Flash,手动方法除了借助一些第三方工具外我还没有找到合适的方法(取消选中 工具 -> Internet 选项 -> 高级 -> 显示图片 -> 多媒体 -> 在网页中播放动画 没有效果,也许这里的动画只的不是Flash)。
一番google之后,最终的解决方案还是修改注册表,这次修改HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\ActiveX Compatibility\{D27CDB6E-AE6D-11CF-96B8-444553540000}
将其中 "Compatibility Flags" 的数值数据设为 十六进制的400也就是十进制的1024 就可以禁止IE显示Flash了。

如果注册表中没有这个Key,那么需要在
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\ActiveX Compatibility 下新建一个以 {D27CDB6E-AE6D-11CF-96B8-444553540000} 为名称的键(Key),然后再为其创建一个名称为 Compatibility Flags 的 DWORD 值,其数值数据 0 表示允许Flash,400(十六进制)表示禁止IE显示Flash。
代码与前者的不同仅在于赋值时需要指定类型RegistryValueKind.DWord,如下所示:
optionKey.SetValue("Compatibility Flags", 1024, RegistryValueKind.DWord);

2008年8月1日星期五

Myhpf 付费搜索,为你的网费买单

search for moneyMyhpf 是一家英国公司,提供付费搜索。简单说就是你用Myhpf搜索,他支付你佣金。由于Myhpf 与著名搜索引擎呀虎(yahoo)合作,所以他的搜索结果还是比较令人满意的。你完全可以用它代替你常用的搜索引擎,而且每使用一次Myhpf搜索,它将给你0.01英镑(左右)作为佣金。每天搜索次数没有限制(建议用英文做关键词来搜索),但不要为了佣金作弊,否则得不到支付。

注册之后你将会拥有一个可定制的主页,通过这个页面进行的搜索Myhpf 都将支付你佣金,你不需要安装任何浏览器插件。当然,如果你不想每次搜索都打开这个页面,Myhpf 还为你提供了浏览器插件,安装使用都非常简单。(浏览器插件如下图所示)


注册地址:点击这里注册

ps:其实只要你稍微改变一下搜索习惯,就可以让Myhpf 来给你的网费买单。你也可以把他当作一个网赚的项目来做,但不要太过,否则会被视为作弊。