Tuesday, May 3, 2011

三步搞定wallproxy被封 让facebook重新回来

三步搞定wallproxy被封 让facebook重新回来

如果你的wallproxy出现……

Error response

Error code 502.

Message: ['[Errno 10054] ‘, ‘[Errno 10054] ‘].

Error code explanation: 502 = Invalid responses from another server/proxy..

Google 有着全球最快的服务器无可厚非,通过google 平台环游世界是最好不过的选择了

备用VPS 限制太多 SSH太慢 专属软件广告又太多 唯有基于Gae的wallproxy程序最得人心……

如果出现Error code 502Errno 10054 或许下面三步能够解决你的问题……

1 查询google的未被墙ip:
通过命令提示符 nslookup www.google.com查询
将查询到得ip记录输入地址栏看是否正确访问,也可以尝试一下将命令提示符中查询到ip地址最后一位随便改动

一下再输入地址栏测试,一般还是属于google的ip。将能够正确访问的ip记录。

2 修改hosts

方法 1 修改系统hosts文件
文件通常目录为 C:\WINDOWS\system32\drivers\etc

用上面测试的ip和自己申请的appspot.com的地址对应完毕保存:

如果你同时使用了四个GAE……

74.125.XX.XX XXXX1.appspot.com
74.125.XX.XX XXXX2.appspot.com
74.125.XX.XX XXXX3.appspot.com
74.125.XX.XX XXXX4.appspot.com

方法2 在最新版本1.04中,修改proxy.conf文件中的hosts=部分

修改成74.125.XX.XX .appspot.com(注意ip和.之间的空格)

3 修改proxy.conf文件

将gaeproxy=[]中 所有 url 里面http访问改成https

三步完成 赶快试一下吧……


wallproxy下载
http://code.google.com/p/wallproxy-fensi/
wallproxy常见问题解决

http://qqbing.net/zhuanti/wallproxy-daquan/

—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


基于Java的免费代理客户端-I2P 0.8.5

作者:小雨   来源:翻墙看世界

使用I2P冲浪需对浏览器代理服务器进行设置(HTTP127.0.0.1,端口:4444HTTPS127.0.0.1,端口:4445)。
下载及安装软件(选择“中文”),运行“Start I2P (no window)”,会自动打开浏览器进入“I2P路由控制台”。当控制台左侧“活动节点”数量逐渐增加,“本地服务”显示为“共享客户端”,表示I2P建立好连接,可以匿名上网了。点击“I2P内部设置”-“网络”-“带宽限制”可设置上传及下载的速度(默认的96KBps下载/40KBps上传速度很缓慢)。点击“关闭”可关I2P序。最新版:I2P 0.8.5
下载地址:http://www.duckload.com/download/5332878/i2pinstall_0.8.5.exe
官方下载地址:http://www.i2p2.de/download_zh.html


—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


孙悟空翻墙器 5月休闲版

来源:http://monkeykingsurfer.blog.epochtimes.com/article/show?articleid=30863

孙悟空翻墙器 5月休闲版发布,主要更新有:

1、升级浏览器至最新chromium编译版本;

2、安装 gmail checker plus 插件,方便破网获取gmail。直接在工具栏显示gmail提醒及邮件条目、正文。或快速撰写邮件。

3、安装 Block Flash 插件,对于信任的海外网站才启用flash插件。

4、方便在多个tab之间快速切换。

5、屏蔽几乎所有类型的广告,安静浏览。

下载地址:

http://www.mediafire.com/?bpkpvkbplllbdyt

rar文件签名(如果不符合勿解压):

mks20110502.rar
md5:21F38A5AA3D4E6FB502A03942BAE205F

SHA1:9A41CF062A13B368929DE4159BF533370D75E644 


—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代、翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


OpenVPN用户DNS污染问题的深入研究

来源:http://wlgq.blogspot.com/2011/04/openvpndns.html

OpenVPN虽然可以实现翻墙,但是解决不了DNS污染问题,令翻墙的效果大打折扣。

我们深入分析DNS污染产生的原理。

测试中的OpenVPN配置,在server端已经推送8.8.8.8作为客户端的DNS.

redirect-gateway def1 也已经开启。Windows PC端将以OpenVPN网关作为默认网关。
DNS请求会从OpenVPN网关发送出去。

尽管如此,GFW还是会污染我们的DNS查询请求。
据估计,可能是这样的,当PC发起DNS查询,同时会向两个网关查询。哪个网关先响应,就用哪一个的。 这样就麻烦了。GFW完全可以发送假的数据包。

解决DNS污染的方法是在VPS 上建立Bind9  DNS Server.
并建立 dns.domain.com 的 dns反向解析 至 10.8.0.1.
OpenVPN推送 10.8.0.1作为DNS解析。
Windows系统的DNS会反向解析10.8.0.1,如果有效,则使用10.8.0.1作为域名解析。

因为10.8.0.1是局域网,所以Windows会优先查询局域网。这样局域网查询的请求结果会优先返回。 由此可以避免DNS污染。

—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


chrome实现spdy协议,免凸墙访问google服务的理论方法

来源:http://kalagxw.net/chrome-spdy-gfw.html

spdy协议是google研究的新协议,据说比起tcp协议,它加载网页更快。google的很多服务均已支持spdy。由于某墙还没有开始对付spdy,所以理论上可以免墙访问gmail。这一点论坛有帖子提到过。未测试。

那么如何在chrome下使用spdy协议访问google服务呢?

首先,需要架设flip server。

1.编译下面源码(unix):

程序代码:

// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file.

#include <errno.h>
#include <signal.h>
#include <sys/file.h>
#include <sys/stat.h>

#include <iostream>
#include <string>
#include <vector>

#include “base/command_line.h”
#include “base/logging.h”
#include “base/synchronization/lock.h”
#include “base/timer.h”
#include “net/tools/flip_server/acceptor_thread.h”
#include “net/tools/flip_server/constants.h”
#include “net/tools/flip_server/flip_config.h”
#include “net/tools/flip_server/output_ordering.h”
#include “net/tools/flip_server/sm_connection.h”
#include “net/tools/flip_server/sm_interface.h”
#include “net/tools/flip_server/spdy_interface.h”
#include “net/tools/flip_server/streamer_interface.h”
#include “net/tools/flip_server/split.h”

using std::cout;
using std::cerr;

// If true, then disables the nagle algorithm);
bool FLAGS_disable_nagle = true;

// The number of times that accept() will be called when the
//  alarm goes off when the accept_using_alarm flag is set to true.
//  If set to 0, accept() will be performed until the accept queue
//  is completely drained and the accept() call returns an error);
int32 FLAGS_accepts_per_wake = 0;

// The size of the TCP accept backlog);
int32 FLAGS_accept_backlog_size = 1024;

// If set to false a single socket will be used. If set to true
//  then a new socket will be created for each accept thread.
//  Note that this only works with kernels that support
//  SO_REUSEPORT);
bool FLAGS_reuseport = false;

// Flag to force spdy, even if NPN is not negotiated.
bool FLAGS_force_spdy = false;

// The amount of time the server delays before sending back the
//  reply);
double FLAGS_server_think_time_in_s = 0;

net::FlipConfig g_proxy_config;

////////////////////////////////////////////////////////////////////////////////

std::vector<std::string> &split(const std::string &s,
char delim,
std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
while(std::getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}

std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
return split(s, delim, elems);
}

bool GotQuitFromStdin() {
// Make stdin nonblocking. Yes this is done each time. Oh well.
fcntl(0, F_SETFL, O_NONBLOCK);
char c;
std::string maybequit;
while (read(0, &c, 1) > 0) {
maybequit += c;
}
if (maybequit.size()) {
VLOG(1) << “scanning string: \”" << maybequit << “\”";
}
return (maybequit.size() > 1 &&
(maybequit.c_str()[0] == ‘q’ ||
maybequit.c_str()[0] == ‘Q’));
}

const char* BoolToStr(bool b) {
if (b)
return “true”;
return “false”;
}

////////////////////////////////////////////////////////////////////////////////

static bool wantExit = false;
static bool wantLogClose = false;
void SignalHandler(int signum)
{
switch(signum) {
case SIGTERM:
case SIGINT:
wantExit = true;
break;
case SIGHUP:
wantLogClose = true;
break;
}
}

static int OpenPidFile(const char *pidfile)
{
int fd;
struct stat pid_stat;
int ret;

fd = open(pidfile, O_RDWR | O_CREAT, 0600);
if (fd == -1) {
cerr << “Could not open pid file ‘” << pidfile << “‘ for reading.\n”;
exit(1);
}

ret = flock(fd, LOCK_EX | LOCK_NB);
if (ret == -1) {
if (errno == EWOULDBLOCK) {
cerr << “Flip server is already running.\n”;
} else {
cerr << “Error getting lock on pid file: ” << strerror(errno) << “\n”;
}
exit(1);
}

if (fstat(fd, &pid_stat) == -1) {
cerr << “Could not stat pid file ‘” << pidfile << “‘: ” << strerror(errno)
<< “\n”;
}
if (pid_stat.st_size != 0) {
if (ftruncate(fd, pid_stat.st_size) == -1) {
cerr << “Could not truncate pid file ‘” << pidfile << “‘: ”
<< strerror(errno) << “\n”;
}
}

char pid_str[8];
snprintf(pid_str, sizeof(pid_str), “%d”, getpid());
int bytes = static_cast<int>(strlen(pid_str));
if (write(fd, pid_str, strlen(pid_str)) != bytes) {
cerr << “Could not write pid file: ” << strerror(errno) << “\n”;
close(fd);
exit(1);
}

return fd;
}

int main (int argc, char**argv)
{
unsigned int i = 0;
bool wait_for_iface = false;
int pidfile_fd;

signal(SIGPIPE, SIG_IGN);
signal(SIGTERM, SignalHandler);
signal(SIGINT, SignalHandler);
signal(SIGHUP, SignalHandler);

CommandLine::Init(argc, argv);
CommandLine cl(argc, argv);

if (cl.HasSwitch(“help”) || argc < 2) {
cout << argv[0] << ” <options>\n”;
cout << ”  Proxy options:\n”;
cout << “\t–proxy<1..n>=\”<listen ip>,<listen port>,”
<< “<ssl cert filename>,\n”
<< “\t               <ssl key filename>,<http server ip>,”
<< “<http server port>,\n”
<< “\t               [https server ip],[https server port],”
<< “<spdy only 0|1>\”\n”;
cout << “\t  * The https server ip and port may be left empty if they are”
<< ” the same as\n”
<< “\t    the http server fields.\n”;
cout << “\t  * spdy only prevents non-spdy https connections from being”
<< ” passed\n”
<< “\t    through the proxy listen ip:port.\n”;
cout << “\t–forward-ip-header=<header name>\n”;
cout << “\n  Server options:\n”;
cout << “\t–spdy-server=\”<listen ip>,<listen port>,[ssl cert filename],”
<< “\n\t               [ssl key filename]\”\n”;
cout << “\t–http-server=\”<listen ip>,<listen port>,[ssl cert filename],”
<< “\n\t               [ssl key filename]\”\n”;
cout << “\t  * Leaving the ssl cert and key fields empty will disable ssl”
<< ” for the\n”
<< “\t    http and spdy flip servers\n”;
cout << “\n  Global options:\n”;
cout << “\t–logdest=<file|system|both>\n”;
cout << “\t–logfile=<logfile>\n”;
cout << “\t–wait-for-iface\n”;
cout << “\t  * The flip server will block until the listen ip has been”
<< ” raised.\n”;
cout << “\t–ssl-session-expiry=<seconds> (default is 300)\n”;
cout << “\t–ssl-disable-compression\n”;
cout << “\t–idle-timeout=<seconds> (default is 300)\n”;
cout << “\t–pidfile=<filepath> (default /var/run/flip-server.pid)\n”;
cout << “\t–help\n”;
exit(0);
}

if (cl.HasSwitch(“pidfile”)) {
pidfile_fd = OpenPidFile(cl.GetSwitchValueASCII(“pidfile”).c_str());
} else {
pidfile_fd = OpenPidFile(PIDFILE);
}

net::OutputOrdering::set_server_think_time_in_s(FLAGS_server_think_time_in_s);

if (cl.HasSwitch(“forward-ip-header”)) {
net::SpdySM::set_forward_ip_header(
cl.GetSwitchValueASCII(“forward-ip-header”));
net::StreamerSM::set_forward_ip_header(
cl.GetSwitchValueASCII(“forward-ip-header”));
}

if (cl.HasSwitch(“logdest”)) {
std::string log_dest_value = cl.GetSwitchValueASCII(“logdest”);
if (log_dest_value.compare(“file”) == 0) {
g_proxy_config.log_destination_ = logging::LOG_ONLY_TO_FILE;
} else if (log_dest_value.compare(“system”) == 0) {
g_proxy_config.log_destination_ = logging::LOG_ONLY_TO_SYSTEM_DEBUG_LOG;
} else if (log_dest_value.compare(“both”) == 0) {
g_proxy_config.log_destination_ =
logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG;
} else {
LOG(FATAL) << “Invalid logging destination value: ” << log_dest_value;
}
} else {
g_proxy_config.log_destination_ = logging::LOG_NONE;
}

if (cl.HasSwitch(“logfile”)) {
g_proxy_config.log_filename_ = cl.GetSwitchValueASCII(“logfile”);
if (g_proxy_config.log_destination_ == logging::LOG_NONE) {
g_proxy_config.log_destination_ = logging::LOG_ONLY_TO_FILE;
}
} else if (g_proxy_config.log_destination_ == logging::LOG_ONLY_TO_FILE ||
g_proxy_config.log_destination_ ==
logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG) {
LOG(FATAL) << “Logging destination requires a log file to be specified.”;
}

if (cl.HasSwitch(“wait-for-iface”)) {
wait_for_iface = true;
}

if (cl.HasSwitch(“ssl-session-expiry”)) {
std::string session_expiry = cl.GetSwitchValueASCII(“ssl-session-expiry”);
g_proxy_config.ssl_session_expiry_ = atoi(session_expiry.c_str());
}

if (cl.HasSwitch(“ssl-disable-compression”)) {
g_proxy_config.ssl_disable_compression_ = true;
}

if (cl.HasSwitch(“idle-timeout”)) {
g_proxy_config.idle_socket_timeout_s_ =
atoi(cl.GetSwitchValueASCII(“idle-timeout”).c_str());
}

if (cl.HasSwitch(“force_spdy”))
net::SMConnection::set_force_spdy(true);

InitLogging(g_proxy_config.log_filename_.c_str(),
g_proxy_config.log_destination_,
logging::DONT_LOCK_LOG_FILE,
logging::APPEND_TO_OLD_LOG_FILE,
logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS);

LOG(INFO) << “Flip SPDY proxy started with configuration:”;
LOG(INFO) << “Logging destination     : ” << g_proxy_config.log_destination_;
LOG(INFO) << “Log file                : ” << g_proxy_config.log_filename_;
LOG(INFO) << “Forward IP Header       : ”
<< (net::SpdySM::forward_ip_header().length() ?
net::SpdySM::forward_ip_header() : “<disabled>”);
LOG(INFO) << “Wait for interfaces     : ” << (wait_for_iface?”true”:”false”);
LOG(INFO) << “Accept backlog size     : ” << FLAGS_accept_backlog_size;
LOG(INFO) << “Accepts per wake        : ” << FLAGS_accepts_per_wake;
LOG(INFO) << “Disable nagle           : ”
<< (FLAGS_disable_nagle?”true”:”false”);
LOG(INFO) << “Reuseport               : ”
<< (FLAGS_reuseport?”true”:”false”);
LOG(INFO) << “Force SPDY              : ”
<< (FLAGS_force_spdy?”true”:”false”);
LOG(INFO) << “SSL session expiry      : ”
<< g_proxy_config.ssl_session_expiry_;
LOG(INFO) << “SSL disable compression : ”
<< g_proxy_config.ssl_disable_compression_;
LOG(INFO) << “Connection idle timeout : ”
<< g_proxy_config.idle_socket_timeout_s_;

// Proxy Acceptors
while (true) {
i += 1;
std::stringstream name;
name << “proxy” << i;
if (!cl.HasSwitch(name.str())) {
break;
}
std::string value = cl.GetSwitchValueASCII(name.str());
std::vector<std::string> valueArgs = split(value, ‘,’);
CHECK_EQ((unsigned int)9, valueArgs.size());
int spdy_only = atoi(valueArgs[8].c_str());
// If wait_for_iface is enabled, then this call will block
// indefinitely until the interface is raised.
g_proxy_config.AddAcceptor(net::FLIP_HANDLER_PROXY,
valueArgs[0], valueArgs[1],
valueArgs[2], valueArgs[3],
valueArgs[4], valueArgs[5],
valueArgs[6], valueArgs[7],
spdy_only,
FLAGS_accept_backlog_size,
FLAGS_disable_nagle,
FLAGS_accepts_per_wake,
FLAGS_reuseport,
wait_for_iface,
NULL);
}

// Spdy Server Acceptor
net::MemoryCache spdy_memory_cache;
if (cl.HasSwitch(“spdy-server”)) {
spdy_memory_cache.AddFiles();
std::string value = cl.GetSwitchValueASCII(“spdy-server”);
std::vector<std::string> valueArgs = split(value, ‘,’);
g_proxy_config.AddAcceptor(net::FLIP_HANDLER_SPDY_SERVER,
valueArgs[0], valueArgs[1],
valueArgs[2], valueArgs[3],
“”, “”, “”, “”,
0,
FLAGS_accept_backlog_size,
FLAGS_disable_nagle,
FLAGS_accepts_per_wake,
FLAGS_reuseport,
wait_for_iface,
&spdy_memory_cache);
}

// Spdy Server Acceptor
net::MemoryCache http_memory_cache;
if (cl.HasSwitch(“http-server”)) {
http_memory_cache.AddFiles();
std::string value = cl.GetSwitchValueASCII(“http-server”);
std::vector<std::string> valueArgs = split(value, ‘,’);
g_proxy_config.AddAcceptor(net::FLIP_HANDLER_HTTP_SERVER,
valueArgs[0], valueArgs[1],
valueArgs[2], valueArgs[3],
“”, “”, “”, “”,
0,
FLAGS_accept_backlog_size,
FLAGS_disable_nagle,
FLAGS_accepts_per_wake,
FLAGS_reuseport,
wait_for_iface,
&http_memory_cache);
}

std::vector<net::SMAcceptorThread*> sm_worker_threads_;

for (i = 0; i < g_proxy_config.acceptors_.size(); i++) {
net::FlipAcceptor *acceptor = g_proxy_config.acceptors_[i];

sm_worker_threads_.push_back(
new net::SMAcceptorThread(acceptor,
(net::MemoryCache *)acceptor->memory_cache_));
// Note that spdy_memory_cache is not threadsafe, it is merely
// thread compatible. Thus, if ever we are to spawn multiple threads,
// we either must make the MemoryCache threadsafe, or use
// a separate MemoryCache for each thread.
//
// The latter is what is currently being done as we spawn
// a separate thread for each http and spdy server acceptor.

sm_worker_threads_.back()->InitWorker();
sm_worker_threads_.back()->Start();
}

while (!wantExit) {
// Close logfile when HUP signal is received. Logging system will
// automatically reopen on next log message.
if ( wantLogClose ) {
wantLogClose = false;
VLOG(1) << “HUP received, reopening log file.”;
logging::CloseLogFile();
}
if (GotQuitFromStdin()) {
for (unsigned int i = 0; i < sm_worker_threads_.size(); ++i) {
sm_worker_threads_[i]->Quit();
}
for (unsigned int i = 0; i < sm_worker_threads_.size(); ++i) {
sm_worker_threads_[i]->Join();
}
break;
}
usleep(1000*10);  // 10 ms
}

unlink(PIDFILE);
close(pidfile_fd);
return 0;
}

编译成功后执行

2.接下来在cheome快捷方式后面加上参数:

程序代码:
–use-spdy –enable-logging –log-level=0 -host-resolver-rules=”MAP * 127.0.0.1:10040″ http(s)://*

3.运行chrome,打开gmail,此时你就是通过spdy协议在访问gmail了。需要注意的是,此时你访问任何网站都是spdy协议,但除了google,几乎还没有网站支持spdy。

以上为理论方法,我测试到一半就没耐心了,仅供参考,有时间的朋友试试吧。


—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


寸土必争!把CNNIC的假证书扫地出门

来源:http://www.librehat.info/04/wipe-out_cnnic-ca/

为什么要将CNNIC扫地出门,事情真的有这么严重?

网上传输的任何信息都有可能被恶意截获。尽管如此,我们仍然在网上保存着很多重要的资料,比如私人邮件、银行交易。这是因为,有一个叫着 SSL/TLS/HTTPS 的东西在保障我们的信息安全,它将我们和网站服务器的通信加密起来。

如果网站觉得它的用户资料很敏感,打算使用 SSL/TLS/HTTPS 加密,必须先向有 CA (Certificate Authority) 权限的公司/组织申请一个证书。有 CA 权限的公司/组织都是经过全球审核,值得信赖的。

发生了什么事

最近,CNNIC——对,就是那个臭名昭著的利用系统漏洞发布流氓软件的、就是那个使劲忽悠 CN 域名又突然停止域名解析的 CNNIC (中国互联网络信息中心),它——偷偷地获得了 CA 权限!在所有中文用户被隐瞒的情况下!

意味着什么

意味着 CNNIC 可以随意造一个假的证书给任何网站,替换网站真正的证书,从而盗取我们的任何资料!

这就是传说中的 SSL MITM 攻击。以前这个攻击不重要是因为攻击的证书是假的,浏览器会告诉我们真相;现在,因为 CNNIC 有了 CA 权限,浏览器对它的证书完全信任,不会给我们任何警告,即使是造假的证书!

你信任 CNNIC (中国互联网络信息中心) 吗?你相信它有了权限,会安守本分,不会偷偷地干坏事吗?
我对此有3个疑问:

  1. 某 party 对 GMail 兴趣浓厚,GFW 苦练 SSL 内功多年,无大进展。如今有了 CA,若 GFW 令下,CNNIC 敢不从否?
  2. CNNIC 当年利用所谓官方头衔,制流氓软件祸害网民。如今有了 CA,如何相信它不会故伎重演?
  3. 为了得到指定网站的合法证书,其它流氓公司抛出钱权交易,面对诱惑,CNNIC 是否有足够的职业操守?

影响范围

基本上所有浏览器的所有用户均受影响!

目前的解决方案:

Linux平台下删除CNNIC证书:

关于Linux的CA证书管理软件;http://code.google.com/p/chromium/wiki/LinuxCertManagement ,各大发行版可以快速的安装这个CA证书管理软件:

Ubuntu:

sudo apt-get install libnss3-tools

Fedora:

su -c "yum install nss-tools"

Gentoo:

su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"

OpenSUSE:

sudo zypper install mozilla-nss-tools

安装完成后,在终端下运行这条命令可以显示部分证书:

(在Gentoo下,要将下面的几条命令中的certutil命令改为nsscertutil)

certutil -d sql:$HOME/.pki/nssdb-L

一般情况下会出现与CNNIC有关的条目,这个时候执行下面这条命令删除CNNIC证书:

certutil -d sql:$HOME/.pki/nssdb-D -n "CNNIC ROOT"

其中的CNNIC ROOT视列出的名字而定。

如果没有显示CNNIC有关的条目的话,我是这样让其显形的:

Chromium浏览器设置页面->高级选项->管理证书,点击授权中心,找到CNNIC,选择CNNIC ROOT,点击修改,将所有的勾都取消掉(即不信任该中心的证书),再次按照上面的方法,这个时候应该会列出CNNIC的证书了,删除掉CNNIC ROOT吧!重启Chromium浏览器,打开http://www.enum.cn/en/看是不是显示不安全链接了,如果还是安全的链接说明删除失败了。

Firefox火狐狸浏览器的设置方法(来源):

  • 菜单栏:工具/编辑->首选项->高级->加密->查看证书->证书机构(Authorites)
  • 这是一个很长的列表,按照字母顺序,你应该能找到一个叫着 “CNNIC ROOT” 的记录,就是这个东西,告诉 Firefox,我们不信任它!
  • 选中 CNNIC ROOT,点击下面的“编辑”按钮,弹出一个框,应该有3个选项,把所有选项的勾都去掉!保存。
  • 还没有完,狡兔有三窟。
  • 接着往下找,有一个叫着 Entrust.net 的组,这个组里应该有一个 “CNNIC SSL” (如果没有,访问一下 这个网站 就有了)
  • 别急着下手,这回情况不一样,这个证书是 Entrust 签名的。我们信任 Entrust,Entrust 说它信任 CNNIC,所以我们就被迫信任 CNNIC SSL 了。找到 “Entrust.net Secure Server Certification Authority” 这一条,同上面一样,把3个选项的勾都去掉,保存(提示:取消了对 Entrust 的信任以后,可能会没法打开它签名的某些正常网站。至于哪个网站用了它的签名,随便试了一下,没找到例子)。
  • 最后,让我们验证一下。重启 Firefox,打开 这个 和 这个 网站,如果Firefox 对这两个网站都给出了安全警告,而非正常浏览,恭喜,您已经摆脱了 CNNIC CA 的安全威胁!

Windows下删除CNNIC证书的方法(详细

  1. https://dl.dropbox.com/u/1356279/proxys/CNNIC.7z 下载CNNIC的证书
  2. 运行 certmgr.msc ,展开” 不受信任的证书 (Untrusted Certificates) “,右键单击其下” 证书 (Certificates) “项,在” 所有任务 (All Tasks) “子菜单下单击” 导入 (Import) … “将CNNIC的证书导入到不信任的证书机构。
  3. 受信任的证书颁发机构,然后,cnnic root双击,然后,详细信息,然后 编辑属性, 最后下狠手,停用这个证书的所有目的!
  4. Windows平台的Chrome/Chromium/Firefox可以参考Linux平台下的禁用方法。
  5. 可以参考这篇文章:http://blog.lzzxt.com/394

Mac OS X下删除CNNIC证书的方法(`需`’翻`’墙`)


—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代、翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


谁在推特污染aiww标签? 如何应对?

作者:阮吉   来源:http://jiblog.jiruan.net/?p=2951

熟悉推特的人都知道,这是一个分布式的信息系统,人人可以自说自话,而说的话只影响到关注自己的人(也就是Followers),或者自己所@的 人。但是若要超出这个范围,便需要使用关键词搜索功能。一般人们习惯把#放在需要标识的关键词之前(也可以不放),把特定的信息聚集起来。这种方式非常有 效,但是也有一个致命的弱点,就是容易受到污染。也就是有些恶意的人(或者叫垃圾信息账户-Spammer)能将毫不相关或者虚假的信息加上标签发布到推 特上,使得其他查看此标签的人得不到有效的信息。

下面就#aiww这个标签做一个简单的分析。首先看一下典型两个垃圾信息账户。

账户1 @lidamink:

lidamink-top-spammer-on-tagoaiww

账户2 @eiuielk:
eiuielk-top-spammer-on-tagoaiww.png

其特征是发布一些虚假的或者不相关的信息,并且同时污染其它标签如 #cnjasmine。而且它们的关注者都非常少。

wumao-analysis-on-tagoaiww

上图(点击看大图)是用一个网络分析器搜集到的从4月26日到5月2日标签为#aiww的8000个推的统计信息。其中上面提到的两位发的推占据了排行榜的第一和第二的位置,分别是22.51%和22.43%。也就是10句推里面就有4.5句是这两位发送的。

如果你搜一下aiww,得到的结果大致就是这样(这里7条推里面只有2条不是恶意的,其中上面两位占据了4条):
search-aiww2

这就是这些垃圾信息发布者所要得到的效果。那么有没有对策呢?有。有些推友已经制作了列表把这些垃圾账户搜集起来,例如,最上面提到的账户2就被如下6个列表所收录:
wumao-list-top-spammer-on-tagoaiww.png

之所以称这些账户是五毛,大概是因为如果没有来自政府的金钱利益,很少人愿意干这种肮脏而且被人骂的活儿。

我特意把排在前10位的账户检查了一下,发现结果如下:

  1. @lidamink 发帖22.51%
  2. @eiuielk 发帖22.43%
  3. @ideletey 发帖6.20%
  4. @jchang_22079 发帖5.8%
  5. @xiazuhu 发帖3.38%
  6. @andingzirua 发帖3.27% 已被取消帐号(Suspended)
  7. @lalivea 发帖3.09%
  8. @liunianzhijian 发帖2.87% 已被取消帐号(Suspended)
  9. @nizhexin 发帖2.85% 已被取消帐号(Suspended)
  10. @bichunlong 发帖2.66% 已被取消帐号(Suspended)
让人惊讶的是,这10个都是垃圾发送者,总共加起来占据了信息的75.06%(也就是8000个推里面6005个是由这十位垃圾发的。它们其中 4个已经被取消帐号(占推数11.65%)。被取消帐号的原因估计是推特管理员接到很多人举报,把这些账户确定为垃圾信息发送者,按照推特的规则取消帐号 (因为推特显然也不希望有太多的垃圾账户来干扰正常使用者,并增加服务器的负担)。如果你试图访问这些被取消账户的时候就出现如下图片:

Screen shot 2011-05-03 at 12.14.28 AM

那如何举报呢?非常简单,只需要到该账户的页面,点击右侧的齿轮图标,然后选第三个选项Report xxx for spam。
Report xxx for spam

由上面的分析可以看出,推友们已经成功地把一些垃圾信息发布者赶出了推特,但是一些大的仍旧继续在作恶。对大多数人来说,这些垃圾发布者是不会影响 他们的,但是对于有些著名的网友就会被@回复的方式骚扰,下面就是一个使用这种策略的垃圾。你能看到它发一些毫不相干的推给@gaodongmei, @lihlii等人。

垃圾发送者 @型

有人可能会说,五毛也有发言的自由,这点我非常同意。但是当五毛们用恶意的手段来干扰你获取信息自由的时候,你就可以用手中的权利来Report Spam。

特此我制作了上面提到的前10个垃圾中还未被取消帐号的列表:
请使用你手中的权利消除这些垃圾。举手之劳,造福推友。
除此之外,大家也可以考虑用新的标签来聚集相关内容。比如,在使用#aiww的同时,也使用#aiwwnew,这样人们就可以使用这个新的标签#aiwwnew得到相对不受干扰的结果。

—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


如何突破GFW访问twwiter

来源:http://rocky-will-dream.blogspot.com/2011/04/gfwtwwiter.html

GFW越来越变态了。我在学校使用局域网上网,使用百度查直接封闭关键词,使用google直接封闭远程端口,我xx啊。最后急中生智,想到妙招。使用p2psearch搜啊。。我有不傻。你说有木有?

装上问题又来了。。
我装上之后,上网客户端就疯狂弹出说偶使用了共享卫士,我只得去把驱动删掉。总算穿了过来。要不然blogger也是wall的呀。

―――――――――――――――――――――――――――――――――――――――――

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


Hyk-proxy 最简单的使用方法

作者:Young

在《如何安装和使用 Hyk-proxy》一文发表后的第二天,翻墙软件 Hyk-proxy 的版本从 0.86 升级到了 0.90。

经过试用,我发现新版本在速度上并没有什么改进,并且对 Https 的支持仍然不是很好,但是有两个地方变化很大:

  • 一是客户端 startgui.bat 变漂亮了,但是也花俏得可以;
  • 二是可供下载的东西一共有 10 个,令人不知道下载哪个好。

尽管 hyk-proxy 不尽如人意,但是用它来看 YouTube 视频还是比较快的,比自由门要顺畅。

关于新版本的安装方法,Hyk-proxy 官方网页有提供详细的教程,并且是中文的,但是如果觉得教程有点难度,那么你也可以参考以下的简单使用方法:

hyk-proxy

首先,下载 hyk-proxy 压缩包

官方页面下载 hyk-proxy-0.9.0.zip 文件。

其次,解压缩下载文件

将下载到的 hyk-proxy-0.9.0.zip 文件解压缩到任意目录。

接着,打开客户端

在解压缩的目录里面找到一个叫做 “bin” 的文件夹,然后打开里面的 startgui.bat 文件。

然后,运行客户端

在打开的客户端上,点击 “Start” 按钮。

最后,设置浏览器代理

将浏览器的代理服务器地址设置为 “127.0.0.1”,端口设置为 “48100”。

这样就可以使用 hyk-proxy 翻墙了 —— 当然,事先要确保你的电脑安装了 Java 软件。

原创文章,转载请注明: 转载自精品博客

本文链接地址: Hyk-proxy 最简单的使用方法


—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


如何在 Mac 电脑上快速启动 Hyk-proxy

作者:Young  

在这 100 个免费的翻墙工具里面,Hyk-proxy 是我最最喜欢的一个了,速度飞快,不过在 Windows 和 Mac 系统下的使用方法稍有不同。

Hyk-proxy 最简单的使用方法》这篇文章里面提到,要启动 Hyk-proxy,只要双击 “bin” 文件夹里面的 “startgui.bat” 文件就可以了,但那只是针对 Windows 电脑的,如果是 Mac 电脑,则需要通过“终端”应用程序启动。下面是一个非常快速的启动方法:

首先,打开终端,并输入“sh” 这个命令;

其次,打开 Hyk-proxy 下载包里面一个叫做 “bin” 的文件夹;

接着,把 “bin” 文件夹里面的 “startgui.sh” 文件拖到终端的 “sh” 后面,如下图所示:

Start Hyk-proxy in Mac

最后,按回车键,然后你就可以看到漂亮的 Hyk-proxy 客户端了。

当然,除了这种拖放的方法,你也可以在终端上直接输入命令,具体可以参考 Free Nuts 博客介绍的方法——不过没有本文介绍的简单。

原创文章,转载请注明: 转载自精品博客

本文链接地址: 如何在 Mac 电脑上快速启动 Hyk-proxy


—————————————————————————————————————————

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。